ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests
Répondre • Page 1 sur 1

Un seul trade par bougie - mql4

par Gacanga » 24 mars 2017 11:31

Bonjour à tous,

Un peu absent ces derniers temps car je finalise un petit robot.

Et là je bloque sur une bétise que je n'arrive pas à mettre en oeuvre et peut-être quelqu'un pourra-t-il m'aider.

Voilà je souhaiterai que mon robot ne passe qu'un seul trade par Bougie et je n'arrive pas à le coder.

Je code en MQL4 (metatrader)

Quelqu'un aurait-il une piste ?

D'avance merci

Re: Un seul trade par bougie - mql4

par Edd » 24 mars 2017 14:12

Salut,
tu peux utiliser la fonction "Bars" qui renvoit le nombre de bougies présentes dans le graphique.

int bougie = 0;

if (Bars > bougie)
{
ordre...
bougie=Bars
}


Tu mets en variable globale bougie = 0 :
la variable est initialisée à 0 quand tu mets en route l'EA.

Dans les conditions de ton ordre, Bars > bougie;
ton ordre est exécuté uniquement si il y plus de barres sur le graphique que de barres enregistrées dans la variable "bougie"

Juste après l'execution de ton ordre, bougie=Bars :
la variable "bougie" à donc la même valeur que le nombre de barres sur le graphique. Ce qui bloque les nouveaux ordres.

la valeur de "Bars" augmente de 1 à chaque nouvelle barre. Donc tant qu'il n'y a pas de nouvelle barre, pas de nouvel ordre.

voilu

Re: Un seul trade par bougie - mql4

par Gacanga » 25 mars 2017 14:19

grand merci

je vais tester ça.

Re: Un seul trade par bougie - mql4

par Gacanga » 25 mars 2017 15:30

ça fonctionne impeccable, tu es mon idole du jour !!

Un grand merci

Re: Un seul trade par bougie - mql4

par jefsar » 26 mars 2020 09:16

Bonjour,

Je souhaiterai rebondir sur ce post, car j'ai un pb avec un expert advisor que j'ai récupéré sur internet, qui fonctionne bien dans l'ensemble, mais je voudrais insérer une fonction qui bloque l'Expert si un trade a déjà eu lieu dans une barre.
Je suis un peu novice en programmation et ne sais ou insérer ces éléments dans mon code.

Voici ci dessous un exemple de mon code.

Merci d'avance :

extern int MagicNumber=1;
extern double Lots =0.01;
extern double StopLoss=120;
extern double TakeProfit=100;
extern int TrailingStop=0;
extern int slippage=3;
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{
double MyPoint=Point;
if(Digits==3 || Digits==5) MyPoint=Point*10;

double TheStopLoss=0;
double TheTakeProfit=0;
double MoyenneMobileFast=iMA(NULL,0,48,0,MODE_SMA,PRICE_OPEN,0);
double DerniereMoyenneMobileFast=iMA(NULL,0,48,0,MODE_SMA,PRICE_OPEN,1);
double MoyenneMobileSlow=iMA(NULL,0,72,0,MODE_SMA,PRICE_OPEN,0);
double DerniereMoyenneMobileSlow=iMA(NULL,0,72,0,MODE_SMA,PRICE_OPEN,1);
if( TotalOrdersCount()==0 )

{
int result=0;
if((DerniereMoyenneMobileFast<DerniereMoyenneMobileSlow)&&(MoyenneMobileFast>MoyenneMobileSlow)) // Here is your open buy rule
{
result=OrderSend(Symbol(),OP_BUY,Lots,ask,slippage,0,0,"EA Generator http://www.ForexEAdvisor.com",MagicNumber,0,Blue);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=10;
if(TakeProfit>0) TheTakeProfit=ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
if((DerniereMoyenneMobileFast>DerniereMoyenneMobileSlow)&&(MoyenneMobileFast<MoyenneMobileSlow)) // Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_SELL,Lots,Bid,slippage,0,0,"EA Generator http://www.ForexEAdvisor.com",MagicNumber,0,Red);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=10;
if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
}

for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber
)
{
if(OrderType()==OP_BUY)
{
if((DerniereMoyenneMobileFast>DerniereMoyenneMobileSlow)
&&(MoyenneMobileFast<MoyenneMobileSlow)) //here is your close buy rule
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red);
}
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{
if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else
{
if((DerniereMoyenneMobileFast<DerniereMoyenneMobileSlow)
&&(MoyenneMobileFast>MoyenneMobileSlow)) // here is your close sell rule
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red);
}
if(TrailingStop>0)
{
if((OrderOpenPrice()-ask)>(MyPoint*TrailingStop))
{
if((OrderStopLoss()>(ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}

int TotalOrdersCount()
{
int result=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
if (OrderMagicNumber()==MagicNumber) result++;

}
return (result);
}

Sujets similaires
Bougie Rouge ou Bougie Orange
Fichier(s) joint(s) par HellionReign » 07 mars 2019 05:30 (3 Réponses)
Conseils prise de position : 1ère bougie ou 2ème bougie
Fichier(s) joint(s) par alfbeaum » 27 mai 2019 17:14 (27 Réponses)
Trade à la bougie
Fichier(s) joint(s) par Kelax » 20 sept. 2019 23:55 (522 Réponses)
Backtest vs Trade à la bougie
par Akainu » 21 févr. 2020 09:34 (5 Réponses)
Début bougie Timestamp ou premier trade ?
par Amarantine » 29 oct. 2022 23:38 (1 Réponses)
Recherche dev MQL4
par Amarantine » 18 sept. 2014 11:59 (2 Réponses)
Programmation en MQL4 : récupérer le contenu d'un email/SMS
par oscar » 15 févr. 2017 18:18 (3 Réponses)
MQL4 - MagicNumber et Trailing Stop
par Gacanga » 04 avr. 2017 12:39 (5 Réponses)
Aide Technique MQL4
par Gacanga » 06 oct. 2017 17:43 (2 Réponses)
Aide mql4, grrr !!
par BilouZ36 » 26 oct. 2017 15:40 (5 Réponses)