[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 215

 

Et encore, comment limiter le nombre d'ordres ouverts dans l'EA, car il les ouvre comme une boule de neige ?

 
stalkertula:

Et encore, comment limiter le nombre d'ordres ouverts dans l'EA, car il les ouvre comme une boule de neige ?

1. Vérifié la nécessité d'établir une commande, si oui.

2. Vérifiez le nombre de commandes existantes, si oui, alors...

3. Vérifie le temps écoulé depuis l'ordre précédent (ou tout autre critère de délai), si oui, alors...

4. J'ai passé une commande.

En général, ça donne quelque chose comme ça...

Bien que... chacun de ces points comprend diverses autres vérifications nécessaires pour corriger les paramètres de réglage de la commande (pour éviter qu'une erreur ne revienne du DC)

Conseil :
Lorsque vous décidez de passer un ordre ou d'ouvrir une position, quels sont vos propres critères ?
Maintenant, posez-vous la question suivante : "Pourquoi ne laissez-vous pas mon EA évaluer tous les critères de décision comme je le fais ?
Une fois que vous aurez pris en compte tous les critères dans votre EA, vous réduirez considérablement les erreurs de logique...

Prenez pour règle de décrire d'abord toute la logique de tel ou tel bloc de programme sur un morceau de papier (il n'y a rien de mal à cela, au contraire - cela aide),
et ensuite de l'implémenter dans le code.

 
artmedia70:

1. Vérifié si un mandat doit être installé, si oui

2. Vérifiez le nombre de commandes existantes déjà en place, si oui, alors...

3. Vérifie le temps écoulé depuis l'ordre précédent (ou tout autre critère de délai), si oui...

4. Commande passée.

En général, ça donne quelque chose comme ça...
Bien que... chacun de ces points comprend également diverses vérifications nécessaires pour corriger les paramètres de réglage de la commande (pour éviter qu'une erreur ne revienne du DC)

Merci pour votre réponse, mais l'algorithme est écrit en russe, mais en mql, je ne suis pas fort, au moins une astuce sur les fonctions qui ont fixé le nombre (le nombre de prescription dans les paramètres) d'ordres ouverts de vente/achat, et ensuite le signal pour interdire de placer un sellstop/buystop.

//----------------------------------------------------------------------- проверка установленных стоп ордеров

double StopOrderUp,StopOrderDn,price,MinBuyOrder=1000000000,MaxSellOrder,OldBuyOrder,OldSellOrder,OldBuyLot,OldSellLot;

int TicketUp,TicketDn;

TimeOllOpenBuy=0;TimeOllOpenSell=0;

double OOL_BUYSTOP,OOL_SELSTOP;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{ price = OrderOpenPrice();

if (Magic==OrderMagicNumber() && OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUYSTOP ) {StopOrderUp = price; TicketUp=OrderTicket(); OOL_BUYSTOP=OrderLots();}

if (OrderType()==OP_SELLSTOP) {StopOrderDn = price; TicketDn=OrderTicket(); OOL_SELSTOP=OrderLots();}

if (OrderType()==OP_BUY )

{ TimeOllOpenBuy = TimeOllOpenBuy + TimeCurrent()-OrderOpenTime();

if (MinBuyOrder > price) MinBuyOrder = price;

OldBuyOrder=price;

OldBuyLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Bay "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Bid);

ObjectSet(NameLine, OBJPROP_COLOR,LightSkyBlue);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Bid,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

if (OrderType()==OP_SELL)

{ TimeOllOpenSell = TimeOllOpenSell + TimeCurrent()-OrderOpenTime();

if (MaxSellOrder < price) MaxSellOrder = price;

OldSellOrder=price;

OldSellLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Sell "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Ask);

ObjectSet(NameLine, OBJPROP_COLOR,Pink);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Ask,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

}

}

}

if (MinBuyOrder==1000000000 && MaxSellOrder==0 && OOL_BUYSTOP!=OOL_SELSTOP)//если серия закрылась

{

DELETEORDERS();

}
 
Roman.:

Je teste les EAs sur les prix d'ouverture d'une nouvelle barre (pour cela je dois spécifier dans le code de l'EA le contrôle de la formation d'une nouvelle barre)
J'essaie de modifier les arrêts de manière tic-tac. Roman, quels sont les inconvénients de cette modification, en dehors des flèches de modification manquantes ?
 

lorsque l'on colle l'indicateur, le terminal se bloque et écrit la même chose dans les journaux : unknown subwindow number -1 for ObjectCreate function.

J'ai l'index d'une fenêtre avec le nom de cet indicateur dans tous les ObjectCreate(x=WindowFind(short_name) ; ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0) ;)

Ça a toujours marché avant... Je ne comprends pas pourquoi c'est comme ça.

 
eddy:

Lorsque j'insère un indicateur, le terminal se bloque et écrit la même chose dans le journal : 15:18:16 RSI EURUSD,M15 : unknown subwindow number -1 for ObjectCreate function (numéro de sous-fenêtre inconnu -1 pour la fonction ObjectCreate).

J'ai un index d'une fenêtre avec le nom de cet indicateur dans tous les ObjectCreate (WindowFind(indikator_name), par exemple, ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0) ;

ça a toujours marché avant... Je ne comprends pas pourquoi c'est comme ça.

C'est peut-être parce que ObjectCreate est appelé depuis init(). Dans ce cas, la recherche de la fenêtre peut retourner -1 même si le nom de l'indicateur est correct.
 
C'est ce qu'il fait... Merci.
 
Je ne peux pas le comprendre.
2011.03.07 15:49:40     2011.01.19 10:50  RSI-тралинг EURUSD,H1: OrderSend error 131

C'est sur Alpari... avec un spread flottant... mais le spread fixe fonctionne bien...

J'ai lu l'erreur, j'ai mis tous les volumes et 1 lot et 0.1 lot et 0.01 lot.....pis la même erreur((((((

 
Vovo4ka:
Je ne peux pas le comprendre, il dit.

C'est sur Alpari... avec un spread flottant... mais le spread fixe fonctionne bien...

J'ai lu l'erreur, j'ai mis tous les volumes et 1 lot et 0.1 lot et 0.01 lot.....pis la même erreur((((((

Sur un code de l'erreur, vous pouvez apprendre la direction dans laquelle il faut creuser. Mais sans le code, personne ne pourra vous dire d'où vient cette erreur.

 
Vovo4ka:
Je ne peux pas le comprendre.

C'est sur Alpari... avec un spread flottant... mais le spread fixe fonctionne bien...

J'ai lu l'erreur, j'ai mis tous les volumes et 1 lot et 0.1 lot et 0.01 lot.....pis la même erreur((((((


Écrivez le code.
Raison: