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

 
Kira27 :

Yapabileceğim her şeyi denedim, önerdiğiniz gibi, şişi büktüm ama yine de MT5'teki çizgileri tek renkte boyadım. Ve MT4'te normları gecikmeden yeniden boyar.

Görünüşe göre her şey denenmemiş.

Alexey Viktorov:

Nesneyi yeniden adlandırdıktan sonra, ona erişmek için henüz uygun olmaması çok yüksek bir olasılıktır. Yeniden adlandırdıktan sonra ChartRedraw'ı koymayı deneyebilirsiniz. Yardımcı olmazsa, bir şekilde farklı bir dizi oluşturmanız gerekir.

not; Başka bir seçenek: önce sparam adıyla yeniden renklendirin ve ardından yeniden adlandırın.

Bazı nedenlerden dolayı, CHARTEVENT_OBJECT_CREATE olayı, fare grafiğe dokunduktan hemen sonra değerlendirilir ve nesne oluşturmanın bitiminden sonra değil. Ve lifin farklı uçlarının fiyatları aynıdır. Bu nedenle, nesne oluşturulduktan sonra yeniden boyamak gerekir.

Ve bir not daha: lifin seviyelerini mi yoksa ana çizgisini mi çiziyorsunuz?

İşte üç seçenek:

Birinci.

 bool endCreate;
string newName;
/*******************Expert initialization function*******************/
int OnInit ()
 {
   ChartSetInteger ( ChartID (), CHART_EVENT_OBJECT_CREATE , true );
   return ( INIT_SUCCEEDED );
 } /******************************************************************/

/************************Expert tick function************************/
void OnTick ()
 {
   if (endCreate)
   {
     double    Level_0= ObjectGetDouble ( 0 , newName, OBJPROP_PRICE , 0 );
     double    Level_1= ObjectGetDouble ( 0 , newName, OBJPROP_PRICE , 1 );
     if (Level_0 > Level_1)
       ObjectSetInteger ( 0 , newName, OBJPROP_LEVELCOLOR , 1 , clrDeepSkyBlue );
     else
       ObjectSetInteger ( 0 , newName, OBJPROP_LEVELCOLOR , 1 , clrYellow );
    endCreate = false ;
   }
 } /******************************************************************/

/***********************OnChartEvent function************************/
void OnChartEvent ( const int id,         // идентификатор события
                   const long & lparam,   // параметр события типа long
                   const double & dparam, // параметр события типа double
                   const string & sparam   // параметр события типа string
                 )
 {
   if (id == CHARTEVENT_OBJECT_CREATE )
   {
     ulong timeCreate = ObjectGetInteger ( 0 , sparam, OBJPROP_CREATETIME ); //  получим время создания объекта
    newName = "Fibo " + string (timeCreate); //  сформируем новое имя объекта
     ObjectSetString ( 0 , sparam, OBJPROP_NAME , newName);   //  переименуем объект
    endCreate = true ;
   }
 } /******************************************************************/

İkinci.

 /*******************Expert initialization function*******************/
int OnInit ()
 {
   ChartSetInteger ( ChartID (), CHART_EVENT_OBJECT_CREATE , true );
   return ( INIT_SUCCEEDED );
 } /******************************************************************/

/************************Expert tick function************************/
void OnTick ()
 {

 } /******************************************************************/

/***********************OnChartEvent function************************/
void OnChartEvent ( const int id,         // идентификатор события
                   const long & lparam,   // параметр события типа long
                   const double & dparam, // параметр события типа double
                   const string & sparam   // параметр события типа string
                 )
 {
   string newName;  
   if (id == CHARTEVENT_OBJECT_CREATE )
   {
     ulong timeCreate = ObjectGetInteger ( 0 , sparam, OBJPROP_CREATETIME ); //  получим время создания объекта
    newName = "Fibo " + string (timeCreate); //  сформируем новое имя объекта
     ObjectSetString ( 0 , sparam, OBJPROP_NAME , newName);   //  переименуем объект
   }
   if (id == CHARTEVENT_OBJECT_DRAG )
   {
     double    Level_0= ObjectGetDouble ( 0 , newName, OBJPROP_PRICE , 0 );
     double    Level_1= ObjectGetDouble ( 0 , newName, OBJPROP_PRICE , 1 );
     if (Level_0 > Level_1)
       ObjectSetInteger ( 0 , newName, OBJPROP_LEVELCOLOR , 1 , clrDeepSkyBlue );
     else
       ObjectSetInteger ( 0 , newName, OBJPROP_LEVELCOLOR , 1 , clrYellow );
   }
 } /******************************************************************/

Üçüncü.

 /*******************Expert initialization function*******************/
int OnInit ()
 {
   ChartSetInteger ( ChartID (), CHART_EVENT_OBJECT_CREATE , true );
   return ( INIT_SUCCEEDED );
 } /******************************************************************/

/************************Expert tick function************************/
void OnTick ()
 {
 } /******************************************************************/

/***********************OnChartEvent function************************/
void OnChartEvent ( const int id,         // идентификатор события
                   const long & lparam,   // параметр события типа long
                   const double & dparam, // параметр события типа double
                   const string & sparam   // параметр события типа string
                 )
 {
   if (id == CHARTEVENT_OBJECT_DRAG )
   {
     ulong timeCreate = ObjectGetInteger ( 0 , sparam, OBJPROP_CREATETIME ); //  получим время создания объекта
     string newName = "Fibo " + string (timeCreate); //  сформируем новое имя объекта
     ObjectSetString ( 0 , sparam, OBJPROP_NAME , newName);   //  переименуем объект
     double    Level_0= ObjectGetDouble ( 0 , newName, OBJPROP_PRICE , 0 );
     double    Level_1= ObjectGetDouble ( 0 , newName, OBJPROP_PRICE , 1 );
     if (Level_0 > Level_1)
       ObjectSetInteger ( 0 , newName, OBJPROP_LEVELCOLOR , 1 , clrDeepSkyBlue );
     else
       ObjectSetInteger ( 0 , newName, OBJPROP_LEVELCOLOR , 1 , clrYellow );
   ChartRedraw (); 
  }
 } /******************************************************************/


 
SanAlex :

puan almak ve bunları başka bir ara belleğe aktarmak için bir göstergede bir algoritma nasıl organize edilir.

- trend çizgileri çizmek için. (resimdeki gibi)

--------------------------------------------

Her şeyi yazarak denedim zaten, çiziliyorlar ama anlaşılmaz noktalarda bir yerde.

-------------------------------------------------- -------------------------------------------------- -

Göstergeyi ekliyorum - çalışıyor - sadece bu satırlar, uyarlayamıyorum.

Belki biri beni trend çizgisinin ankraj noktalarıyla ilgili makalelere yönlendirir.

-- şimdi yapabileceğim tek şey onları çizmek, hangi noktalarda belli değil.

EURUSDH4

-------------------------------------------------- -------

böyle bir şey yazılmalıdır - muhtemelen?

 //--- найдем максимальное и минимальное значение графика
   double max_price= ChartGetDouble ( 0 , CHART_PRICE_MAX );
   double min_price= ChartGetDouble ( 0 , CHART_PRICE_MIN );
//--- определим шаг изменения цены и заполним массив
   double step=(max_price-min_price)/accuracy;
   for ( int i= 0 ;i<accuracy;i++)
      price[i]=min_price+i*step;
//--- определим точки для рисования линии
   int d1=InpDate1*(bars- 1 )/ 100 ;
   int p1=InpPrice1*(accuracy- 1 )/ 100 ;
 //--- количество видимых баров в окне графика
   int bars=( int ) ChartGetInteger ( 0 , CHART_VISIBLE_BARS );
//--- размер массива price
   int accuracy= 1000 ;
//--- массивы для хранения значений дат и цен, которые будут использованы
//--- для установки и изменения координат точек привязки линии
   datetime date[];
   double    price[];
//--- выделение памяти
   ArrayResize (date,bars);
   ArrayResize (price,accuracy);
//--- заполним массив дат
   ResetLastError ();
   if ( CopyTime ( Symbol (), Period (), 0 ,bars,date)==- 1 )
     {
       Print ( "Не удалось скопировать значения времени! Код ошибки = " , GetLastError ());
       return ;
     }
//--- заполним массив цен
//--- найдем максимальное и минимальное значение графика
   double max_price= ChartGetDouble ( 0 , CHART_PRICE_MAX );
   double min_price= ChartGetDouble ( 0 , CHART_PRICE_MIN );
//--- определим шаг изменения цены и заполним массив
   double step=(max_price-min_price)/accuracy;
   for ( int i= 0 ;i<accuracy;i++)
      price[i]=min_price+i*step;
//--- определим точки для рисования линии
   int d1=InpDate1*(bars- 1 )/ 100 ;
   int d2=InpDate2*(bars- 1 )/ 100 ;
   int p1=InpPrice1*(accuracy- 1 )/ 100 ;
   int p2=InpPrice2*(accuracy- 1 )/ 100 ;
//--- создадим линию тренда
   if (!TrendCreate( 0 ,InpName, 0 ,date[d1],price[p1],date[d2],price[p2],InpColor,InpStyle,
      InpWidth,InpBack,InpSelection,InpRayLeft,InpRayRight,InpHidden,InpZOrder))
     {
       return ;
     }



--------------------

söyle bana doğru yoldayım???

Dosyalar:
2.mq5  82 kb
 
SanAlex :

Belki biri beni trend çizgisinin ankraj noktalarıyla ilgili makalelere yönlendirir.

-- şimdi yapabileceğim tek şey onları çizmek, hangi noktalarda belli değil.

-------------------------------------------------- -------

böyle bir şey yazılmalıdır - muhtemelen?

--------------------

söyle bana doğru yoldayım???

Trend çizgileri 2 nokta üzerine kuruludur, bu ya fiyat verisi ya da başka bir göstergeden gelen veridir, bu arada fraktallar üzerine bina örneği, bu arada zaten biliyorsunuz)

https://www.mql5.com/ru/code/29210

Line through two fractals
Line through two fractals
  • www.mql5.com
cm BASKET Советник управляющий счетом. Показывает какие пары инструментов сейчас торгуются на данном счете. Показывает прибыль полученную по каждой паре за определенное время. Помогает переключаться между множества открытых окон... Virtual Trailing Stop 2
 
VVT :

Trend çizgileri 2 nokta üzerine kuruludur, bu ya fiyat verisi ya da başka bir göstergeden gelen veridir, bu arada fraktallar üzerine bina örneği, bu arada zaten biliyorsunuz)

https://www.mql5.com/ru/code/29210

Bir Göstergede istedim - ama işe yaramadı. ama önerdiğiniz bu aracılığıyla, daha önce yaptım.

- ve bunu iki Gösterge aracılığıyla yapmak zorundaydım

İşte olanlar

GBPUSDM30 GOTOV

----------------------------

Teşekkür etmeyi unuttum! - Teşekkürler!!!

 
SanAlex :

Bir Göstergede istedim - ama işe yaramadı. ama önerdiğiniz bu aracılığıyla, daha önce yaptım.

- ve bunu iki Gösterge aracılığıyla yapmak zorundaydım

İşte olanlar

----------------------------

Teşekkür etmeyi unuttum! - Teşekkürler!!!

Peki, onları birleştirin, tek bir göstergede birçok farklı nesne oluşturabilirsiniz)

 
Alexey Viktorov :

Görünüşe göre her şey denenmemiş.

Bazı nedenlerden dolayı, CHARTEVENT_OBJECT_CREATE olayı, fare grafiğe dokunduktan hemen sonra değerlendirilir ve nesne oluşturmanın bitiminden sonra değil. Ve lifin farklı uçlarının fiyatları aynıdır. Bu nedenle, nesne oluşturulduktan sonra yeniden boyamak gerekir.


Nasıl tanımladınız? Mantıken?

Ve bir not daha: lifin seviyelerini mi yoksa ana çizgisini mi çiziyorsunuz?


Evet, bazı farklı varyantlarda trend çizgilerini yeniden boyamaya çalıştım)))

İşte üç seçenek:

Birinci.

İkinci.

Üçüncü.


Seçenekler için çok teşekkürler! Örneklerinize bakın ve mantıklı düşünmeyi öğrenin)))

Kodlamayla mı ilgileniyorsunuz yoksa ticaretle mi ilgileniyorsunuz? Demek istediğim, ne zamandır ticaret konusuyla ilgileniyorsun? ben zaten 12 yaşındayım

 
Kira27 :

Seçenekler için çok teşekkürler! Örneklerinize bakın ve mantıklı düşünmeyi öğrenin)))

Kodlamayla mı ilgileniyorsunuz yoksa ticaretle mi ilgileniyorsunuz? Demek istediğim, ne zamandır ticaret konusuyla ilgileniyorsun? ben zaten 12 yaşındayım

Her zaman bu kadar "nazik" değilim. Sadece nöbetler sırasında… Yani benim örneklerimden öğrenecek çok az şey var. Ticarette, neredeyse aynıyım.

 
Alexey Viktorov :

Her zaman bu kadar "nazik" değilim. Sadece nöbetler sırasında… Yani benim örneklerimden öğrenecek çok az şey var. Ticarette, neredeyse aynıyım.

Şey, bilmiyorum, programlamanın yollarını ve tekniklerini örneklerle daha iyi öğreniyorum. Ve örneklerinizden çok şey alıyorum. MQL5'in MQL4'teki gibi bir öğreticiye sahip olmaması üzücü , burada öğreticinin sonunda robot dahil edilen dosyalar üzerinde adım adım analiz ediliyor .

 
Alexey Viktorov :

Ticarette, neredeyse aynıyım.

Yani piyasa dalgalanmalarının özünü zaten biliyorsunuz? Ben, bana göründüğü gibi, zaten biliyordum)))) Sadece programlamam gerekiyor, çünkü üzerinde belirli bir süre çalışabilirim ve sonra gevşeyip oyun yaratırım))) Ve şimdi herhangi bir varlık için açık ben))) S&P özellikle benim için hoşuma gidiyor, teknik ve dinamik))

 
VVT :

Peki, onları birleştirin, tek bir göstergede birçok farklı nesne oluşturabilirsiniz)

Birleştirmek istediğim buydu. Bir haftadır dürtme yöntemiyle eziyet çekiyorum, işe yaramıyor.

- ikinci Gösterge ile daha iyi çalışıyor gibi görünüyor - geçmiş noktalar ve çizgilerin kendileri görünmez, yalnızca piyasa girişlerinin belirlendiği noktalar ve seviyeler kalır.

----------------

işte iki gösterge - bu bir bütün (bu benim taslağım - isimlerim var ve içindeki 4 göstergenin montajını değiştirmedim)