Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 249
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
Quel genre d'erreur est-ce, je le prends du côté du DC, une mauvaise séance d'entraînement ?
Quel genre d'erreur est-ce, je le prends du côté du DC de mauvais débriefing ?
128
ERR_TRADE_TIMEOUT
Le délai d'attente a expiré
Pièce du manipulateur :
128
ERR_TRADE_TIMEOUT
Délai d'exécution de la transaction expiré
Pièce du manipulateur :
J'ai ces gestionnaires d'erreurs dans mon code, mais ils n'ont jamais existé. Aujourd'hui, j'ai décidé de vérifier mon programme à la démo d'une société de courtage populaire et j'ai été confronté à de tels bugs pour la première fois.
J'ai bien compris qu'il s'agit d'un problème matériel au niveau de la société de courtage et non de mon côté ?
L'idée est de calculer si le prix a dépassé le prix moyen pendant un certain nombre de bougies précédentes.
la fonction n'est pas exécutée du tout, le résultat devrait être : si elle n'est pas cassée returnToMA ==1, si elle est cassée returnToMA ==0
peut-être existe-t-il une autre solution à ce problème ?
returnToMA = MAtouch(TRADE_TF2,TRADE_TF2_MA,barscount)
int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_H4, int tradema=10, int bars=100)
{
for(i=0;i<=bars;i++)
{
si(iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))) {return(0);break;}
Si (iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)) {return(0);break;}
sinon retour(1) ;
}
L'idée est de calculer si le prix a dépassé le prix moyen pendant un certain nombre de bougies précédentes.
la fonction n'est pas exécutée du tout, le résultat devrait être : si elle n'est pas cassée returnToMA ==1, si elle est cassée returnToMA ==0
Peut-être existe-t-il d'autres solutions à ce problème ?
Votre fonction aura toujours zéro car le maximum ou le minimum est toujours supérieur/moins ou égal à la MA.
Dans votre cas, le chandelier doit être décrit par au moins deux paramètres :
1) Définissez l'endroit où la bougie s'est ouverte - au-dessus ou au-dessous de la MA.
2. En fonction de 1, vérifiez si la MA a été touchée.
Vous aurez toujours zéro dans la fonction - car le maximum ou le minimum est toujours supérieur/moins ou égal à la MA.
Dans votre cas, le chandelier doit être décrit par au moins deux paramètres :
1. déterminer où la bougie s'est ouverte - au-dessus ou au-dessous de la MA
2. En fonction de 1, vérifiez si la MA a été touchée.
Merci. J'ai ajouté la condition mais elle renvoie toujours 1. Puis-je changer les parenthèses quelque part ? Ou bien la rupture ne fonctionne pas et la fonction se termine en assignant 1 à la valeur de retour.
int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_H4, int tradema=10, int bars=100)
{
for(i=0;i<=bars;i++)
{
if( iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))
{return(0);break;}
si ( iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))
{return(0);break;}
sinon retour(1) ;
}
Merci. J'ai ajouté la condition, mais elle renvoie toujours 1. Puis-je changer les parenthèses quelque part ? Ou bien la rupture ne fonctionne pas et la fonction se termine en assignant 1 à la valeur de retour
int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_H4, int tradema=10, int bars=100)
{
for(i=0;i<=bars;i++)
{
if( iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))
{return(0);break;}
si ( iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))
{return(0);break;}
sinon retour(1) ;
}
Essayez comme ceci
Il retournera 1 si la condition est remplie - il y a eu une intersection - n'est-ce pas ce que nous voulons ?
Essayez ceci
Il retournera 1 si la condition est remplie - il y a eu une intersection - n'est-ce pas ce que nous voulons ?
Merci, cela fonctionne comme sur des roulettes avec votre version du code.
Bonjour !
Les gars, pouvez-vous me dire si vous pouvez programmer l'affichage de l'indicateur sur le graphique? Ou seulement manuellement ?
Si c'est le cas, quel ordre est donné ?