[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 83
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Aidez-moi, s'il vous plaît. La version de l'EA de la page 82 fonctionne (écrite pour l'ouverture d'un type de transaction), mais celle ci-dessous (pour tous les types d'ordre) s'est avérée avoir une erreur : elle ouvre les ordres sur chaque tick.
Quelle est mon erreur ?
Je vous remercie d'avance.
Aidez-moi, s'il vous plaît. La version de l'EA de la page 82 fonctionne (écrite pour l'ouverture d'un type de transaction), mais celle ci-dessous (pour tous les types d'ordre) s'est avérée avoir une erreur : elle ouvre les ordres sur chaque tick.
Quelle est mon erreur ?
Je vous remercie d'avance.
où dans le code se trouve le contrôle du nombre de commandes ?
En bref, quelle est l'idée derrière l'EA ? À première vue, ce code n'ouvrira pas du tout de transactions.
J'ai changé les valeurs des drapeaux, les trades se sont ouverts une fois, mais je ne comprends pas ce que fait cette EA))))
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;
}
}
En général, il ouvre les ordres une fois et place un ordre en attente à la fois.
En bref, quelle est l'idée derrière l'EA ? À première vue, ce code n'ouvrira pas du tout de transactions.
J'ai changé les valeurs des drapeaux, les trades se sont ouverts une fois, mais je ne comprends pas ce que fait cette EA))))
))))Ceci fait partie d'un autre EA. Le montage, brique par brique.)
L'autre consiste à prendre le profit total ou le profit séparément pour chaque paire (pratique lorsqu'on utilise la diversification). + Tracer ce que vous pouvez et d'autres fonctionnalités. Nous utilisons le conseiller expert drknn universal_1_7 comme base.
Ce code va juste additionner le spread et la différence entre les ouvertures, sootvno la version actuelle va accumuler les moins. je ne sais pas où le profit sera pris)
Ce code additionnera simplement l'écart et la différence entre les ouvertures, de sorte que la version actuelle accumulera les moins).
C'est une version légèrement dépassée de ce sur quoi je travaille actuellement. L'auteur drknn m'a donné la permission de le publier.
En général, il ouvre les ordres une fois et place un ordre en attente à la fois.
Merci, ça a marché ! )) Il faut encore déterminer comment contrôler le nombre de commandes.
))) C'est une tâche ingrate que de gratter le code de quelqu'un d'autre pour en comprendre le fonctionnement. Si vous faites confiance à l'EA, je vous souhaite bonne chance et tout se passera bien).
J'ai personnellement inventé un vélo et écrit mon hibou à partir de rien, mais je sais où et comment les choses fonctionnent et je sais pourquoi elles ne fonctionnent pas et où chercher les erreurs).
C'est comme ça.)