Comment coder ? - page 92

 
delvinja:
J'ai essayé pendant les trois derniers jours d'obtenir ce conseiller expert pour exécuter des trades longs dans mt4 sans succès. il exécute seulement des trades courts même si le signal_buy est là. s'il vous plaît quelqu'un pourrait-il jeter un coup d'oeil à ce code et le corriger pour moi ou me dire quoi faire. je suis nouveau à la programmation et l'a construit à partir d'un constructeur de stratégie en ligne. merci d'avance ! Le code est joint.
double ... = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);[/PHP]

I am not sure about the -3 shift parameter : it shift the curve to the left, so the current bar is undefinited. Try to replace all -3 by 0 to see if the buy orders are triggered.

I would replace

double Var1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Var2 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Var3 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double Var4 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current + 0);

double Buy1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Buy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double Sell1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Sell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current + 0);

double CloseBuy1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double CloseBuy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double CloseSell1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double CloseSell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

by

[PHP]double Buy1_1 = iMA(NULL, 0, 3, 0, MODE_SMA, PRICE_CLOSE, Current);

double Buy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

double Sell1_1 = Buy1_1;

double Sell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current);

double CloseBuy1_1 = Buy1_1;

double CloseBuy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

double CloseSell1_1 = Buy1_1;

double CloseSell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

Rem :

- Var1,2,3,4 ne sont pas utilisées.

- Les deux CloseBuy1_2 et CloseSell1_2 sont les mêmes : l'un d'eux est probablement erroné (MODE_LOWER).

 

Besoin d'aide avec le code

Michel, merci beaucoup pour ton aide, ça a parfaitement fonctionné ! Vous êtes les meilleurs, je peux enfin me reposer. Je vous ferai savoir comment mes tests se sont déroulés.

oh au fait, êtes-vous en train de dire que -3 ne sera jamais en mesure de travailler dans ce conseiller expert ? merci encore.

 
delvinja:
... oh au fait, dites-vous que -3 ne sera jamais en mesure de travailler dans ce conseiller expert ? merci encore.

Pour tout vous dire, je n'ai jamais vraiment compris l'utilité de ce décalage : si vous voulez connaître la valeur d'un indice 3 barres avant la barre actuelle, il suffit d'utiliser 3 comme décalage, mais le dernier ; le premier ne fait que décaler le dessin de la courbe, et si vous utilisez une valeur négative, c'est comme si le passé connaissait le futur...

En tout cas, je serais heureux que quelqu'un m'explique son utilisation !

Mais pour répondre à votre question, essayez de connaître la stratégie exacte que vous voulez suivre, d'où vient ce -3 ?

 

bonjour

sur cet expert je voudrais modifier tous les sl en last orders sl comme tp mais je n'y arrive pas.

aidez-moi s'il vous plaît

Dossiers :
javadea.mq4  9 kb
 

Qu'est-ce que j'ai fait ?

J'ai besoin d'aide pour coder dans MT4

J'ai un peu de code ci-dessous :

StopLoss=EMAtrend-iClose(NULL,0,1) ;

TakeProfit=StopLoss

Si(EMAshort>EMAlong && EMAshort_prev<EMAlong_prev)

{

OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Ask+StopLoss*Point,Bid+TakeProfit*Point, "Buy at close price",10000,0,Green) ;

}

If(EMAshortEMAlong_prev)

{

OrderSend(Symbol(),OP_SELL,Lots,Bid,0,StopLoss,Bid+TakeProfit*Point, "Vendez au prix de clôture",11000,0,Rouge) ;

}

L'idée était la suivante

1. Ouvrir un ordre au prix de clôture lorsque les critères sont remplis ;

2. Je veux que l'EMAtrend soit le niveau stoploss ;

3. La distance entre l'EMAtrend et la barre de prix de clôture sera la distance pour le takeprofit du prix ouvert.

J'ai essayé le code ci-dessus mais rien ne se passe et il y a une erreur 130.

Veuillez m'aider.

 

Besoin d'aide avec le code

Bonjour à tous

J'essaie de compiler un programme électronique, mais l'erreur suivante apparaît :

'TradeSymbol' - expression on global scope not allowed I:\Program Files\MetaTrader - Alpari\experts\TTL.mq4 (65, 34)[/CODE]

Now the part of the ea causing this is right at the start of the code :

string TradeSymbol; TradeSymbol=Symbol();

If I block this out it comes up with errors for the following bit of code :

[CODE] if(TotalTradesThisSymbol(TradeSymbol)==0) { int BS=0,SS=0,BL=0,SL=0; }

