Comment coder ? - page 170

 
Roger09:
Regardez

double NormalizeDouble( double valeur, int chiffres)

Si vous mettez digits=2, vous pouvez voir ce que vous voulez.

Salut,

Je pense que je n'ai pas été très clair. Par exemple :

- Si le prix actuel est de 1.3756, le code devrait retourner 56

- Si le prix actuel est 99.22, le code devrait retourner 22

- Si le prix actuel est de 1,4499, le code doit renvoyer 99.

En fait, j'essaie de renvoyer la valeur des deux derniers chiffres, que la cotation soit à 4 ou 2 décimales.

NomalizeDouble n'arrondit le prix qu'au nombre de chiffres spécifié.

Quelqu'un a une idée ?

 
musical:
Salut,

Je pense que je n'ai pas été très clair. Par exemple :

- Si le prix actuel est de 1.3756, le code devrait retourner 56

- Si le prix actuel est de 99.22, le code devrait renvoyer 22

- Si le prix actuel est de 1,4499, le code doit renvoyer 99.

En fait, j'essaie de renvoyer la valeur des deux derniers chiffres, que la cotation soit à 4 ou 2 décimales.

NomalizeDouble ne fait qu'arrondir le prix à la place des chiffres spécifiés.

Quelqu'un a une idée ?

ОК

double lasttwonumbers=(Bid-MathFloor(Bid/(Point*100))*Point*100)/Point ;

 
1Dave7:
Comment créer un EA qui fermera tout ordre de ticket ouvert de plusieurs EA si le SL est de 10 Pips ou plus ?

Dave

<<<

Myfxidea est un service de graphiques en chandeliers et fournit un conseiller expert pour mt4.

 
Roger09:
ОК double lasttwonumbers=(Bid-MathFloor(Bid/(Point*100))*Point*100)/Point ;

Cela fonctionne comme un charme. Merci pour votre aide.

 

Aide avec Trailling Stop / 1 Risque ou Position M

Bonjour à tous,

J'ai essayé de chercher sur le forum une solution à mon problème :

Au début de mon EA :

//---- buy conditions

if(Ask > mybuyconditions)

{

ticket=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-lowestof10bars),((BBupper-BBlower)/(Ask-lowestof10bars))*1000,"Einstieg 1",magic+1,0,Green);

}

//---- sell conditions

if(Bid < mysellconditions)

{

ticket=OrderSend(Symbol(),OP_SELL,LotsShort(),Bid,Spread,Ask+(highestof10bars-Bid),((BBupper-BBlower)/(highestof10bars-Bid))/100,"Einstieg -1",magic-1,0,Red);

}

//----[/CODE]

Stopploss: its easy 10 bars hi/lo

Takeprofit: here i write my formula for my Trailingstop, and that is:

Take the differenz of BBupper - BBlower at the order open time. Then divide by StopLoss in Pips and you have an Factor. Then take the actual BB differenz and divide it by this Faktor. NOW WE HAVE OUR VOLA BB TRAILINGSTOPP!!!!!

SO, my big problem is now to save this FAKTOR!!!! I saved it in th Takeprofit of Ordersend, it works but it is not right!!!!!

And know the 2te Question:

Position Management:

so my order is open and i have my trailing stopp that trails : So and now if the trailingstop is > orderopenprice send next ORDER!!! It's logical because so i can always sicure to risk just my 1 R Risk.

.... if Trailingstopp is > orderopenprice of secondOrder send 3te order.

HERE MY EXAMPLES:

for(int i = (OrdersTotal()-1); i >= 0; i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 2",magic+2,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2 && CalculateCurrentAfterOrders(Symbol()) <= 1)

{

if(OrderStopLoss()<Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 3",magic+3,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3 && CalculateCurrentAfterOrders(Symbol()) <= 2)

{

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

}

}

}

[CODE] if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

{

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 2",magic+2,0,Green);

return;

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 3",magic+3,0,Green);

return;

}

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(CalculateCurrentOrders(Symbol()) == 0)

{

OrderClose(ticket1,OrderLots(),Ask,Spread,Red); return;

}

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3)

{

OrderClose(i,OrderLots(),Ask,Spread,Red); return;

}

J'espère que quelqu'un pourra m'aider avec ce problème !!!!! Merci à tous.

 

Ajout de code Lorsque la position va contre vous "x" pips ajouter lot supplémentaire avec fixedtpsl

Bonjour

J'ai fait beaucoup d'études et j'ai trouvé qu'il pourrait être bon d'ajouter cette fonction à mon EA.

Quand une position va à l'encontre de "20" pips, ajouter un lot supplémentaire de "0.1" avec un TP et un SL propres.

Est-il possible de réaliser cette fonction ?

De plus, cette EA est très bonne mais elle n'ouvre que des BUYS.

Il faudrait peut-être ajouter une logique de "vente".

S'il vous plaît, aidez-moi

Dossiers :
_v1.2.mq4  6 kb
 

Besoin d'aide pour un problème de programmation

Comment programmer Metatrader 4 pour qu'il quitte la position précédente et ouvre la nouvelle position sur la MÊME barre si vous définissez EachTickMode sur false ? Lorsque vous définissez EachTickMode sur True, il le fait automatiquement, mais lorsque vous le définissez sur false, il ferme la position précédente sur une barre et attend la barre suivante pour ouvrir la nouvelle position. J'utilise la

H4 et il est inacceptable d'attendre 4 heures de plus pour ouvrir une nouvelle position après que le signal ait été donné. Mon système est trop sensible pour utiliser EachTickMode=True. Toute aide que vous pouvez m'apporter à ce sujet serait grandement appréciée.

 

Aide nécessaire pour dépasser l'erreur 130 de la commande

Voici ma fonction d'achat. Si je donne à la variable order_type la valeur 1 (pour un ordre au marché), elle fonctionne, et je sais donc que mes fonctions stoploss et takeprofit fonctionnent. Le problème doit se situer dans la détermination du prix pour l'ordre op_buylimit. J'essaie de calculer le prix de mon ordre en diminuant Ask d'un pourcentage de la longueur (pct_of_length) du corps de la bougie (à la mesure 1). J'ai essayé un grand nombre de variations de codage (certaines incluant NormalizeDouble), mais je n'arrive pas à dépasser l'erreur 130. Quelqu'un peut-il m'aider ? J'utilise IBFX, soit dit en passant.

Merci d'avance !

bool place_buy_order() {

int ticket, length_in_pips, offset_in_pips ;

double buy_limit_price ;

// pct_de_longueur est un entier externe, actuellement fixé à 10

si ( order_type == 2 && pct_of_length > 0 )

{

length_in_pips = MathAbs(High[1]-Low[1]) * MathPow(10,Digits) ;

offset_in_pips = MathRound(length_in_pips * (pct_of_length/100)) ;

buy_limit_price = Ask - offset_in_pips * Point ;

ticket = OrderSend(Symbol(),OP_BUYLIMIT,LotSize(),buy_limit_price,0,stoploss("b",buy_limit_price),takeprofit("b",buy_limit_price),"",MAGICMA,0,Blue) ;

}

else

// ordre au marché

ticket = OrderSend(Symbol(),OP_BUY,LotSize(),Ask,Slippage,stoploss("b",Ask),takeprofit("b",Ask),"",MAGICMA,0,Blue) ;

if ( ticket == -1 ) return(false) ; else return(true) ;

}

 

Avez-vous essayé d'imprimer les différentes variables, TP, SL etc., et de voir si elles sont correctement définies ? Cela pourrait vous donner une idée de l'origine du problème.

Lux

 
stocktrader24202:
Comment pouvez-vous programmer Metatrader 4 pour quitter la position précédente et ouvrir la nouvelle position sur la MÊME barre si vous définissez EachTickMode à false ? Lorsque vous définissez EachTickMode sur True, il le fait automatiquement, mais lorsque vous le définissez sur false, il ferme la position précédente sur une barre et attend la barre suivante pour ouvrir la nouvelle position. J'utilise l'échelle de temps H4 et attendre 4 heures de plus pour ouvrir une nouvelle position après que le signal ait été donné est inacceptable. Mon système est trop sensible pour utiliser EachTickMode=True. Toute aide que vous pouvez m'apporter à ce sujet serait grandement appréciée.

EachTickMode est une variable que le codeur original de l'EA a inclus SPÉCIFIQUEMENT pour que vous puissiez choisir d'ouvrir sur la même bougie OU d'ouvrir sur la suivante.

Il semble que l'EA fait EXACTEMENT ce pour quoi il a été conçu, donc je ne suis pas sûr de savoir quel est votre problème.

Vous dites que cela fonctionne comme vous le souhaitez lorsque vous mettez la variable à true, alors quel est le problème ? Il suffit de mettre la variable à true.

Lux

Raison: