Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 1284

 
Youri Lazurenko :

Tekrar teşekkürler, şimdi çizgi bir çizgi gibi, görmek güzel. Bu sadece ObjectDelete (0, isim); gereklidir, aksi takdirde çizilen çizgi yeniden çizilmez. Ayrıca mql4'te unuttum.

yapardım

 bool CreateLine( string name, datetime time1, double price1, datetime time2, double price2, color clr)
 {
   if ( ObjectFind ( ChartID (), name) < 0 )
     if (! ObjectCreate ( ChartID (), name, OBJ_TREND , 0 , 0 , 0 , 0 , 0 ))
     {
       Print ( "Ошибка в создании линии" );
       return ( false );
     }
   ObjectSetInteger ( ChartID (), name, OBJPROP_COLOR , clr);
   ObjectSetInteger ( ChartID (), name, OBJPROP_STYLE , TrendStyle);
   ObjectSetInteger ( ChartID (), name, OBJPROP_WIDTH , TrendWidth);
   ObjectSetInteger ( ChartID (), name, OBJPROP_TIME , 0 , time1);
   ObjectSetInteger ( ChartID (), name, OBJPROP_TIME , 1 , time2);
   ObjectSetDouble ( ChartID (), name, OBJPROP_TIME , 0 , price1);
   ObjectSetDouble ( ChartID (), name, OBJPROP_TIME , 1 , price2);

   ChartRedraw ();
   return ( true );
 }
 
Vladimir Karputov :

Ne saçmalık. Çizilen grafik nesnesi sessizce hareket eder. Her nesne için yardımda bir örnek verilmiştir (yatay çizgi OBJ_HLINE için).

Ayrıca önceden çizilmiş bir nesnenin herhangi bir özelliğini de değiştirebilirsiniz: renk, stil, koku ...

Elden, şüphesiz. EA, DeMark noktalarına dayalı olarak trend çizgileri çizer. ObjectDelete (0, isim); fonksiyonu ile noktalar değiştirilirken eski trend çizgisi kaldırılır ve yenisi çizilir. Bu özellik olmadan, ilk çizilen çizgiler artık yeniden çizilmez. Bu saçmalık değil, bir gerçek.

Документация по MQL5: Графические объекты / ObjectDelete
Документация по MQL5: Графические объекты / ObjectDelete
  • www.mql5.com
ObjectDelete - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Youri Lazurenko :

Elden, şüphesiz. EA, DeMark noktalarına dayalı trend çizgileri çizer. ObjectDelete (0, isim); fonksiyonu ile noktalar değiştirilirken eski trend çizgisi kaldırılır ve yenisi çizilir. Bu özellik olmadan, ilk çizilen çizgiler artık yeniden çizilmez. Bu saçmalık değil, bir gerçek.

Evet, sonunda yardımı okuyun! Ve örneği çalıştırın.

 
Alexey Viktorov :

öyle yapardım

Teşekkürler, ama versiyonumu bırakacağım, işe yarıyor. ObjectDelete (0, isim) yerine deneyeceğim ama; uygulamak

  ChartRedraw ();
Документация по MQL5: Графические объекты / ObjectDelete
Документация по MQL5: Графические объекты / ObjectDelete
  • www.mql5.com
ObjectDelete - Графические объекты - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov :

Evet, sonunda yardımı okuyun! Ve örneği çalıştırın.

Yardımı okudum. Sadece asılsız öfkelisin ve pratiğe dayalı yazıyorum. Başka bir şey de, ObjectDelet() yerine ChartRedraw() kullanmam , tartışmıyorum ve kontrol etmiyorum. Örneğe atıfta bulunarak işaret edilmesi gereken tek şey budur.

 
Youri Lazurenko :

Yardımı okudum. Sadece asılsız öfkelisin ve pratik temelinde yazıyorum. Başka bir şey de, ObjectDelet() yerine ChartRedraw() kullanmam , tartışmıyorum ve kontrol etmiyorum. Bir örneğe atıfta bulunarak işaret edilmesi gereken tek şey budur.

Bu başlıkta genellikle tavsiye isterler ve tavsiye verdiklerinde dinlerler. En azından yardımı okuyun ve örnekleri uygulayın. Lütfen, başkalarını dinlemek istemiyorsanız, hiçbir şey sormamak daha iyidir.

 
Youri Lazurenko :


" Yatay çizgi " grafik nesnesinin herhangi bir özelliğini anında nasıl değiştirebileceğinize bir örnek - bunun için nesneyi silmeniz gerekmez, bunun için yalnızca özelliği değiştirmeniz gerekir.

C:\Kullanıcılar\barab\OneDrive\Images\Screenpresso\2021-02-01_16h09_06.gif

kod:

 //+------------------------------------------------------------------+
//|                       OBJ_HLINE change properties on the fly.mq5 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
//--- input parameters
input string           InpName= "HLine" ;     // Line name
//--- an array for storing colors contains 14 elements
color colors[]=
  {
   clrRed , clrBlue , clrGreen , clrChocolate , clrMagenta , clrDodgerBlue , clrGoldenrod ,
   clrIndigo , clrLightBlue , clrAliceBlue , clrMoccasin , clrWhiteSmoke , clrCyan , clrMediumPurple
  };
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- create timer
   EventSetTimer ( 1 );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- destroy timer
   EventKillTimer ();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
//--- the number of colors
   int size= ArraySize (colors);
//--- get a random value
   int number= MathRand ();
//--- get an index in the col[] array as a remainder of the integer devision
   int i=number%size;
//--- set line color
   ObjectSetInteger ( ChartID (),InpName, OBJPROP_COLOR ,colors[i]);
   ChartRedraw ();
  }
//+------------------------------------------------------------------+
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Типы объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Youri Lazurenko :

Teşekkürler, ama versiyonumu bırakacağım, işe yarıyor. ObjectDelete (0, isim) yerine deneyeceğim ama; uygulamak

Tamamen yanlış karar. Bir grafik nesnesinin silinmesi ve bir grafiğin güncellenmesi hiçbir şekilde birbirinin yerine geçmez.

Örneğimde, önce bir nesne olup olmadığını, özellikle de ugh adında trend olan bir nesne olup olmadığını kontrol eder, bu Rusça klavye düzenindeki addır))). Ardından, orada değilse, bir trend çizgisi çizilir. Çizim başarısız olursa, bir mesaj görüntülenir ve işlev false döndürerek çıkar.

Bundan sonraki her şey, halihazırda mevcut bir trend çizgisinin varlığından veya yeni çizilmiş bir çizginin varlığından bağımsız olarak, belirtilen parametrelere, koordinatların zaman ve fiyatlarına, türüne, kalınlığına ve eklediğiniz diğer her şeye atanır. Ardından grafik güncellenir ve fonksiyon true değerini döndürür.

Yürütme hızı açısından, bir trend çizgisinin varlığını kontrol etmek, onu kaldırmak ve yeni bir tane çizmekten daha ucuz olacaktır.

Ama… son karar senin ve sağ ayağının küçük parmağıyla sol kulağını kaşımaktan hoşlanıyorsan sana karışmaya hakkım yok.

 
Youri Lazurenko :

Ve bir trend çizgisi çizmeye geri dönelim. Eğer koda ihtiyacınız varsa.

Çok kötü kod.

 
Alexey Viktorov :

yapardım

Ve ben böyleyim:

 void CreateLine( string name, datetime time1, double price1, datetime time2, double price2, color clr)
 {
  if ( ObjectFind ( ChartID (), name) < 0 )
   {
     ObjectCreate ( ChartID (), name, OBJ_TREND , 0 , 0 , 0 , 0 , 0 );
     ObjectSetInteger ( ChartID (), name, OBJPROP_COLOR , clr);
    ObjectSetInteger ( ChartID (), name, OBJPROP_STYLE , TrendStyle);
    ObjectSetInteger ( ChartID (), name, OBJPROP_WIDTH , TrendWidth);
   }
   ObjectSetInteger ( ChartID (), name, OBJPROP_TIME , 0 , time1);
   ObjectSetInteger ( ChartID (), name, OBJPROP_TIME , 1 , time2);
   ObjectSetDouble ( ChartID (), name, OBJPROP_PRICE , 0 , price1);
   ObjectSetDouble ( ChartID (), name, OBJPROP_PRICE , 1 , price2);

   ChartRedraw ();
 }