[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 301

 
rustein :
Forumda aradım ama hızlı bir çözüm bulamadım, sorunu çözmeme yardımcı olun test cihazı çalışmıyor, gerçek hayatta çalışıyor.

Teşekkür ederim.

Test cihazı kilitleniyorsa, öyle olmalıdır. (Döngüden çıkışı açıkladığınızdan emin olun).

bunun gibi

     while (Result == - 1 )
    {
       if (TotalOpenOrders() < TotalOrders)
      {
         if (TrendDetection() == BULL)
        {
          Result = OrderSend ( Symbol (),OP_BUY,Lots, NormalizeDouble (Ask, Digits ),Slippage, NormalizeDouble (Ask, Digits )-(StopLoss* Point ), NormalizeDouble (Ask, Digits )+(TakeProfit* Point ),OrderComments,Magic, 0 , CLR_NONE ); 
         if (( IsTesting ()|| IsOptimization ())&&Result == - 1 ) break ;
        }
 
drknn :


Sana ne olduğunu söylemek zor. Negatif sayıları her zaman kodda parantez içine almayı MQL4'te bir kural haline getirin. Köşeli ayraçlar olmadan, bazen bir nedenden dolayı hatalar ortaya çıkar.

Her ne kadar extern ile başlayan kod satırlarında, aksine parantez içinde negatif değerler almak gerekli değildir. Neden öyle - bilmiyorum.

Teşekkürler, ama işe yaramıyor, if(IsTesting()==true || IsOptimization()==true) döngüsünden nasıl kurtulacağımı söyler misiniz?
 
rustein :
Teşekkürler, ama işe yaramıyor, if(IsTesting()==true || IsOptimization()==true) döngüsünden nasıl kurtulacağımı söyler misiniz?

 while (Result == - 1 )
    {
       if (TotalOpenOrders() < TotalOrders)
      {
         if (TrendDetection() == BULL)
        {
          Result = OrderSend ( Symbol (),OP_BUY,Lots, NormalizeDouble (Ask, Digits ),Slippage, NormalizeDouble (Ask, Digits )-(StopLoss* Point ), NormalizeDouble (Ask, Digits )+(TakeProfit* Point ),OrderComments,Magic, 0 , CLR_NONE ); 
         if (( IsTesting ()|| IsOptimization ())&&Result == - 1 ) break ;
        }

^^

 
drknn :
Bir uyarıya ihtiyacı yok - Kodun bir yerinde dosyanın büyük olasılıkla zaten açık olduğunu, ancak kapatılmadığını anlıyorum. Görünüşe göre, bu nedenle, dosyayı yeniden açmak mümkün değildir ve kişi uyarı pencereleri tarafından eziyet edilir. Yine de belki yanılıyorum - telepatlar kulübünün bir üyesi değilim :(
 Durum şu: Belli bir anda Expert Advisor ssv dosyasına bakar ve orada hangi komutun (al, sat, kapat) olduğuna bakar, bu komut dosyaya EXСEL tarafından yazılır. İşin püf noktası, uzmanın dosyayı okuyacağı anda,
EXCEL tarafından açılacak, uzman bir hata verecek ve bu kadar, ama tekrar tırmanıp komutu okuyana kadar denemesi gerekiyor. 
  while yapısı hakkında bilmiyordum ...
 Bak, lütfen, doğru yazdı:
 int init()
 {
         while(handle< 1 )
         {
         tutamaç= FileOpen ( "firstfile.csv" , FILE_CSV | FILE_READ | FILE_WRITE , '\t' );    
        }

}

 
sanches83 :

}

Evet, ama neden soruyorsun, çünkü "savaş" ı kontrol edebilirsin).
 
rustein :
Teşekkürler, ama işe yaramıyor, if(IsTesting()==true || IsOptimization()==true) döngüsünden nasıl kurtulacağımı söyler misiniz?


Hiç döngü olmadan deneyin, şöyle söyleyin:

 double   PR,SL,TP;
PR= NormalizeDouble (Ask, Digits );
SL= NormalizeDouble (PR-StopLoss* Point , Digits );
TP= NormalizeDouble (PR+TakeProfit* Point , Digits );
int Result= 0 ;
Result = OrderSend ( Symbol (),OP_BUY,Lots,PR,Slippage,SL,TP,OrderComments,Magic, 0 , CLR_NONE );
if (Result<= 0 ){
         Print ( "Ошибка № " , GetLastError (), " при открытии бай-ордера. PR = " ,PR, "   SL = " ,SL, "   TP = " ,TP);
}

Bu en azından pozun neden açılmadığını anlamaya yardımcı olacaktır.

 
costy_ :

^^

çok teşekkürler :)

Herkese teşekkürler, düzelttim, işe yarıyor.

Yardım için alçak yay.

 
costy_ :
Evet, ama neden soruyorsun, çünkü "savaş" ı kontrol edebilirsin).


Genel olarak, bu doğrudur, ancak çalışması için değişkeni döngüden önce başlatmanız gerekir.

tutamaç=0;

while(tutamaç<1)
{
handle=FileOpen("firstfile.csv", FILE_CSV|FILE_READ|FILE_WRITE ,'\t');
}

Bu, kodun yürütülmesinin döngü gövdesine gireceğinden ve onu görmezden gelmeyeceğinden kesinlikle emin olmaktır.

 
drknn :


Genel olarak, bu doğrudur, ancak çalışması için değişkeni döngüden önce başlatmanız gerekir.

tutamaç=0;

while(tutamaç<1)
{
handle=FileOpen("firstfile.csv",FILE_CSV|FILE_READ|FILE_WRITE,'\t');
}

Bu, kodun yürütülmesinin döngü gövdesine gireceğinden ve onu görmezden gelmeyeceğinden kesinlikle emin olmaktır.

Evet, ne yazık ki falcılar gibi olmalısın, sorudaki kodun bir kısmıyla, peki ya da kodun tamamıyla senaryolar oluşturmalısın ve hatayı belirtmen senin için daha kolay olacaktır.(Kahve telvesi biter).
 

İnsanlara pek yardım etmeyin!!

Sabah kanal strateji danışmanı yazmaya çalışıyorum. Sonuç olarak, EURGBP çiftinde saat 6:01'de fiyat hareketi kanalını sabah 0'dan sabah 6'ya kadar belirliyoruz. İki adet geciktirici söndürüyoruz ve tetiklenen geciktirici stop ile kapandıysa ters yönde açıyoruz. İşe yaramayan stratejinin ikinci kısmıdır. Onlar. stop tetiklenirse, ters yönde emir açmak mümkün değildir.
Dosyalar: