Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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.
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
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
BenoUne 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)
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) ;