Comment coder ? - page 120

 
denis68:
matricebiz que voulez vous dire par enlever ces deux lignes ; et comment le faire, je n'arrive pas à entrer dans le code de l'indicateur AC que j'ai essayé,

Vous ouvrez Accelerator.mq4 dans MetaEditor (c'est dans votre dossier Indicateurs) et mettez // devant ces deux lignes puis enregistrez sous un nouveau nom AcceleratorMod.mq4 et cliquez sur compiler.

Dossiers :
 
hiachiever:
Non, ce n'est pas correct.

Dans la boucle for, vous commencez à 6 et décrémentez jusqu'à 1. Cela signifie que dans la dernière boucle que la boucle for exécute, elle effectue la vérification "if (i == 1) qqeacross = True ;". Le résultat final est que la sortie sera vraie si qqeacross s'est produit.

Le seul problème que cela peut présenter est que qqeacross a été mis à true dans une boucle précédente. Pour résoudre ce problème, vous devez définir qqeacross = false ; avant la boucle for. De cette façon, vous pouvez vous assurer que si qqeacross = true, alors il a été défini par la boucle qui vient de se terminer.

Merci,

hiachiever

Donc même s'il est dit "if (i == 1) qqeacross = True ;" et qu'ensuite i=4 (à cause du compte à rebours), qqeacross sera toujours = True ?

 

Merci hiachiever !

hiachiever:
La façon de le faire est de créer une variable sur la portée globale (c'est-à-dire avant init).

Par exemple,

int BarCount ;

int init ()

Ensuite, dans votre code de stop loss, utilisez ce qui suit :

if (BarCount<Bars)

{

SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0)) ;

StopLossBars++ ;

BarCount=Bars ;

}

Ceci incrémentera StopLossBars de 1 à chaque nouvelle barre.

Le seul autre ajout à votre code serait de réinitialiser 'StopLossBars' à sa valeur par défaut initiale lorsqu'une nouvelle transaction est ouverte.

Merci,

Hiachiever

Merci, hiachiever, c'est très gentil de votre part de m'aider, mais j'aimerais vous demander une autre petite faveur.

Je pense avoir compris le fonctionnement de votre code et je suis sûr de pouvoir le copier dans mon EA . Je ne sais pas comment remettre les StopLossBars à leur valeur par défaut. C'est le code à la fin de l'EA pour aller long ou court :

void goLong()

{

int ticket = OrderSend(Symbol(),OP_BUY,GetLots(100),Ask,maxSlippage,0,0,"Long",MagicNumber,0,Green);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

}

void goShort()

{

int ticket = OrderSend(Symbol(),OP_SELL,GetLots(100),Bid,maxSlippage,0,0,"Short",MagicNumber,0,Red);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

}

double stopLoss(int ordertype)

Pourriez-vous avoir l'amabilité de m'aider avec un code pour réinitialiser les StopLossBars, s'il vous plaît ?

Merci encore.

 

matrixebiz j'ai fait cela maintenant je ne peux pas compiler mon ea quand j'ai ajouté les lignes suivantes à mon ea

double ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1) ;

double ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1) ;

double ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2) ;

double ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2) ;

bool acbuy = ac2==0 && ac11==0 ; // Le rouge se transforme en chaux

bool acsell = ac1==0 && ac22==0 ; // La chaux se transforme en rouge

Je reçois 12 erreurs : La variable AC n'est pas définie :

et je voudrais vous remercier pour votre aide

 

Je suppose que StopLossBars est une variable globale qui est définie par les entrées de l'utilisateur, non ?

Eh bien, ce que je ferais, c'est quelque chose comme ça.

Faites en sorte que la variable d'entrée de l'utilisateur soit quelque chose comme gStopLossBars puis, dans votre fonction init, assignez-la à votre variable locale comme...

StopLossBars = gStopLossBars ;

Ensuite, utilisez simplement la même affectation dans vos fonctions d'achat et de vente pour réinitialiser StopLossBars.

Vous comprenez ?

J'espère que cela vous aidera.

Lux

 

Ac+ao+psar

Bonjour à tous,

Quelqu'un peut combiner AC+AO+PSAR pour devenir un nouvel indicateur avec alerte/email ? Veuillez m'envoyer un message. Merci à vous

 
luxinterior:
Je suppose que StopLossBars est une variable globale qui est définie par les entrées de l'utilisateur, n'est-ce pas ?

Eh bien, ce que je ferais, c'est quelque chose comme ça.

Faites en sorte que la variable d'entrée utilisateur soit quelque chose comme gStopLossBars puis, dans votre fonction init, assignez-la à votre variable locale comme...

StopLossBars = gStopLossBars ;

Ensuite, utilisez simplement la même affectation dans vos fonctions d'achat et de vente pour réinitialiser StopLossBars.

Vous comprenez ?

J'espère que cela vous aidera.

Lux

C'est tout à fait logique. Merci beaucoup.

 

Comment puis-je détecter le début d'une nouvelle bougie ?

S'il vous plaît, quelqu'un peut-il me donner des conseils sur la façon de créer un EA qui passe un ordre en attente lorsque la nouvelle barre commence (TF quotidien) ?

merci

 
: : salut ! vérifiez le code à l'intérieur de cet indicateur... (pour votre temps d'ouverture seulement, ce n'est pas un EA)
tcl:
s'il vous plaît quelqu'un peut me donner quelques conseils comment puis-je créer un EA qui fait un ordre en suspens quand la nouvelle barre commence (TF quotidien) ? merci.
 

Quelqu'un peut-il empêcher que cela tourne en boucle ?

void BEM ()

{

int pips ;

for (int k=0 ; k<OrdersTotal ();k++)

{

OrderSelect(k, SELECT_BY_POS, MODE_TRADES) ;

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

{

pips = (Bid - OrderOpenPrice())/Point ;

si ((pips >= BE) && (OrderStopLoss() < OrderOpenPrice()))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()+ 12*Point, OrderTakeProfit (), 0, LightBlue) ;

}

}

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

{

pips = (OrderOpenPrice() - Ask)/Point ;

si ((pips >= BE) && (OrderStopLoss() > OrderOpenPrice()))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()- 12*Point, OrderTakeProfit (), 0, Pink) ;

}

}

}

}

Raison: