Comment coder ? - page 54

 

Autre question

Maintenant, mon EA ressemble à ceci

if(FastMA2 SlowMA1)

{

ClosePositions() ;

OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,Ask+(45*Point),"",MAGIC,0,Blue) ;

return(0) ;

Je veux changer comme ceci

1. 15minutus timeflame se produit signe d'achat

2. si alors 5minutes timeflame MA cross buy sign déjà ,aussi

ClosePosition. et obtenir une nouvelle position

si alors 5minutes timeflame MA change signe de vente déjà

attendez 5 minutes timeflame change le signe d'achat ,

alors ClosePosition. et obtenir une nouvelle position.

Veuillez me dire comment écrire ce programme.

 
Dossiers :
 

Bonjour

Je suis à la recherche d'un peu d'aide. J'ai un EA que j'utilise en démo et avec lequel j'apprends à coder. J'essaie de comprendre comment ajouter un commentaire au système pour me montrer lequel des 4 critères d'entrée a été utilisé pour ouvrir la position. par exemple si long2 a été utilisé, alors montrer le signal long2.

Toute aide serait la bienvenue

merci

Beno

 
Beno:
Bonjour

J'ai besoin d'aide. J'ai un EA que j'utilise en démo et avec lequel j'apprends à coder. J'essaie de comprendre comment ajouter un commentaire au système pour me montrer lequel des 4 critères d'entrée a été utilisé pour ouvrir la position. Par exemple, si le critère long2 a été utilisé, le signal long2 sera affiché.

Toute aide serait la bienvenue

merci

Beno

Une fois que votre condition est remplie et que vous utilisez la commande Ordersend(), insérez simplement une instruction Comment(), Alert() ou Print(). Celle que vous voulez utiliser.

Quelque chose comme ceci :

if ( long2 == true)

{

Ordresend() ;

{

Print(" Signal long2 pris ") ;

}

}

J'espère que cela vous aidera.

 

Merci Wolfe

J'ai dû rire, j'ai mis ce que vous avez suggéré et cela a fonctionné en quelque sorte, mais maintenant je n'ai que le commentaire et aucune position qui s'ouvre.

bool Long = MAofRSI11>MAofRSI21 && MAofRSI12VolHL && RSIndex1HL2 && TrStop0.0 && SDLL && ma<Close[shift] ;

bool Short = MAofRSI11=MAofRSI22 && VolCH>VolHL && RSIndex1HLM && TrStop>Close[shift] && MOMClose[shift] ;

bool Long2 = MAofRSI11>HLM && MAofRSI12HLM && MAofRSI22VolHL && TrStop0.0 && SDLL && ma<Close[shift] ;

bool Short2 = MAofRSI11=HLM && MAofRSI21=HLM && VolCH>VolHL && TrStop>Close[shift] && MOMClose[shift] ;

bool Long3 = RSIndex1-RSIndex2>20<HL2 && TrStop0.0 && SDLL && ma<Close[shift] ;

bool Short3 = RSIndex2-RSIndex1>20>HL1 && TrStop>Close[shift] && MOMClose[shift] ;

bool Long4 = zscore>0.0 && ma<Close[shift] ;

bool Short4 = zscoreClose[shift] ;

buysig = Long || Long2 || Long3 || Long4 ;

sellsig = Short || Short2 || Short3 || Short4 ;

closebuy=sellsig ;

closesell=buysig ;

si (curprof>=AccountBalance()*ProfitExit/100.0) {

exit=true ;

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

remorder=true ;

}

}

void CheckForOpen() {

int res,tr ;

//---- conditions de vente

co=CalculateCurrentOrders(Symbol()) ;

if(sellsig && lastsig!=-1) {

co=CalculateCurrentOrders(Symbol()) ;

si (co==0) {

si ( Short == true)

si ( Short2 == true)

si ( Short3 == true)

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1) ;

Print(" Signal court pris ") ;

Print(" Signal court2 pris ") ;

Print(" Signal court3 pris ") ;

Print(" Signal court4 pris ") ;

}

lastsig=-1 ;

last=Time[0] ;

retour ;

}

//---- conditions d'achat

