Robotla kim yardımcı olabilir, neden çalışmıyor? - sayfa 3

 
GIM için
Sadece emir açmanız gerekiyorsa, SL / TP yerine 0 belirtin ve gelecek için bir kontrol ayarlamanız gerekir: SL veya TP 0'a eşitse, istekte 0 belirtmeniz gerekir. bir değer belirtilir, ardından emrin belirli kapanış fiyatını hesaplar.
 
Dmitriy Gizlyk :
GIM için
Sadece emir açmanız gerekiyorsa, SL / TP yerine 0 belirtin ve gelecek için bir kontrol ayarlamanız gerekir: SL veya TP 0'a eşitse, istekte 0 belirtmeniz gerekir. bir değer belirtilir, ardından emrin belirli kapanış fiyatını hesaplar.
Tüm işlemlerdeki toplam kâra göre emirleri açıp kapatacak bir danışman istiyorum ....
 
AdikAmir :

dış çift Lot = 0.1;
harici int FastMAPeriod=5;
harici int FastMAMethod=0; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
harici int FastMAPrice=0; // 0-Kapalı, 1-Açık, 2-Yüksek, 3-Düşük, 4-Ortanca, 5-Tipik, 6-Ağırlıklı
harici int SlowMAPeriod=75;
harici int SlowMAMethod=3; // 0-SMA, 1-EMA, 2-SMMA, 4-LWMA
harici int SlowMAPrice=3; // 0-Kapalı, 1-Açık, 2-Yüksek, 3-Düşük, 4-Ortanca, 5-Tipik, 6-Ağırlıklı
harici int TP=500; // kar almak
harici int SL=250; //kaybı durdurmak
çift bilet;

int start(){

double fast_ma1=iMA(NULL,0,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
double slow_ma1=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
double fast_ma2=iMA(NULL,0,FastMAPeriod,0,FastMAMethod,FastMAPrice,2);
double slow_ma2=iMA(NULL,0,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);

if (Sipariş Toplamı()==0)
{
if (fast_ma1>slow_ma1 && (fast_ma2<slow_ma2))
{ bilet = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-SL*Point,Ask+TP*Point,NULL,0,0, CLR_NONE );
if (bilet==0) Print("HATA");
}
if (slow_ma1>fast_ma1 && (slow_ma2<fast_ma2))
{
bilet = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-SL*Point,Bid+TP*Point,NULL,0,0,CLR_NONE);
if (bilet==0) Print("HATA");
}

}

dönüş(0);
}




Magazin okumak. Belki derleme sırasında algılanmayan hata mesajları vardır.

Burada bir hata var OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid-SL*Point,Bid+TP*Point,NULL,0,0,CLR_NONE);

bu OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+SL*Point,Bid-TP*Point,NULL,0,0,CLR_NONE);

Satarken, stop zararı mevcut fiyattan daha yüksek ve alım daha düşük olmalıdır, ancak tam tersine stop'u fiyattan daha düşük ve alım daha yüksek olmalıdır.

 
GIM :
Tüm işlemlerdeki toplam kâra göre emirleri açıp kapatacak bir danışman istiyorum ....

Bu durumda bir pozisyon açarken SL=0, TP=0 yerleştirerek.

Ve bir pozisyonu kapatmak için, alınan karı her bir işarette verilen bir değerle karşılaştırmanız gerekir. Ve kar belirtilen değere ulaştığında, çevrimdeki tüm siparişleri OrderClose(....) ile kapatın.

Mevcut kârın tanımı gereği, görünümdeki bir görevden varyantlar mümkündür. Hesaptaki kâra bakarsanız, o zaman basitçe AccountProfit()'i alabilirsiniz, ancak muhtemelen döngü boyunca daha fazla zaman alan bir yoldur (o zaman yalnızca gerekli siparişlerin kârını hesaplayabilirsiniz)

   double profit= 0 ;
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()== _Symbol && OrderMagicNumber()== /* Ваш магик */ )
        {
         profit+=OrderProfit()+OrderSwap()+OrderCommission();
        }
     }
 
Dmitriy Gizlyk :

Bu durumda bir pozisyon açarken SL=0, TP=0 yerleştirerek.

Ve bir pozisyonu kapatmak için, alınan karı her bir işarette verilen bir değerle karşılaştırmanız gerekir. Ve kar belirtilen değere ulaştığında, çevrimdeki tüm siparişleri OrderClose(....) ile kapatın.

Mevcut kârın tanımı gereği, görünümdeki bir görevden varyantlar mümkündür. Hesaptaki kâra bakarsanız, o zaman basitçe AccountProfit()'i alabilirsiniz, ancak muhtemelen döngü boyunca daha fazla zaman alan bir yoldur (o zaman yalnızca gerekli siparişlerin kârını hesaplayabilirsiniz)

 extern double   lots       = 0.01 ;
extern int   stop_loss      = 0 ;  
extern int take_profit    = 0 ;

int             last_bar       = 0 ;

int start(){
   if (last_bar == Bars ) return ( 0 );
   last_bar = Bars ;
   if ( OrdersTotal () == 0 ){
           OrderSend ( Symbol (), OP_BUY, lots ,Ask, 50 , Bid - stop_loss * Point , Ask + take_profit * Point ,   "" , 1 , 0 , clrBlue );
           OrderSend ( Symbol (), OP_SELL, lots ,Bid, 50 , Ask+ stop_loss * Point , Bid - take_profit * Point ,   "" , 1 , 0 , clrRed );      
}
   return ( 0 ); 
}
 double profit= 0 ;
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()== _Symbol && OrderMagicNumber()== /* Ваш магик */ )
        {
         profit+=OrderProfit()+OrderSwap()+OrderCommission();
        }
     }
 
GIM :
Mevduat para biriminde zararı durdur ve kar al belirtilmişse
 extern double   lots       = 0.01 ;
extern int   stop_loss      = 10 ;   /* Указываем в валюте депозита */
extern int take_profit    = 20 ;   /* Указываем в валюте депозита */
extern int Magic          = 1 ;

int             last_bar       = 0 ;

int start(){
   if (last_bar == Bars ) return ( 0 );
   last_bar = Bars ;
   if ( OrdersTotal () == 0 ){
           OrderSend ( Symbol (), OP_BUY, lots ,Ask, 50 , 0 , 0 ,   "" , Magic, 0 , clrBlue );
           OrderSend ( Symbol (), OP_SELL, lots ,Bid, 50 , 0 , 0 ,   "" , Magic, 0 , clrRed );      
}
 double profit= 0 ;
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()== _Symbol && OrderMagicNumber()== Magic)
        {
         profit+=OrderProfit()+OrderSwap()+OrderCommission();
        }
     }
 int requot= 0 ;
 if (profit>=take_profit || (-profit)>=stop_loss)
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()== _Symbol && OrderMagicNumber()== Magic)
        {
         if ( OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 50 , clrRed ))
               requot= 0 ;
             else
              {
               requot++;
              }
         if (requot> 10 )
              {
               i++;
               requot= 0 ;
              }
            i--;
        }
     }
   return ( 0 ); 
}
 
Dmitriy Gizlyk :
Mevduat para biriminde zararı durdur ve kar al belirtilmişse

for(int i=0;i<OrdersTotal();i++)

Hata: "i"

 
Kim bilir
 extern int Magic          = 1 ;


что означает??
 
GIM :
Kim bilir

EA'nın siparişlerinin kimliği, böylece yalnızca kendi siparişleriyle çalışır.

 
Vladimir Zubov :

EA'nın siparişlerinin kimliği, böylece yalnızca kendi siparişleriyle çalışır.

Nasıl anlaşılır, sadece siparişlerinizle ....
Neden: