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

 
Boss11 :

İyi günler sevgili forum kullanıcıları.

Lütfen aşağıdaki sorunu çözmeme yardım edin:

Bu göstergelerin verilerini MT4'te mql kullanarak, örneğin MA5'i 1 d'lik bir zaman diliminde, dünden önceki gün 14.30'da almanız gerekir.

onlar. Eğer senaryoyu önceki gün 14.30'da iMA ile çalıştırmış olsaydım, o zaman bugün nasıl elde edileceğinden başka soru kalmayacaktı.

en azından bana nerede kazacağımı söyle

Çok basit. iMA'yı hesaplamak için 7 parametre ayarlamanız gerekir. İlk parametre olan sembol adı açıktır. İkinci zaman dilimi olarak M1'i ayarlayın. Üçüncü parametre - dönem - günün hangi saatinde bir dakikadan fazla olduğunu, ihtiyacınız olduğu kadar ayarlayın. Dördüncü parametre - shift = 0. Sonraki iki parametre - ortalama alma yöntemi ve fiyat türü - bilirsiniz. Son parametre - çubuğun sayısı - ihtiyacınız olan zamanı bilerek hesaplayın. Bu kadar! M5 ve M15 zaman dilimleri için hesaplamalar yaparak bunu iki kez kontrol edin. Belki M30 için bile.

 
STARIJ :

Çok basit. iMA'yı hesaplamak için 7 parametre ayarlamanız gerekir. İlk parametre olan sembol adı açıktır. İkinci zaman dilimi olarak M1'i ayarlayın. Üçüncü parametre - dönem - günün hangi saatinde bir dakikadan fazla olduğunu, ihtiyacınız olduğu kadar ayarlayın. Dördüncü parametre - shift = 0. Sonraki iki parametre - ortalama alma yöntemi ve fiyat türü - bilirsiniz. Son parametre - çubuğun sayısı - ihtiyacınız olan zamanı bilerek hesaplayın. Bu kadar! M5 ve M15 zaman dilimleri için hesaplamalar yaparak bunu iki kez kontrol edin. Belki M30 için bile.

Ne yazık ki, bu o kadar basit değil. Her durumda, benim için açık değil. MA5, 1440 (1 gün) zaman dilimini alırsak, 2 numaralı çubuğu seçersek (dünden önceki gün), o zaman son mumu açmak veya kapatmak için MA5 göstergesini alacağız, ancak 14.30'da değil. Ve belirtmeniz gerekiyor. Tekrar. Bu göstergeler birkaç mumdan hesaplanır, 00.00'da açılır (bir günden bahsediyorsak), 23.59'da kapanır, ancak son mum (0 bar ise) kapanmaz, ancak 0 bar'ın son fiyatıdır. hesaplamak için alınır. MA'yı sıfır bardayken hesaplarsanız, o zaman zorluk olmaz ve sıfır bar değil de bir önceki günün ortası ise, o zaman ne yapmalısınız? TF 1440 ile bir önceki günün ortası MA nasıl hesaplanır?

 
Artyom Trishkin :

Çok teşekkürler! Kodu yazmaya başlayacağım :) Sonuçlar hakkında abonelikten çıkacağım.

 
Boss11 :

Ne yazık ki, bu o kadar basit değil. Her durumda, benim için açık değil. MA5, 1440 (1 gün) zaman dilimini alırsak, 2 numaralı çubuğu seçersek (dünden önceki gün), o zaman son mumu açmak veya kapatmak için MA5 göstergesini alacağız, ancak 14.30'da değil. Ve belirtmeniz gerekiyor. Tekrar. Bu göstergeler birkaç mumdan hesaplanır, 00.00'da açılır (bir günden bahsediyorsak), 23.59'da kapanır, ancak son mum (0 bar ise) kapanmaz, ancak 0 bar'ın son fiyatıdır. hesaplamak için alınır. MA'yı sıfır bardayken hesaplarsanız, o zaman zorluk olmaz ve sıfır bar değil de bir önceki günün ortası ise, o zaman ne yapmalısınız? TF 1440 ile bir önceki günün ortası MA nasıl hesaplanır?


her şey basit

 void OnStart ()
  {
// Формируем время  
   Alert ( "14.30  позавчерашнего дня = " , StrToTime ( TimeToStr ( iTime ( NULL , 1440 , 2 ), TIME_DATE )+ " " + "14:30" ));

//14.30  позавчерашнего дня
   datetime time= StrToTime ( TimeToStr ( iTime ( NULL , 1440 , 2 ), TIME_DATE )+ " " + "14:30" );

//Бар 14.30  позавчерашнего дня
   int      shift= iBarShift ( NULL , 0 ,time);

//Машка 14.30  позавчерашнего дня  
   double ma= iMA ( NULL , 0 , 13 , 0 , MODE_SMMA , PRICE_MEDIAN ,shift);

   Alert ( "Машка 14.30  позавчерашнего дня = " , DoubleToString (ma, Digits ));
}

Bunun gibi bir şey

 

Komut dosyası ile sinyallerin gönderilmesinin nasıl organize edileceğine dair bir fikriniz var mı?

 

bilenlerin yardımına ihtiyacım var

Kısacası sorun şu ki, danışmanın kaynak kodu daha önce 2014'te derlenmiş ve her şey yolundaymış.

Geçen gün yeni bir hesap açmaya ve üzerinde bir danışman derlemeye karar verdim, ancak derlemek istemiyor.

23 tür hata veriyor ( } )

nerede kazılacak ve 2014'ten bu yana neler değişti?

 
Boss11 :

Ne yazık ki, bu o kadar basit değil. Her durumda, benim için açık değil. MA5, 1440 (1 gün) zaman dilimini alırsak, 2 numaralı çubuğu seçersek (dünden önceki gün), o zaman son mumu açmak veya kapatmak için MA5 göstergesini alacağız, ancak 14.30'da değil. Ve belirtmeniz gerekiyor. Tekrar. Bu göstergeler birkaç mumdan hesaplanır, 00.00'da açılır (bir günden bahsediyorsak), 23.59'da kapanır, ancak son mum (0 bar ise) kapanmaz, ancak 0 bar'ın son fiyatıdır. hesaplamak için alınır. MA'yı sıfır bardayken hesaplarsanız, o zaman zorluk olmaz, ancak sıfır bar değil de bir önceki günün ortası ise ne yapmalısınız? TF 1440 ile bir önceki günün ortası MA nasıl hesaplanır?

Çok basit. iMA'yı hesaplamak için 7 parametre ayarlamanız gerekir. İlk parametre olan sembol adı açıktır. İkinci zaman çerçevesi olarak M1'i ayarlayın . Üçüncü parametre - dönem - günün hangi saatinde bir dakikadan fazla olduğunu, ihtiyacınız olduğu kadar ayarlayın. Dördüncü parametre - shift = 0. Sonraki iki parametre - ortalama alma yöntemi ve fiyat türü - bilirsiniz. Son parametre - çubuğun sayısı - ihtiyacınız olan zamanı bilerek hesaplayın. Bu kadar! M5 ve M15 zaman dilimleri için hesaplamalar yaparak bunu iki kez kontrol edin. Belki M30 için bile.
 

Merhaba. Son danışma için STARIJ ve Artyom Trishkin'e teşekkürler. Ama hala acemi olduğum için başka sorular ortaya çıkıyor. Örneğin, sonraki. Bir çubukta yalnızca bir pozisyon açmak için aşağıdaki işlevi kullanıyorum:

 void Fun_New_Bar()                               // Ф-ия обнаружения нового бара   
  {                                             
   static datetime New_Time= 0 ;                   // Время текущего бара  
   New_Bar= false ;                               // Нового бара нет  
   if (New_Time!= Time [ 0 ])                         // Сравниваем время  
     {  
      New_Time= Time [ 0 ];                         // Теперь время такое  
      New_Bar= true ;                             // Поймался новый бар  
     }  
  }

Ve hemen şu soru ortaya çıkıyor: neden bir işleve yapılan her çağrıda "zamanın başlangıcına" statik bir değişken gönderelim? Sonuçta, ilk aramada, bağımsız olarak bir sıfır değeri alır ve ardından önceki sıfır çubuğunun değerini bir sonraki aramaya kadar saklamasına ve sıfıra sıfırlamamasına izin verir. Belki de zaten basit olan bu işlevi daha da basitleştirmek mümkün olabilir. Dürüst olmak gerekirse, onu mahvetmekten korkuyorum. Ve aynı fonksiyonla ilgili başka bir soru: ama New_Time= Time [ 0 ]; yeni bar açıldığında o milisaniyeyi yakalayamayacak mı? sonra ne olacak? Teşekkür ederim.

 
novichok2018 :

Merhaba. STARIJ'e ve son istişare için teşekkürler. Ama hala acemi olduğum için başka sorular ortaya çıkıyor. Örneğin, sonraki. Bir çubukta yalnızca bir pozisyon açmak için aşağıdaki işlevi kullanıyorum:

Ve hemen şu soru ortaya çıkıyor: neden bir işleve yapılan her çağrıda "zamanın başlangıcına" statik bir değişken gönderelim? Sonuçta, ilk aramada, bağımsız olarak bir sıfır değeri alır ve ardından önceki sıfır çubuğunun değerini bir sonraki aramaya kadar saklamasına ve sıfıra sıfırlamamasına izin verir. Belki de zaten basit olan bu işlevi daha da basitleştirmek mümkün olabilir. Dürüst olmak gerekirse, onu mahvetmekten korkuyorum. Ve aynı fonksiyonla ilgili başka bir soru: ama New_Time= Time [ 0 ]; yeni çubuk açıldığında o milisaniyeyi yakalayamayacak mı? sonra ne olacak? Teşekkür ederim.

Ve statik bir değişkenin kaç kez başlatıldığını okursunuz. Ve saçmalığı nedeniyle sorunun kendisi ortadan kalkacak;)
 
novichok2018 :

Merhaba. Son danışma için STARIJ ve Artyom Trishkin'e teşekkürler. Ama hala acemi olduğum için başka sorular ortaya çıkıyor. Örneğin, sonraki. Bir çubukta yalnızca bir pozisyon açmak için aşağıdaki işlevi kullanıyorum:

Ve hemen şu soru ortaya çıkıyor: neden bir işleve yapılan her çağrıda "zamanın başlangıcına" statik bir değişken gönderelim? Sonuçta, ilk aramada, bağımsız olarak bir sıfır değeri alır ve ardından önceki sıfır çubuğunun değerini bir sonraki aramaya kadar saklamasına ve sıfıra sıfırlamamasına izin verir. Belki de zaten basit olan bu işlevi daha da basitleştirmek mümkün olabilir. Dürüst olmak gerekirse, onu mahvetmekten korkuyorum. Ve aynı fonksiyonla ilgili başka bir soru: ama New_Time= Time [ 0 ]; yeni bar açıldığında o milisaniyeyi yakalayamayacak mı? sonra ne olacak? Teşekkür ederim.


İkinci soru için,

ilk kene tutmazsa ikincisi yakalar.