if(buysig && lastsig!=1) {

co=CalculateCurrentOrders(Symbol()) ;

si (co==0) {

si ( Long == true)

si ( Long2 == true)

si ( Long3 == true)

si ( Long4 == true)

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1) ;

Print(" Signal long pris ") ;

Print(" Signal long2 pris ") ;

Print(" Signal long3 pris ") ;

Print(" Signal long4 pris ") ;

}

last=Time[0] ;

lastsig=1 ;

retour ;

}

}

Corrigé Merci

 

Débogage du code

Comment et où utiliseriez-vous un bout de code comme celui-ci ? J'ai une erreur de division par zéro que je ne parviens pas à résoudre.

extern bool DEBUGGING = true

...

if(DEBUGGING && variableName == 0) Print("CodePoint 1 -- Cette variable est maintenant ", variableName) ;

... plus de code

if(DEBUGGING && variableName == 0) Print("CodePoint 2 -- Cette variable est maintenant ", variableName) ;

... plus de code

if(DEBUGGING && variableName == 0) Print("CodePoint 3 -- Cette variable est maintenant ", variableName) ;

...

 

Pouvez-vous m'aider ? Pourquoi y a-t-il beaucoup d'erreurs dans le code ?

c'est pour calculer SMMA:

for(j=0;j<Bars;j++)

{

for(i=0,sum=0;i<ma_period;i++)

{

sum=sum+Close[j+i] ;

// buffer[j]=(sum-sum/ma_period+Close[j+i])/ma_period ;

}

buffer[j]=(sum-sum/ma_period+Close[j])/ma_period ;

}

ceci est pour calculer le LWMA

for(j=0;j<Bars;j++)

{

for(i=0,sum=0,sum1=0;i<ma_period;i++)

{

sum=sum+Close[j+i] ;

sum1=sum1+Close[j+i]*(j+i);

// tampon[j]=sum/ma_période ;

}

buffer[j]=sum1/sum ;

}

et comment calculer l'EMA ?

 

Question sur les indicateurs

Bonjour à tous.

Je suis bloqué sur une question de programmation. Quelqu'un sait-il comment utiliser le résultat d'un indicateur pour modifier un autre paramètre ? Par exemple, si le stockasti quotidien était supérieur à 20, je voudrais une moyenne mobile de (x). J'ai essayé de faire fonctionner le code ci-dessous mais en vain. Je ne parviens pas à faire fonctionner la commande switch ou if else.

double fourhrUP ;

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1) ;

double daystoch20 = 20 ;

if (daystoch1 > daystoch20) four_hrUP = 5 ;

double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

 
ajk:
Bonjour à tous.

Je suis bloqué sur un problème de programmation. Quelqu'un sait-il comment utiliser le résultat d'un indicateur pour modifier un autre paramètre ? Par exemple, si le stockasti quotidien était supérieur à 20, je voudrais une moyenne mobile de (x). J'ai essayé de faire fonctionner le code ci-dessous mais en vain. Je ne parviens pas à faire fonctionner la commande switch ou if else.

double fourhrUP ;

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1) ;

double daystoch20 = 20 ;

if (daystoch1 > daystoch20) four_hrUP = 5 ;

double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

Où se trouve la variable de votre MA ?

Ceci pourrait peut-être vous aider

double ma4hr=iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift);

si le calcul du stoch est dans la même boucle, disons "for(int shift=limit-1 ; shift>=0 ; shift--)", le code du stoch devrait être le suivant

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,shift+1) ;

CMIIW

 

Un peu d'aide avec un indicateur - Coder's Please Look

Je teste une plateforme de courtier MT4 qui utilise des fractions de pips (pipettes) dans ses cotations : Par exemple sur EURJPY ils cotent 164.381 au lieu de 164.38 - Cela signifie que le spread a une décimale comme 4.1 pips (au lieu de 4).

Quelqu'un peut-il me dire comment MODIFIER le code suivant pour que le spread soit lu correctement ? Actuellement, un écart de 4,1 pips serait lu comme 41,0 dans l'indicateur. Toute aide est appréciée.

Dan

//---- spread

Spread=NormalizeDouble((Ask-Bid)/Point,1) ;

ObjectSetText("Spread Monitor1", "Spread :", 10, "Arial", labelColor) ;

ObjectSetText("Spread Monitor2",DoubleToStr(Spread,1),10, "Arial", clockColor) ;

Raison: