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

 
Nickolay72 :
Prensipte emir sayısı ikincil bir hedeftir, düne kadar her seferinde bir emir açtım ve bir emir varken bir sonraki açılmadı ve danışmanı siparişe göre emirleri açmaya zorlamak , bir önceki çubuk açıldığında yukarıda (aşağıda) şartlara göre açılmayan kanal?
 if (CountTrades()== 0 ) CheckForOpen();
   else
  {
   if (CountTrades()<max_trades) CheckForOpen();
  }

Bu kod parçasını analiz ederseniz, buna göre CountTrades() işlevi sıfır döndürürse, if (CountTrades()==0) CheckForOpen(); ve CheckForOpen() işlevi çağrılır. Bir sonraki tikte, eğer emir açılmışsa, CountTrades() işlevi 1 değerini döndürür ve ardından else koşulu yürütülür.

....  
else
  {
   if (CountTrades()<max_trades) CheckForOpen();
  }

CountTrades()<max_trades olduğu ortaya çıkarsa, CheckForOpen() işlevi yeniden yürütülecektir. Kodlara bakılırsa max_trades değişkeninin değeri 3'tür. Böylece 4 adet açık siparişiniz olacaktır.

EA emirleri doğru açmazsa, CheckForOpen() işlevinde pozisyonların hangi koşullar altında açılması gerektiğini belirttiğiniz mantığı kontrol edin. Ayrıca (CurrTime < EaStartTime || CurrTime >= EaEndTime) ise danışmanın zaman koşullarını kontrol edin. Yerinde olsam if (TimeHour(TimeCurrent()) = start hour && TimeMinute(TimeCurrent()) = start minute ) işlevini kullanırdım. Çalışmanın başladığı saat ve dakikalar, int veya uint türündeki değişkenlerde ayarlanır.

 
Artyom Trishkin :
1 numaralı çubuğun Açıklığı kanalın üstünde/altındaysa.
Allah kahretsin, kanalın alt sınırındaki işlemlerimin bağlı olduğunu yeni gördüm, emirleri kopyaladım ama alt kısmı üste sabitlemedim. Şimdi düzeltilmiş versiyonu deneyeceğim.
 //-----Ставим ордер на покупку.
 if (PriceCurrentOpen< PriceLow &&PriceCurrentOpen<PriceCurrentClose&&SignalCurrent<MacdCurrent&&SignalMAPrevious<SignalMAThis)
 {
  ticket= OrderSend ( NULL ,OP_BUY,Lots,Ask,slippage, 0 , 0 , "5" ,magic, 0 ,Blue);
   if (ticket> 0 )
     return ; 
 }
//-----Ставим ордер на продажу.
 if (PriceCurrentOpen> PriceLow &&PriceCurrentOpen>PriceCurrentClose&&SignalCurrent>MacdCurrent&&SignalMAPrevious>SignalMAThis)
 {
  ticket= OrderSend ( NULL ,OP_SELL,Lots,Bid,slippage, 0 , 0 , "5" ,magic, 0 ,Red);
   if (ticket> 0 )
     return;

	          
 
Vitalii Ananev :

Böylece 4 siparişiniz açık olacaktır.

EA emirleri doğru açmazsa, CheckForOpen() işlevinde pozisyonların hangi koşullar altında açılması gerektiğini belirttiğiniz mantığı kontrol edin. Ayrıca (CurrTime < EaStartTime || CurrTime >= EaEndTime) ise danışmanın zaman koşullarını kontrol edin. Yerinde olsam if (TimeHour(TimeCurrent()) = start hour && TimeMinute(TimeCurrent()) = start minute ) işlevini kullanırdım. Çalışmanın başladığı saat ve dakikalar, int veya uint türündeki değişkenlerde ayarlanır.

3 sipariş açtım ama planladığım gibi olmadı.Üç siparişe kadar istedim ama her yeni çubuk için bir sipariş.Arka arkaya birkaç çubuğun olumlu sinyaller verdiği zamanlar oluyor.

Ve zamanla ilgili bir sorun yok, kesinlikle tahsis edilen bir süre içinde çalışıyor.

 
Nickolay72 :

3 sipariş açtım ama planladığım gibi olmadı.Üç siparişe kadar istedim ama her yeni çubuk için bir sipariş.Arka arkaya birkaç çubuğun olumlu sinyaller verdiği zamanlar oluyor.

Ve zamanla ilgili bir sorun yok, kesinlikle tahsis edilen bir süre içinde çalışıyor.

Koşul: Son pozisyonun açılış çubuğu sıfıra eşit değilse ve açık pozisyon sayısı izin verilen maksimumdan azsa, yeni bir pozisyon açabilirsiniz.
 

Karputov 2016.01.13_05:14 Moskova saati. Merhaba Bay Karputov! MQL4'te yazdım

.mq4 dosyası, .ex4 dosyası var. Ancak strateji test cihazında çalışmıyor. nihai

Amacım MT4 için Uzman Danışman yazmaktı. MQL5'te .mq5 aldım ve

.ex5 dosyaları. Ve .ex5 dosyası işlemleri açtı. Dördüncü versiyonda farklılıklar vardır

beşinci ve MQL dilinde hala çok az bilgim var, bu yüzden iyi çalışmıyor.

Şimdi neyin yanlış olduğunu pek anlamaya başlamadım, test cihazının günlük dosyası kaydedildi. İ

Test edenin yazdıklarını çevirmeye çalışacağım. Bu arada soruyorum söyler misin

kodda yanlış olan ne? Sen cevap verirken ben kendim deneyeceğim

çözmek.
Editörün dördüncü versiyonumda yazım kurallarını bulmak beni şaşırttı.

ne yazacağı konusunda danışman. Ama ben yazmadım. içine alıyorum

tester günlük dosyaları ve ekran görüntüsü. 05:30 Moskova saati. test günlüğü Karputov Karputov

Dosyalar:
20160112.log  7 kb
 
Николай Никитюк :

2016.01.13_05:14 Moskova saati. Merhaba Bay Karputov! MQL4'te yazdım

.mq4 dosyası, .ex4 dosyası var. Ancak strateji test cihazında çalışmıyor.

Kodu neden resim olarak gönderdiniz? )) Onları kim anlayacak?
 
Николай Никитюк :


Lütfen kodunuzu mesaja doğru şekilde giriniz: Kodu foruma doğru şekilde giriniz
 

Hata açıklamalarını nerede bulabilirim?

Derleyicinin neyi sevmediğini anlamıyorum, neden beni uyarıyor?

olası hata için operatör önceliğini kontrol edin; önceliği netleştirmek için parantez kullanın


if(Low[X]>PriceBuy && High[X]>PriceBuy ||
               Low[X]<PriceBuy && High[X]<PriceBuy)
               calcBarX++;

ve burada

ifadenin etkisi yoktur


         for( calc_day;calc_day>0; calc_day--)
           {
            if(iLow(Symbol(),TF_3Day,calc_day)<iLow(Symbol(),TF_3Day,calc_day+1)) calc_day_OK++;
            else break;
           }

 
-Aleks- :

Hata açıklamalarını nerede bulabilirim?

Derleyicinin neyi sevmediğini anlamıyorum, neden beni uyarıyor?

Aslında derleyici, hata metnine ek olarak, hatanın oluştuğu kodun satır numarasını ve satırdaki konumunu da bildirir.
 
Karputov Vladimir :
Aslında derleyici, hata metnine ek olarak, hatanın oluştuğu kodun satır numarasını ve satırdaki konumunu da bildirir.
Bu - ilk durumda, sırayla karşılaştırma işaretleri - görünüşe göre "veya" arasında bir parantez koymanız gerekir ve ikinci durumda, mantıksal ifadenin yazıldığı parantezde yemin eder.