Comment coder ? - page 175

 

Votre système semble un peu fou......

extern double Lots=0.1;

extern int TP=50;

extern int SL=50;

extern int timeframe=1;

extern bool close=false;

extern int Slippage=2;

extern int Magic=46151;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

datetime LastTradeTime = 0;

int start()

{

int time=60*timeframe;

if(LocalTime()-LastTradeTime > time) {

if(close==true) {

if(OrdersTotal()!=0) {

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

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderType()==OP_SELL && OrderMagicNumber()==Magic) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Green ); }

if(OrderType()==OP_BUY && OrderMagicNumber()==Magic) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, Red ); }

} } }

OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask - SL * Point, Ask + TP * Point, NULL, Magic, 0, Green);

OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Bid + SL * Point, Bid - TP * Point, NULL, Magic, 0, Red);

LastTradeTime = LocalTime(); }

return(0);

}

Si "close" est vrai, il fermera les ordres ouverts à la fin de l'intervalle de temps (dans ce cas, 1 minute). SL/TP=100 signifie 10pips chez un courtier à 5 chiffres.

A propos, je ne suis pas sûr qu'il ouvrira les deux ordres immédiatement.

Est-il possible de fermer et d'ouvrir (ou d'ouvrir 2 positions) en même temps ?

Cela fonctionne bien dans les backtests bien sûr, mais je ne sais pas si cela fonctionne sur un compte démo/live.

 

Je n'ai JAMAIS réussi à faire fonctionner cela avec aucun courtier...

j'ai ajouté des délais et un code de confirmation pour vérifier si les ordres ont été fermés et ouverts, sinon réessayez.

même dans ce cas, cela ne fonctionne toujours pas correctement de manière constante

 

Cela semble être un problème pour de nombreuses stratégies. Quelqu'un a-t-il trouvé une solution à ce problème ?

 

problème de trailing stop

J'ai des paires de yens qui, lorsque j'essaie d'utiliser mon trailing stop, déplacent mon prix à "zéro" après avoir réalisé des bénéfices. Quelqu'un peut-il me dire pourquoi cela se produit et comment y remédier ? L'ordre de suivi fonctionne bien sur les devises à 5 chiffres.

void TrailOrder(int type)

{

si(TrailingStop>0)

{

si(OrderMagicNumber() == MagicNumber)

{

if(type==OP_BUY)

{

si(Bid-OrderOpenPrice()>Point*TrailingStop)

{

si(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(Point*TrailingStop),OrderTakeProfit(),0,Green) ;

}

}

}

if(type==OP_SELL))

{

si((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(Point*TrailingStop),OrderTakeProfit(),0,Red) ;

}

}

}

}

}

}

 
ajk:
J'ai des paires de yens qui, lorsque j'essaie d'utiliser mon stop suiveur, déplacent mon prix à "zéro" après avoir réalisé des bénéfices. Quelqu'un peut-il me dire pourquoi cela se produit et comment y remédier ? L'ordre de suivi fonctionne bien sur les devises à 5 chiffres.

Je pense (ce n'est que mon opinion) que c'est parce que vous avez une fonction et que cette fonction ne sait rien de OrderOpenPrice(), OrderStopLoss() etc. Vous feriez mieux de mettre ce code à l'intérieur de la boucle.

 
ajk:
J'ai des paires de yens qui, lorsque j'essaie d'utiliser mon stop suiveur, déplacent mon prix à "zéro" après avoir réalisé des bénéfices. Quelqu'un peut-il me dire pourquoi cela se produit et comment y remédier ? L'ordre de suivi fonctionne bien sur les devises à 5 chiffres.

Peut-être qu'une utilisation diligente de NormalizeDouble(...) ferait la différence ?

 

comment coder deux indicateurs croisés avec des échelles différentes

comment coder deux indicateurs croisés avec des échelles différentes ?

Je veux de l'aide

 

Je suis prêt à tout essayer. C'est étrange parce que coder guru a codé l'ea et je l'ai modifié. J'ai regardé dans des tonnes d'ea et je n'ai rien trouvé.

 

une suggestion sur la façon d'écrire le code après le

void TrailOrder(int type)

la fonction d'appel ?

Peut-être enlever complètement la fonction et utiliser un e externe à la fin de la fonction...argh> !

 
ajk:
Une suggestion sur la façon d'écrire le code après la fonction

void TrailOrder(int type)

fonction d'appel ?

Peut-être retirer complètement la fonction et utiliser un e externe à la fin de l'EA...argh> !

Si vous voulez, je peux réparer votre EA. Envoyez-le moi sur PM.