MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 51

 

Belki açıkça sormadım.

M1 dönemi grafiğinde olmak, M5 döneminde “Stokastik” gösterge çizgisi şimdi 55 seviyesinin üzerindeyse tamponu doldurmak istiyorum.

input ENUM_TIMEFRAMES    TimeFrame2  =   PERIOD_M5 ; //ЭТО ВО ВНЕШНИХ Н
////////////////////////////////////////////////
       for ( int i=limit; i>= 0 ; i--) {
       int bar_sto2_0= iBarShift ( Symbol (),TimeFrame2, iTime ( Symbol (),TimeFrame2,i));
       int bar_sto2_1= iBarShift ( Symbol (),TimeFrame2, iTime ( Symbol (),TimeFrame2,i+ 1 ));
    
       double sto2_0= iStochastic ( Symbol (),TimeFrame2,kperiod2,dperiod2,slowing2, MODE_LWMA , STO_CLOSECLOSE , MODE_MAIN ,bar_sto2_0);
       double sto2_1= iStochastic ( Symbol (),TimeFrame2,kperiod2,dperiod2,slowing2, MODE_LWMA , STO_CLOSECLOSE , MODE_MAIN ,bar_sto2_1);
    
       if (sto2_0> 55.0 )
       {
      BufferUP[i]=low[i]-distance*MyPoint;
       }
      
       if (sto2_0< 44.0 )
       {
      BufferDN[i]=high[i]+distance*MyPoint;
       }

       Comment (sto2_0);
       }

Yorumda, mevcut değer M5'ten doğrudur, ancak ok tarihine göre duruma göre değil, kaos koyar.

Ne yanlış olabilir?

M5 ile " bodrum " stokastiğinde

Yuvarlak oklar sinyalde değil



xaoc
 

Biri satılık, diğeri satın almak için aynı anda 2 Durdurma Emri veren bir Uzman Danışman yazıyorum.

Bir Durdurma Emri tetiklendiğinde, ikincisinin (tersi) silineceği bir koşul nasıl reçete edilir?

Teşekkür ederim.

 
RichLux :

Biri satılık, diğeri satın almak için aynı anda 2 Durdurma Emri veren bir Uzman Danışman yazıyorum.

Bir Durdurma Emri tetiklendiğinde, ikincisinin (tersi) silineceği bir koşul nasıl reçete edilir?

Teşekkür ederim.

Durum basit. Bir emir tetiklendiğinde, piyasada bir pozisyon belirir, takip edilmesi gereken pozisyonun görünümüdür ve eğer varsa, karşı emri sileriz.

Bu, üzerinde düşünülmesi gereken bir kod parçasıdır)

void DeleteOppositeOrders( string sy= "" , int op=- 1 , int mn=- 1 , color cl= clrOliveDrab ) {
   bool b, s;
   switch (op) {
     case OP_BUY : b=ExistPositions(sy, OP_BUY , mn); break ;
     case OP_SELL : s=ExistPositions(sy, OP_SELL , mn); break ;
  }

   if (b) {
    DeleteOrders(sy, OP_SELLLIMIT , mn, cl);
    DeleteOrders(sy, OP_SELLSTOP , mn, cl);
  }
   if (s) {
    DeleteOrders(sy, OP_BUYLIMIT , mn, cl);
    DeleteOrders(sy, OP_BUYSTOP , mn, cl);
}}
 
Vitaly Muzichenko, Anladığım kadarıyla şimdi bile ExistPositions ve DeleteOrders fonksiyonlarını kaydetmeniz gerekiyor.
 
RichLux :
Vitaly Muzichenko, Anladığım kadarıyla şimdi bile ExistPositions ve DeleteOrders fonksiyonlarını kaydetmeniz gerekiyor.
evet ihtiyaç.
 
RichLux :
Vitaly Muzichenko, Anladığım kadarıyla şimdi bile ExistPositions ve DeleteOrders fonksiyonlarını kaydetmeniz gerekiyor.
yazamazsın ikiside hazır
 
Vitaly Muzichenko :
yazamazsın ikiside hazır

Eh ..., eğitim amaçlı, çok faydalı ...

Pratikte, her bir fonksiyonda çevrimleri sürmek çok pahalıdır.

 
Artyom Trishkin :

Eh ..., eğitim amaçlı, çok faydalı ...

Pratikte, her bir fonksiyonda çevrimleri sürmek çok pahalıdır.

Bu nedenle, hemen eklemedim, ancak yalnızca "tersini kapatma" çalışmasının mantığını tanımladım ve uyguladım )
 

Dur / 200 alırsa ne yapmalı

ancak

tp=NormalizeÇift((fiyat+(Kar Al*_Puan)), Rakamlar );

dolar-yen üzerinde 117.000 oranında 317.000 verecek

beklenen sonuç 117.200

 
trader781 :

Dur / 200 alırsa ne yapmalı

ancak

tp=NormalizeÇift((fiyat+(Kar Al*_Puan)),Rakamlar);

dolar-yen üzerinde 117.000 oranında 317.000 verecek

beklenen sonuç 117.200

Neden bu kadar çok parantez? Tabii ki bu bir zevk meselesi, ama aşırıya kaçıyor.

tp=NormalizeÇift(fiyat+Kar Al*_Puan,_Rakamlar);

Çıktıda sonuç yanlışsa değerler yanlış değiştirilir, çünkü bu kod satırı ekstra parantezlerle bile her şeyi doğru değerlendirecektir.