[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 83

 

Lütfen yardım et. Sayfa 82'deki EA varyantı çalışıyor (1 tip anlaşma açmak için yazılmıştır), ancak aşağıdakinin (tüm emir türleri için) hatalı olduğu ortaya çıktı: her onayda emirleri açar.

Benim hatam ne?

 extern int      Magic       = 0 ;         //уникальный номер ордера
extern bool     BUY         = false;     //открыть ордер BUY
extern bool     BUY_STOP    = false;     //поставить ордер BUY STOP
extern bool     BUY_LIMIT   = false;     //поставить ордер BUY LIMIT
extern bool     SELL        = false;     //открыть ордер SELL
extern bool     SELL_STOP   = false;     //поставить ордер SELL STOP
extern bool     SELL_LIMIT  = false;     //поставить ордер SELL LIMIT
extern double   Lot         = 0.1 ;       //объем ордера
extern int      takeprofit  = 0 ;         //уровень выставления TP, если 0, то TP не выставляется
extern int      stoploss    = 0 ;         //уровень выставления SL, если 0, то SL не выставляется
extern int      DistanceSet = 40 ;       //расстояние от рынка для отложенника
extern int      slippage    = 3 ;         //максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
   if (BUY)
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble (Ask + takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL  = NormalizeDouble (Ask - stoploss* Point , Digits ); else SL= 0 ;     
      OPENORDER ( "Buy" );
   }
   if (SELL)
   {  
       if (takeprofit!= 0 ) TP = NormalizeDouble (Bid - takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL = NormalizeDouble (Bid + stoploss* Point , Digits );   else SL= 0 ;              
      OPENORDER ( "Sell" );
   }
   if (BUY_STOP)
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble (Ask + DistanceSet* Point + takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL  = NormalizeDouble (Ask + DistanceSet* Point - stoploss* Point , Digits ); else SL= 0 ;     
      OPENORDER ( "Buy Stop" );
   }
   if (SELL_STOP)
   {  
       if (takeprofit!= 0 ) TP = NormalizeDouble (Bid - DistanceSet* Point - takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL = NormalizeDouble (Bid - DistanceSet* Point + stoploss* Point , Digits );   else SL= 0 ;              
      OPENORDER ( "Sell Stop" );
   }
   if (BUY_LIMIT)
   {
       if (takeprofit!= 0 ) TP  = NormalizeDouble (Ask - DistanceSet* Point + takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL  = NormalizeDouble (Ask - DistanceSet* Point - stoploss* Point , Digits ); else SL= 0 ;     
      OPENORDER ( "Buy Limit" );
   }
   if (SELL_LIMIT)
   {  
       if (takeprofit!= 0 ) TP = NormalizeDouble (Bid + DistanceSet* Point - takeprofit* Point , Digits ); else TP= 0 ;
       if (stoploss!= 0 )   SL = NormalizeDouble (Bid + DistanceSet* Point + stoploss* Point , Digits );   else SL= 0 ;              
      OPENORDER ( "Sell Limit" );
   }
return ( 0 );
}
void OPENORDER( string ord)
{
int ticket = - 1 ;
int err;
while (ticket< 0 )
{
if (ord== "Buy" ) ticket= OrderSend ( Symbol (),OP_BUY, Lot, NormalizeDouble (Ask, Digits ),slippage,SL,TP, "" ,Magic, 0 );
if (ord== "Sell" ) ticket= OrderSend ( Symbol (),OP_SELL,Lot, NormalizeDouble (Bid, Digits ),slippage,SL,TP, "" ,Magic, 0 );
if (ord== "Buy Stop" ) ticket= OrderSend ( Symbol (),OP_BUYSTOP, Lot, NormalizeDouble (Ask + DistanceSet* Point , Digits ),slippage,SL,TP, "" ,Magic, 0 );
if (ord== "Sell Stop" ) ticket= OrderSend ( Symbol (),OP_SELLSTOP,Lot, NormalizeDouble (Bid - DistanceSet* Point , Digits ),slippage,SL,TP, "" ,Magic, 0 );
if (ord== "Buy Limit" ) ticket= OrderSend ( Symbol (),OP_BUYLIMIT, Lot, NormalizeDouble (Ask - DistanceSet* Point , Digits ),slippage,SL,TP, "" ,Magic, 0 );
if (ord== "Sell Limit" ) ticket= OrderSend ( Symbol (),OP_SELLLIMIT,Lot, NormalizeDouble (Bid + DistanceSet* Point , Digits ),slippage,SL,TP, "" ,Magic, 0 );
if (ticket==- 1 ) //неудачная попытка
{  
ShowERROR();
err++; Sleep ( 2000 );RefreshRates();
}
}
return ;
}
void ShowERROR()
{
   int err= GetLastError ();
   switch ( err )
   {                  
       case 1 :   return ;
       case 2 :   Alert ( "Нет связи с торговым сервером " , Symbol ()); return ;
       case 3 :   Alert ( "Error неправильные параметры " , Symbol ()); return ;
       case 130 : Alert ( "Error близкие стопы   Ticket " , Symbol ()); return ;
       case 134 : Alert ( "Недостаточно денег   " , Symbol ()); return ;
       case 146 : Alert ( "Error Подсистема торговли занята " , Symbol ()); return ;
       case 129 : Alert ( "Error Неправильная цена " , Symbol ()); return ;
       case 131 : Alert ( "Error Неправильный объем " , Symbol ()); return ;
       case 4200 : Alert ( "Error Объект уже существует " , Symbol ()); return ;
   }
}

Şimdiden teşekkür ederim.

 
nemo811 :

Lütfen yardım et. Sayfa 82'deki EA varyantı çalışıyor (1 tip anlaşma açmak için yazılmıştır), ancak aşağıdakinin (tüm emir türleri için) hatalı olduğu ortaya çıktı: her onayda emirleri açar.

Benim hatam ne?

Şimdiden teşekkür ederim.

koddaki sipariş sayısının kontrolü nerede?

 
nemo811 :


Kısacası, bir danışman fikri nedir? İlk bakışta, bu kod hiç anlaşma açmayacaktır.

bayrakların değerleri değişti, fırsatlar bir kez açıldı ama bu EA ne yapıyor anlamadım)))

 
nemo811 :


