[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 846

 
serjik77 :

Dikkatimi dağıtıyorsam özür dilerim, muhtemelen aptalca bir soru.

Bunu yeni öğrenmeye başladım ama tavsiye isteyecek kimse yok.

Ders kitabını birkaç kez okudum. EA'yı en basit işlevlerle başlattım - bekleyen siparişler.

Siparişlerin her tıklamayla değil, bir kez açılması için ne yapılması gerektiğini anlayamıyorum.



Bunun gibi bir işlev ekleyin

int ChPos( int type_H_L) 
{
// возвращает кол-во позици которые открыты 
   int i;
   int col;
   int count=0 ;
   for( i=0; i < OrdersTotal(); i++)         
   {
      if(OrderSelect(i,SELECT_BY_POS)==true) 
       {                                   
           if(OrderType()==OP_BUY && type_H_L==OP_BUY && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_SELL && type_H_L==OP_SELL && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_BUYSTOP && type_H_L==OP_BUYSTOP && OrderMagicNumber()== magic){count++;}
           if(OrderType()==OP_SELLSTOP && type_H_L==OP_SELLSTOP && OrderMagicNumber()== magic){count++;}
           
       }
    }   
return(count);
}

Ve kodunuzda, örneğin bunun gibi bir kontrol yapın

 if ( SignalLine > MainLine && ChPos(OP_BUY)== 0 )
      { // если сигнальная линия выше основной и нет длинной позы . то закрыть короткую открыть длинную
         if (ChPos(OP_SELL)> 0 ) ClosePosition(OP_SELL) ;
         OpenPosition(OP_BUY)  ;
 
Karsız pozisyonları kilitliyorum, kilitteki dengeyi bozmamak için TP'yi zaten açık olan emirlerden çıkarmak gerekiyor, ama ne yazık ki, TP=0, dergide çok can sıkıcı bir şekilde birçok kez yazmasına rağmen:

2010.09.12 21:34:53 2000.03.06 07:59 para EURUSD,M5: OrderModify hatası 1

kod:

 bool notakeprofit()
{   bool ok=true;
    int k= OrdersTotal ();
    for ( int i=k- 1 ; i >= 0 ; i--)
    if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
    {
        if (OrderSymbol() == Symbol () && OrderMagicNumber() == g_magic_368)
        {OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble ( 0 , Point ), OrderExpiration(), CLR_NONE );
         }
    else ;
       // { Print("OrderSelect() error - ",GetLastError()); ok=false;}
    }
return (ok);
}

Ana kodda tüm piyasa emirlerinin TP=0 olduğundan emin olmak gerektiği gerçeği göz önüne alındığında, bu fonksiyonun sonucunu kontrol ediyorum - tamam, kodda görülebilir - tamam - sadece varsa değişir bir hatadır

PLZ'YE YARDIM ET! :)

şimdiden teşekkürler

 
abolk :

Benim durumumda bir kural var: "İsimler, sıfatlar ve zarflar için ayrı ayrı YAZMAYIN, eğer zıtlık varsa veya ima ediliyorsa" http://www.rusyaz.ru/pr/od07.html - " ç do" - Doğru yazılmamış - doğru " yapılacaklar " (vurgulanan kelime bir karşıtlıktır, önünde bir kısa çizgi bulunur)

yanlış (!) Rus dilinin normunu yorumluyorsunuz. Aşağıdaki durumlarda ayrı olarak "değil" yazılır:

" yapmak " doğru DEĞİL, kötüdür. - muhalefet bu anlamda anlaşılmaktadır. Kural için örneklere bakın.

Teklifiniz birlikte YAZILMAMALIDIR (aynı sayfadaki 88. paragrafın 3. paragrafı geçerlidir):

" z do" - yanlış yazılmış, doğru " yapılacak ".

 

İşte olağan MACD göstergesi. Bununla geriye dönük test nasıl yapılır?

belki bir örneği vardır?

 
IgorM :
Karsız pozisyonları kilitliyorum, kilitteki dengeyi bozmamak için TP'yi zaten açık olan emirlerden çıkarmak gerekiyor, ama ne yazık ki, TP=0, dergide çok can sıkıcı bir şekilde birçok kez yazmasına rağmen:

kod:

Ana kodda tüm piyasa emirlerinin TP=0 olduğundan emin olmak gerektiği gerçeği göz önüne alındığında, bu fonksiyonun sonucunu kontrol ediyorum - tamam, kodda görülebilir - tamam - sadece varsa değişir bir hatadır

YARDIM PLZ! :)

şimdiden teşekkürler

Belki NormalizeDouble ( 0 , Point ) değil , NormalizeDouble ( 0 , Digits ) ?!

 
chief2000 :

Belki NormalizeDouble ( 0 , Point ) değil , NormalizeDouble ( 0 , Digits ) ?!


ATP, zaten kendim buldum, ancak 1 numaralı hatayı düzeltmedi

 
IgorM :


ATP, zaten kendim buldum, ancak 1 numaralı hatayı düzeltmedi

Her şeyden önce, sebebin bu olduğundan emin olmak için (bir hatayı hariç tutmak için) TP'de sıfır yerine başka bir sayı değiştirirdim.

 
chief2000 :

Her şeyden önce, sebebin bu olduğundan emin olmak için (bir hatayı hariç tutmak için) TP'de sıfır yerine başka bir sayı değiştirirdim.


bu işlevi yazana kadar her şey yolunda gitmeden önce, şimdi OrderModify() yerine Kimov işlevini çağırıyorum:

void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0)

hata gitti

 

osma tipi gösterge var, 0'ı geçerken çevirmeli bir sinyal var. Geri test nasıl yapılır?

 
ivandurak :


Bunun gibi bir işlev ekleyin

Ve kodunuzda, örneğin bunun gibi bir kontrol yapın

Afedersiniz ama izin verirseniz, bir soru daha?

Biraz anlamaya başladım, ama her şeyi değil.

İlk fonksiyon, programa açık emirlerin sayısını söyler mi?

Ve lütfen bana bunu nasıl yapacağımı söyle, böylece her zaman bekleyen sadece iki tane var,

ne işe yaradığına bakılmaksızın.