Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 911

 
Viktorline14 :
Arkadaşlar lütfen yardım edin!!!

Danışmanın metnini kopyalayıp yapıştırmaktansa ekran görüntüsünü alıp buraya göndermek gerçekten daha mı kolay? Birisinin bunu ekrandan ME'lerine manuel olarak yazıp anlamaya başlayacağını mı düşünüyorsunuz?

Derleyici, işlevin yürütülmesinin sonucunu kontrol etmenin gerekli olduğunu yazarsa, kontrol edilmesi gerektiği anlamına gelir. Zor değil:

if(! OrderSend ( Symbol (), OP_BUY, OrderValue, NormalizeDouble (Ask, Digits ), 3 , SL, TP, NULL , 0 , 0 , clrBlue )) Print("Opening Buy error #", GetLastError()); //ну и другие действия по усмотрению, в случае ошибки
 

 if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )

 {OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), Slippage, SL, TP, NULL, 0, 0,clrBlue);

     MyOrderStateB = 1; 

      if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), 3, SL, TP, NULL, 0, 0,clrBlue)) 

   Print("Opening Buy error #", GetLastError());}

   else Sleep(2);

Teşekkür ederim. Ancak, doğru mu, değil mi? hala uyarı veriyor

 
Kesin değerlerde, ancak Bid - Sl*Point gibi göreceli değerlerde zarar durdur ve kar al var.
 
abeiks :

Merhaba!

Benim uzmanımda bir önceki mumda mum açılıp açılmadığına bakılır, şartlar uygunsa pozisyon açılır, değilse açılmaz. Sorun, önceki mumun durumu kontrol edilmeden önce pozisyonun açılmasıdır. Logda bir pozisyonun açıldığını görüyorum ve daha sonra pozisyonun açılmaması gerekiyor. Bu sorunu nasıl çözecek?

Teşekkürler, anladım. Bir önceki mumu kontrol etme fonksiyonunu pozisyon açma fonksiyonlarının üstüne koydum.
 
Sertlik için özür dilerim
 
if(S1a == S1b && S1a<20.0000 && S1b<20.0000)
{OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble (Ask, Digits), Slippage, Bid - SL * Point, Ask + TP * Point, NULL, 0, 0,clrBlue);
Sipariş DurumumB = 1;
if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), 3, SL, TP, NULL, 0, 0,clrBlue))
Print("Satın Alma hatası #", GetLastError());}
başka Uyku(2);

if(S1a == S1b && S1a>80.0000 && S1b>80.0000 )

{OrderSend(Symbol(), OP_SELL, OrderValue, NormalizeDouble(Bid, Digits), Slippage, Ask + SL * Point, Bid - TP * Point , NULL, 0, 0,clrRed);
MyOrderStateS = 1; }

başka Uyku(2);

Ve akraba ile aynı şeyi verir (

 
Viktorline14 :

 if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )

 {OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), Slippage, SL, TP, NULL, 0, 0,clrBlue);

     MyOrderStateB = 1; 

      if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), 3, SL, TP, NULL, 0, 0,clrBlue)) 

   Print("Opening Buy error #", GetLastError());}

   else Sleep(2);

Teşekkür ederim. Ancak, doğru mu, değil mi? hala uyarı veriyor

Yanlış, OrderSend'i iki kez aramanıza gerek yok. Evet ve TP'li SL, fiyata göre düşünülmeli ve puan olarak belirlenmemelidir. Ve Ask ve Bid'in açılış fiyatlarını değil, SL ve TP hesaplamalarının sonucunu normalleştirmek gerekiyor.

Genel olarak, "çalış, çalış ve tekrar çalış")))

 
evillive :

Yanlış, OrderSend'i iki kez aramanıza gerek yok. Evet ve TP'li SL, fiyata göre düşünülmeli ve puan olarak belirlenmemelidir. Ve Ask ve Bid'in açılış fiyatlarını değil, SL ve TP hesaplamalarının sonucunu normalleştirmek gerekiyor.

Genel olarak, "çalış, çalış ve tekrar çalış")))

Çok teşekkür ederim))) Bana çok yardımcı oldun, şimdi her şey çalışıyor: 3
 

Tekrar çok teşekkür ederim!

Şimdi bir sorun var, danışman arka arkaya birkaç sipariş açıyor ve istediğim gibi değil (

int start()



  { S1a = NormalizeDouble(iStochastic(NULL, 0, S1_period, 3, S1_slowing, MODE_SMA, 1, MODE_MAIN, 1), 0);

   S1b = NormalizeDouble(iStochastic(NULL, 0, S1_period, 3, S1_slowing, MODE_SMA, 1, MODE_SIGNAL, 1), 0);

   

   if(MyOrderStateB == 1)Sleep(300000);

    else MyOrderStateB = 0;

   if(MyOrderStateS == 1)Sleep(300000);

    else MyOrderStateS = 0;

    

 

     

   if(S1a == S1b && S1a<20.0000 && S1b<20.0000 )

 

      if(!OrderSend(Symbol(), OP_BUY, OrderValue, NormalizeDouble(Ask, Digits), Slippage, Bid - SL * Point, Ask + TP * Point, NULL, 0, 0,clrBlue))

   Print("Opening Buy error #", GetLastError());  

     else Sleep(2);

   MyOrderStateB = 1;

  

   


      

   if(S1a == S1b && S1a>80.0000 && S1b>80.0000 )


    

    

       if(!OrderSend(Symbol(), OP_SELL, OrderValue, NormalizeDouble(Bid, Digits), Slippage, Ask + SL * Point, Bid - TP * Point , NULL, 0, 0,clrRed))

       Print("Opening Sell error #", GetLastError()); 

       else Sleep(2);

       MyOrderStateS = 1;

       

      

       

       

       

   return(0);}

 

Strateji test cihazının garip davranışlarını gözlemledim. EA, bekleyen durdurma emirlerini ayarlar ve izler. hata. Aşağıdakiler olur. EA, Bystop ve Sellstop'u mevcut fiyattan 30 pip uzaklıkta ayarlar (Enstrüman - GbpUsd. Dört basamak. İzin verilen minimum seviye = 3 pip). Bir süre sonra, çalışmadılarsa, pazardan sonra onları çeker. İşte gördüğüm şey. değişiklik başarılı olur, değişiklik başarılı olur ve ardından bir noktada 1 numaralı hata açılır. Yani, her şey yolundaydı, danışman aynı işlemleri yaptı ve aniden bu hata ortaya çıktı. Fiyatların tamamı rakamlara göre normalleştirilmiştir. Genel olarak OrderModify() fonksiyonunun girişine beslenen tüm değerlerin tamamı normalize edilir!

Uzman Danışmanın test cihazındaki bu tür davranışlarının nedeni ne olabilir?