extern int Magic = 0; //уникальный номер ордера
extern bool BUY = true; //открыть ордер BUY
extern bool BUY_STOP = true; //поставить ордер BUY STOP
extern bool BUY_LIMIT = true; //поставить ордер BUY LIMIT
extern bool SELL = true; //открыть ордер SELL
extern bool SELL_STOP = true; //поставить ордер SELL STOP
extern bool SELL_LIMIT = true; //поставить ордер SELL LIMIT
extern double Lot = 0.1; //объем ордера
extern int takeprofit = 0; //уровень выставления TP, если 0, то TP не выставляется
extern int stoploss = 0; //уровень выставления SL, если 0, то SL не выставляется
extern int DistanceSet = 40; //расстояние от рынка для отложенника
extern int slippage = 3; //максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
if (BUY)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
OPENORDER ("Buy");
BUY=false;
}
if (SELL)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); else SL=0;
OPENORDER ("Sell");
SELL=false;
}
if (BUY_STOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0;
OPENORDER ("Buy Stop");
BUY_STOP=false;

}
if (SELL_STOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits); else SL=0;
OPENORDER ("Sell Stop");
SELL_STOP=false;
}
if (BUY_LIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0;
OPENORDER ("Buy Limit");
BUY_LIMIT=false;
}
if (SELL_LIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits); else SL=0;
OPENORDER ("Sell Limit");
SELL_LIMIT=false;
}
return(0);
}
void OPENORDER(string ord)
{
int ticket = -1;
int err;
while (ticket<0)
{
if (ord=="Buy") ticket=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Sell") ticket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Buy Stop" ) ticket=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Sell Stop") ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Buy Limit" ) ticket=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="Sell Limit") ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ticket==-1) //неудачная попытка
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
}
return;
}
void ShowERROR()
{
int err=GetLastError();
switch ( err )
{
case 1: return;
case 2: Alert("Нет связи с торговым сервером ",Symbol());return;
case 3: Alert("Error неправильные параметры ",Symbol());return;
case 130: Alert("Error близкие стопы Ticket ",Symbol());return;
case 134: Alert("Недостаточно денег ",Symbol());return;
case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
case 129: Alert("Error Неправильная цена ",Symbol());return;
case 131: Alert("Error Неправильный объем ",Symbol());return;
case 4200:Alert("Error Объект уже существует ",Symbol());return;
}
}

Genel olarak, bu formda, emirleri bir kez açar ve her seferinde bir depozito çıkarır.

 
NameLess :


Kısacası, bir danışman fikri nedir? İlk bakışta, bu kod hiç anlaşma açmayacaktır.

bayrakların değerleri değişti, fırsatlar bir kez açıldı ama bu EA ne yapıyor anlamadım)))


)))) Bu başka bir Uzman Danışmanın parçasıdır. Tuğla tuğla topluyorum))
 
Diğerinin anlamı, toplam karı veya karı her bir çift için ayrı ayrı almaktır (çeşitlendirme kullanılırken uygundur). + Mümkün olanı ve diğer işlevleri takip etmek. Uzman Danışman drknn universal_1_7 esas alınır
 
nemo811 :
Diğerinin anlamı, toplam karı veya karı her bir çift için ayrı ayrı almaktır (çeşitlendirme kullanılırken uygundur). + Mümkün olanı ve diğer işlevleri takip etmek. Uzman Danışman drknn universal_1_7 esas alınır

bu kod, sırasıyla yayılmayı ve açıklıklar arasındaki farkı özetleyecektir, ancak mevcut seçenek bir eksi biriktirecektir. Burada kârın nereden alınacağını bilmiyorum)
 
NameLess :

bu kod, sırasıyla yayılmayı ve açıklıklar arasındaki farkı özetleyecektir, ancak mevcut seçenek bir eksi biriktirecektir. Burada kârın nereden alınacağını bilmiyorum)

İşte şu anda üzerinde çalıştığım şeyin biraz eskimiş bir versiyonu. Yazar drknn onu yaymasına izin verdi.
Dosyalar:
 
NameLess :

Genel olarak, bu formda, emirleri bir kez açar ve her seferinde bir depozito çıkarır.

Teşekkürler, işe yaradı! )) Sipariş sayısının kontrolüne karar vermek için kalır
 
nemo811 :
Teşekkürler, işe yaradı! )) Sipariş sayısının kontrolüne karar vermek için kalır


koda baktı, beyni kırdı))) işini anlamak için başka birinin kodunu karıştırmak için nankör bir görev. Bu danışmana güveniyorsanız, her şeyin yolunda gitmesi için size başarılar dilerim)

Şahsen ben bir bisiklet icat ettim ve sıfırdan kendi kodumu yazdım ama nerede ve nasıl çalıştığını biliyorum ve neden çalışmadığını ve nerede hata arayacağımı biliyorum)

neyse böyle bir şey)

Neden: