Comment coder ? - page 210

 

Merci beaucoup !!! cockeyedcowboy, c'était vraiment super !!

Maintenant le message d'erreur est parti !

Mais le deuxième indicateur ne s'affiche pas et je ne sais pas pourquoi...

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i) ;

 

Vous avez un problème avec le deuxième tampon parce qu'il n'a pas de données pour les calculs.

Essayez de calculer TOUS les éléments dans Buffer_Mom, puis Buffer_Ma.

Exemple :

void start()

{

int counted_bars=IndicatorCounted();

int limit=Bars-counted_bars;

if(counted_bars>0) limit++;

for(int i=0; i<limit; i++)

{

Buffer_Mom=iMomentum(NULL,Timeframe_Momentum,Periode_Momentum,PRICE_CLOSE,i);

}

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

{

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

}

return(0);

}

Bonne chance.

 

Trouver l'OHLC d'une barre spécifique

Quelqu'un peut-il me dire comment trouver le prix de clôture d'une barre spécifique en utilisant un code MQL ? Puis-je référencer une barre par son heure ?

Par exemple : closing_price_of_bar = Close("04:59:00 AM") ... si seulement c'était aussi simple !

Merci de votre compréhension.

 

salut les amis !

ok j'ai un autre gros problème...

Comment coder cette condition ?

entrer en long ou en short seulement la première fois

(donc si j'ai plusieurs signaux longs qui suivent, l'ea n'entre que la première fois).

J'aimerais que tout le monde puisse m'aider sur ce point.

Voici mon code simple pour la condition d'achat :

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Sadly:
Quelqu'un peut-il me dire comment trouver le prix de clôture d'une barre spécifique en utilisant un code MQL ? Puis-je référencer une barre par son heure ?

c'est-à-dire : closing_price_of_bar = Close("04:59:00 AM") ... si seulement c'était aussi simple !

Merci de votre compréhension.

Essayez ceci :

closing_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59")) ;

 

Acheter ou vendre

Bonjour à tous,

J'ai l'EA d'achat et l'EA de vente qui sont toujours ouverts plus d'une position. J'aimerais avoir de l'aide pour changer ou modifier le code afin de permettre seulement 1(une) position d'achat et 1(une) position de vente et dans 1(une) compte.

Le SL et le TP utiliseront le Price Target, c'est-à-dire que si le prix d'achat a atteint le Price Target, la position sera fermée. De même pour le prix de vente.

J'apprécie l'aide des experts en code de ce forum.

Je vous remercie.

=s21=

Dossiers :
opensell.mq4  2 kb
 

Acheter et vendre

Oooops...

Voici l'EA d'achat.

Dossiers :
openbuy.mq4  2 kb
 

Bonjour, si vous avez besoin qu'une seule commande soit ouverte, vous pouvez simplement ajouter la condition suivante : Si (OrdersTotal()==0).

Ainsi, vos règles pour les ordres d'achat seront quelque chose comme ça :

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

[/CODE]

So you will not get second-third-... orders opened until you current order open.

dr.house7:
hy folks !

ok i have another big problem...

how to code this condition :

enter long or short only first time

(so if i have many following long signal ea enter only at first time)

i'll pay everyone could help me on this

this is my simple code for buy condition:

[CODE]

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Roger09:
Essayez ceci : closing_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59")) ;

Fab ! J'ai dû ajouter une parenthèse fermante supplémentaire afin d'empêcher l'interpréteur de se plaindre d'une erreur, mais ça a bien fonctionné.

Merci, Roger09

 
Avalanche2k:
Bonjour, si vous avez besoin qu'un seul ordre soit ouvert, vous pouvez simplement ajouter la condition suivante : Si (OrdersTotal()==0).

Donc vos règles pour les ordres d'achat seront quelque chose comme ça :

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

Ainsi, vous n'aurez pas de deuxième, troisième,... ordres ouverts avant l'ouverture de votre ordre actuel.

merci Avalanche,

mais ce n'est pas une solution pour moi, parce que j'ai un TP, je n'attends pas la condition contraire

D'autres idées ? Envoyez-moi un message et je vous paierai