if(TotalTradesThisSymbol(TradeSymbol)>0) {

for(cnt=0;cnt<total;cnt++) {

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()== Symbol) {

if(OrderMagicNumber()==11) { BS=OrderTicket(); }

if(OrderMagicNumber()==22) { SS=OrderTicket(); }

if(OrderMagicNumber()==33) { BL=OrderTicket(); }

if(OrderMagicNumber()==44) { SL=OrderTicket(); }

}//end if(OrderSymbol

}//end for

}//end if */

Ce que je veux savoir, c'est s'il existe un moyen facile de résoudre ce problème.

Je ne suis pas doué pour coder, seulement pour copier et coller.

Merci d'avance

Basza

 
basza:
Bonjour à tous

J'essaie de faire compiler un programme électronique, mais l'erreur suivante se produit :

'TradeSymbol' - expression on global scope not allowed I:\Program Files\MetaTrader - Alpari\experts\TTL.mq4 (65, 34)[/CODE]

Now the part of the ea causing this is right at the start of the code :

string TradeSymbol; TradeSymbol=Symbol();

If I block this out it comes up with errors for the following bit of code :

[CODE] if(TotalTradesThisSymbol(TradeSymbol)==0) { int BS=0,SS=0,BL=0,SL=0; }

if(TotalTradesThisSymbol(TradeSymbol)>0) {

for(cnt=0;cnt<total;cnt++) {

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()== Symbol) {

if(OrderMagicNumber()==11) { BS=OrderTicket(); }

if(OrderMagicNumber()==22) { SS=OrderTicket(); }

if(OrderMagicNumber()==33) { BL=OrderTicket(); }

if(OrderMagicNumber()==44) { SL=OrderTicket(); }

}//end if(OrderSymbol

}//end for

}//end if */

Ce que je veux savoir, c'est s'il existe un moyen facile de résoudre ce problème.

Je ne suis pas doué pour le codage, je ne fais que copier et coller.

Merci d'avance

Basza

Vous pouvez définir TradeSymbol en tant que chaîne de caractères sur le scoop global, mais vous ne pouvez pas y évaluer la fonction Symbol(). Remplacez donc tous les "TradeSymbol" par "Symbol()", ou attribuez la valeur dans la fonction init() ou start() comme ceci :

void Init(){TradeSymbol=Symbol();}
 

aide à la programmation

Bonjour, j'ai essayé de programmer un ea, et j'ai suivi votre cours (très intéressant !).

Je sais très bien comment programmer en java et un peu en c++.

J'ai essayé de programmer une ea avec des indicateurs de tendance cérébrale, l'idée est la suivante

quand les DOTs brainTrend2stop et braintrend1stop sont présents acheter (et vice versa)

mais si j'appelle la fonction iCustom comme ceci

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1) ;

je n'obtiens que la valeur de l'indicateur dans la barre actuelle.

Y a-t-il un moyen de rendre cette valeur booléenne ? J'aimerais écrire une fonction comme suit

buy=true

BuyCondition = (IndicatorName1=true && IndicatorName2=true) ;

quelqu'un peut-il m'aider s'il vous plaît ???

 

Contrôler si un ordre d'entrée est exécuté...

j'ai un EA qui ouvre et gère la position, mais parfois l'indikateur donne le même signal multiple et l'EA ouvre chaque fois que ce signal sort une nouvelle position - mais je ne veux pas une deuxième ou troisième et ainsi de suite et sur la position, je veux seulement la première - est-il possible que l'EA vérifie la position ouverte sur la base du nombre magique et de la paire pour éviter de telles entrées multiples ?

 
payback:
Bonjour, j'ai essayé de programmer une ea, et j'ai suivi votre cours (très intéressant !).

Je sais très bien comment programmer en Java et un peu en C++.

J'ai essayé de programmer une ea avec des indicateurs de tendance cérébrale, l'idée est la suivante

quand les DOTs brainTrend2stop et braintrend1stop sont présents acheter (et vice versa)

mais si j'appelle la fonction iCustom comme ceci

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1) ;

je n'obtiens que la valeur de l'indicateur dans la barre actuelle.

Y a-t-il un moyen de rendre cette valeur booléenne ? J'aimerais écrire une fonction comme suit

buy=true

BuyCondition = (IndicatorName1=true && IndicatorName2=true) ;

quelqu'un peut-il m'aider s'il vous plaît ?
BuyCondition = BuyValueCurrent1 != EMPTY_VALUE && BuyValueCurrent2 != EMPTY_VALUE;