MQL uzmanları için soru - sayfa 8

 

Sayesinde.

 

Herkese iyi günler.

Lütfen. söylemek. Gösterge, enstrümanların fiyat satırlarını gösterir ve

sağda bir metin yorumu var - adları ve konum boyutları.

Her şey iyi çalışıyor. Enstrüman tablosuna 5 haneli tırnak işaretiyle bir hindi koyana kadar.

Fiyat çizgileri çizilir. Ancak sağdaki yorum tamamen kayboluyor. Veya konum boyutları yerine sıfırlar görüntülenir.

Ve dergi SIFIR BÖLÜM (Alpari ile çizelgeye bakın)

- EURUSD ve GBPUSD için - boyut yerine sıfırlar görüntüleniyor...

Konum boyutlarının hesaplanmasıyla ilgili olduğunu düşünüyorum:

 double vol1= 1 , vol2, vol3, k1;

  k1=MarketInfo(Symbol_1, MODE_TICKVALUE)*iOpen(Symbol_1, 0 , 0 )/
     MarketInfo(Symbol_1, MODE_TICKSIZE);

  vol2=k1/(MarketInfo(Symbol_2, MODE_TICKVALUE)*iOpen(Symbol_2, 0 , 0 )/
           MarketInfo(Symbol_2, MODE_TICKSIZE))*vol1;

  vol3=k1/(MarketInfo(Symbol_3, MODE_TICKVALUE)*iOpen(Symbol_3, 0 , 0 )/
           MarketInfo(Symbol_3, MODE_TICKSIZE))*vol1;

    // пишем комментарий в окне индикатора с правой стороны: 
 object ( "Symbol1" , DoubleToStr(N1, 0 )+ "*" +Symbol_1+ " -" +DoubleToStr(vol1, 2 ), 10 , indicator_color1, 5 );
 object ( "Symbol2" , DoubleToStr(N2, 0 )+ "*" +Symbol_2+ " -" +DoubleToStr(vol2, 2 ), 10 , indicator_color2, 18 );
 object ( "Symbol3" , DoubleToStr(N3, 0 )+ "*" +Symbol_3+ " -" +DoubleToStr(vol3, 2 ), 10 , indicator_color3, 31 );
 object ( "SymbolS" , "AVERAGE" , 10 , indicator_color4, 44 );   
           

İlişki k1= MarketInfo(Symbol_1, MODE_TICKVALUE) .... / MarketInfo(Symbol_1, MODE_TICKSIZE)

5 basamakta "sıfıra böl" verir.

Lütfen. bunu nasıl düzelteceğimi söyle?

 

Lütfen bana tarihte daha önce yapılan işlemleri gösteren bir komut dosyası veya gösterge olup olmadığını söyleyin, örneğin şöyle ve böyle bir sayıya. Puan. faydalı bir şey bence

Teşekkürler,

Yuri

 
leonid553 :

Herkese iyi günler.

Lütfen. bunu nasıl düzelteceğimi söyle?


Basitse, MODE_TICKSIZE yerine MODE_POINT koymayı deneyin. Ancak genel olarak, MarketInfo() sıfırını hesaba katmak için kodu yeniden yazmanız gerekir.
 
tyn :

Lütfen bana tarihte daha önce yapılan işlemleri gösteren bir komut dosyası veya gösterge olup olmadığını söyleyin, örneğin şöyle ve böyle bir sayıya. Puan. faydalı bir şey bence

Teşekkürler,

Yuri

https://www.mql5.com/en/code - komut dosyası. Terminalin hesap geçmişinde zaman aralığını belirtin.

VisualOrders.mq4 - gösterge

Dosyalar:
 

Tünaydın.

mt4 DC EXNESS'te "çoklu para birimi" göstergelerim, nedense yalnızca İnternet bağlıyken çalışır (mt4 diğer DC'nin aksine).

İnternet olmadan - hindi satırları yansıtılmaz, ancak yalnızca yorum içeren boş pencereler. Dergi bir "sıfır temettü" verir.

İnternete bağlanırken, genellikle hindi çizgilerinin görünmesi için önce tf'ye tıklamanız gerekir.

Lütfen bana neyin yanlış olduğunu ve nasıl düzeltileceğini söyle?

ne zaman kapalı internet:

Bağlandığında:

 
leonid553 :

Tünaydın.

mt4 DC EXNESS'te "çoklu para birimi" göstergelerim, nedense yalnızca İnternet bağlıyken çalışır (mt4 diğer DC'nin aksine).

İnternet olmadan - hindi satırları yansıtılmaz, ancak yalnızca yorum içeren boş pencereler. Dergi bir "sıfır temettü" verir.

İnternete bağlanırken, genellikle hindi çizgilerinin görünmesi için önce tf'ye tıklamanız gerekir.

Lütfen bana neyin yanlış olduğunu ve nasıl düzeltileceğini söyle?

ne zaman kapalı internet:

Bağlandığında:


Normal bir şey. Genellikle olur ve bununla başa çıkmak her zaman mümkün değildir. Her ne kadar sıfıra bölme düzeltilebilir. Sorun, çoğu zaman bir pazar ortamının olmamasıdır.
 

Tam olarak anlamıyorum, Victor.

Bu normal bir şey mi"? Bu bariz bir aksaklık!

"Piyasa ortamının olmaması" terimini anlamıyorum.

Bölmeyi sıfırla düzeltirsek fiyat çizgileri görünür mü? düşünmüyorum.

Gösterge penceresinin sağ köşesindeki yorum normal şekilde görüntülenir. Onlar. f-ve ObjectCreate vb. iyi çalışıyorlar.

Sayıları yorumlarda belirtilen matematiksel hesaplamalar da normal şekilde çalışır.

Yalnızca göstergenin fiyat satırları kalır. Çünkü orada daha fazla bir şey yok.

Fiyat satırları arabelleklerde ayarlanır. Her fiyat satırı, yalnızca iki MA arasındaki farktır:

 int start() {
     int limit;  int counted_bars=IndicatorCounted();
  //---- проверка на возможные ошибки
     if (counted_bars< 0 ) return (- 1 );
  //---- последний посчитанный бар будет пересчитан
     if (counted_bars> 0 ) counted_bars-= 10 ;      limit= Bars -counted_bars;
  //---- основной цикл
 for ( int i= 0 ; i<limit; i++)       {
 
   Symbol1[i]= N1*
     ( iMA (Symbol_1, Period (),MA_fast, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_1, 0 ,Time[i],false))-
     iMA (Symbol_1, Period (),MA_per, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_1, 0 ,Time[i],false)))  ;
  .... ....

Yani, "sıfır temettü" veren bu kısımdır! Ancak burada hiç bölme yok ve dahası sıfıra bölme yok!

Bu nedenle, bu durumda hata sunucu (veya platform) tarafından fenerden mi döndürülüyor? Veya MT4 geliştiricileri böyle bir hatayı öngörmediler ve böyle bir hatanın özüne tam olarak karşılık gelmeyen "sıfır temettü" getirisini ayarladılar.

Ve neden MT4 diğer DC göstergesi normal çalışıyor?

Özdeş platformlar, bu kadar basit bir kodun kendilerinde farklı şekilde çalışması için nasıl farklı olabilir?

 

Sıfıra bölme ile ilgilenebilirsiniz, ancak göstergenin doğru çalışmasına da ihtiyacınız var. Bu daha zor.

 

Ve teorik olarak böyle basit bir kodun yanlışlığı ne olabilir (4 satır için):

 int start() {
     int limit;  int counted_bars=IndicatorCounted();
  //---- проверка на возможные ошибки
     if (counted_bars< 0 ) return (- 1 );
  //---- последний посчитанный бар будет пересчитан
     if (counted_bars> 0 ) counted_bars-= 10 ;
     limit= Bars -counted_bars;

  //---- основной цикл
 for ( int i= 0 ; i<limit; i++)       {
   //РИСУЕМ ЛИНИИ СИМВОЛОВ, ЕСЛИ ИМЕЮТСЯ БАРЫ

   Symbol1[i]= N1*
     ( iMA (Symbol_1, Period (),MA_fast, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_1, 0 ,Time[i],false))-
     iMA (Symbol_1, Period (),MA_per, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_1, 0 ,Time[i],false)))  ;
   Symbol2[i]= N2*
     ( iMA (Symbol_2, Period (),MA_fast, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_2, 0 ,Time[i],false))-
     iMA (Symbol_2, Period (),MA_per, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_2, 0 ,Time[i],false)))  ;
   Symbol3[i]= N3*
     ( iMA (Symbol_3, Period (),MA_fast, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_3, 0 ,Time[i],false))-
     iMA (Symbol_3, Period (),MA_per, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_3, 0 ,Time[i],false)))  ; 
   Symbol4[i]= N4*
     ( iMA (Symbol_4, Period (),MA_fast, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_4, 0 ,Time[i],false))-
     iMA (Symbol_4, Period (),MA_per, 0 ,MA_Mode,MA_Price,iBarShift(Symbol_4, 0 ,Time[i],false)))  ;
    
      
      
   }
   return ( 0 );
} // конец функции СТАРТ