Hatalar, hatalar, sorular - sayfa 2728

 
Askr :

Teşekkür ederim.

Mümkün olan başka bir şey buldum 1) bu bir komisyoncu engelleme.

https://www.mql5.com/ru/forum/38456/page127

https://www.mql5.com/ru/forum/304679

2) Her nasılsa, yüzdeler çok sıçradı ve %110 ve %70 sürekli ve güçlü bir şekilde sıçradı, henüz kendim saymadım. Belki indirme ile ilgili bir şey ama zor. O kadar küçük açtım ki marj spesifikasyonlarındaki kaldıraç aynı ve bakiyeler hemen hemen aynı.

Genellikle sinyallerle ilgili bir dal bu
https://www.mql5.com/ru/forum/10603/page394
Bilgi için.

FAQ по сервису Сигналы
FAQ по сервису Сигналы
  • 2020.04.18
  • www.mql5.com
Узнать за 15 минут: смотри обучающие видео по торговым сигналам в MetaTrader 4 и MetaTrader 5 Здесь будут собраны и обработаны наиболее частые вопр...
 
Sergey Dzyublik :

MT5 hatası (2390 derlemesi) sınıf yapısı açıklamasında kaşlı ayraçların yanlış sayılması.

Gönderdiğiniz için teşekkürler, düzeltildi

 

şöyle çalışır:

   ObjectSetDouble ( 0 ,name, OBJPROP_ANGLE ,direction== 0 ? 0 :direction> 0 ? 30 :- 30 );

yani hayır (her zaman 0)

   ObjectSetDouble ( 0 ,name, OBJPROP_ANGLE ,direction* 30 );

yön -1; +1; 0

 
Igor Zakharov :

şöyle çalışır:

yani hayır (her zaman 0)

yön -1; +1; 0

Ve bu yüzden

 ObjectSetDouble ( 0 ,name, OBJPROP_ANGLE , ( direction== 0 ? 0 :direction> 0 ? 30 :- 30 ) );
 
Alexey Viktorov :

Ve bu yüzden

ayrıca çalışır, çalışmayan ikinci seçenek

 
   ObjectSetDouble ( 0 ,name, OBJPROP_ANGLE ,direction* 30.0 );
yön int olarak bildirilir. Burada ne alırsan onu alırsın. Son zamanlarda, birçok fonksiyon değerler konusunda oldukça titiz hale geldi. Bir oyuncu kadrosuyla güvenli oynamak daha iyi.
Geçenlerde kendim bununla karşılaştım. Daha önce herhangi bir sorun görünmüyordu. Sonra kodu düzeltmeyi istediler ve iki katına çıkana kadar beklendiği gibi çalışmak istemediler.
 
Konstantin Nikitin :
yön int olarak bildirilir. Burada ne alırsan onu alırsın. Son zamanlarda, birçok fonksiyon değerler konusunda oldukça titiz hale geldi. Bir oyuncu kadrosuyla güvenli oynamak daha iyi.
Geçenlerde kendim bununla karşılaştım. Daha önce herhangi bir sorun görünmüyordu. Sonra kodu düzeltmeyi istediler ve şu ana kadar iki katına çıkmadı ve beklendiği gibi çalışmak istemedi.

evet, int. ama aynı çarpma - tamsayılarda da 30*1=30'dur. Birkaç derlemenin ikinci sürümde de iyi çalıştığından %100 eminim. bu 30 seçimle belirlendi ...

MT5'in başka bir "özelliği" gibi görünüyor... En azından blok dekoratif, ama autolot veya stop loss gibi bir yerde - hüzün olabilir - genellikle -1 ile çarparak ters çeviririm...

teşekkürler, hizmete başka bir koltuk değneği alacağım ...

 
Igor Zakharov :

ayrıca çalışır, çalışmayan ikinci seçenek

Ahh. Yanlış kodu yanlışlıkla kopyaladım.

Ve Konstantin haklı, neden int'yi double beklenen yere koyalım... Ve bu mql5'in bir özelliği değil, sadece onu siparişe alıştırmaya yönelik bazı girişimler.

 

Lütfen yardım et.

Gösterge, aralık dışında dizi yanlışlıkla çöküyor.

kodda tanımlanmış arabellekler

 #property indicator_buffers 2

#property indicator_color1 Red

#property indicator_width1 1

#property indicator_plots    1 // количество графических построений

#property indicator_type1    DRAW_ARROW


Bildirilen global değişkenler

 double Buf1[];

double Buf2[];

Init() set özellikleri

     PlotIndexSetInteger ( 0 , PLOT_ARROW ,code); 

//--- установим пустое значение 

   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0 );

   SetIndexBuffer ( 0 ,Buf1, INDICATOR_DATA );

   PlotIndexSetString ( 0 , PLOT_LABEL , "Break" );



//----

   PlotIndexSetInteger ( 1 , PLOT_ARROW ,code);  

//--- установим пустое значение 

   PlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , 0 );

   SetIndexBuffer ( 1 ,Buf2, INDICATOR_CALCULATIONS );

   PlotIndexSetString ( 1 , PLOT_LABEL , "Break" );


OnCalculate() içinde, kodda bir koşul tanımlanır - up değişkeni.

Doğruysa, aşağıdaki kod yürütülür

  i=nPoint1; BreakUp= false ; BreakDn= false ;
  
while (i>= 0 && BreakUp== false && BreakDn== false )
  {              Print ( "i  " ,i);                 tmp= iHigh ( NULL , 0 ,nPoint1)-Speed*(nPoint1-i);        tmp1= iHigh ( NULL , 0 ,nPoint1)-Speed*(nPoint1-i)-resultL;        if ( NormalizeDouble ( iLow ( NULL , 0 ,i), Digits ())< NormalizeDouble (tmp1, Digits ()) && NormalizeDouble ( iHigh ( NULL , 0 ,i), Digits ())> NormalizeDouble (tmp, Digits ()))         {          size= ArraySize (Buf1);          Print ( "size " ,size);                   BreakUp= true ;          if (channelbreak) Buf1[i]=tmp;          Comm= "\nПробой вверх на уровне " + DoubleToString (tmp, Digits ());         }        else        if ( NormalizeDouble ( iLow ( NULL , 0 ,i), Digits ())< NormalizeDouble (tmp1, Digits ()))         {          size= ArraySize (Buf1);          Print ( "size " ,size);                          BreakDn= true ;          if (channelbreak) Buf1[i]=tmp1;          Comm= "\nПробой вниз на уровне " + DoubleToString (tmp1, Digits ());         }        else        if ( NormalizeDouble ( iHigh ( NULL , 0 ,i), Digits ())> NormalizeDouble (tmp, Digits ()))         {          size= ArraySize (Buf1);          Print ( "size " ,size);                   BreakUp= true ;          if (channelbreak) Buf1[i]=tmp;          Comm= "\nПробой вверх на уровне " + DoubleToString (tmp, Digits ());         }        else Comm= "\nПробоя канала нет" ;        //i--;       }     } Ошибка происходит при входе в цикл while при присвоении значения переменной значению буфера. Проверка на размер массива буфера выдает ноль. Т.е. буфер не инициализируется. Всю голову сломал, не могу понять почему. В чем затык?
nPoint1 - это индекс бара (сдвиг от нулевого).
 
Ilyas :

Lütfen açıklığa kavuşturun, gösterge ayarlanırken bu göstergenin değerlerinin açılan grafikte görünmemesi normal mi? Örneğin, hata ayıklayıcıda MACD'yi açın. Tamponlara değer yazma döngüsüne bir kesme noktası koyduk. ChartRedraw() değerini yazdıktan sonra. Değeri kaydettikten sonra bu değeri hemen grafikte görmeyi bekliyorum, ancak yalnızca boş bir pencere görüyorum.

2380 x64 oluşturun.