Bonjour,
je suis assez nouveau dans la programmation d’un EA et j’utilise les fonctions crosses over et crosses under sur 2 indicateurs mais souvent il me semble qu’il ne réagit pas a cette condition. Si je regarde le charts de 1 min par exemple eur/usd en 1 jours j’entre manuellement sur une position 1-4 fois. Mon EA ne réagit que rarement (1 fois par jour).
Quelqu’un a ce même effet?
Merci!
Jérôme
Bonjour,
Il m’arrive d’avoir des différences entre backtest et réel en raison du spread qui n’est pas fixe sur le forex.
Cordialement.
Bonjour noisette,
merci beaucoup pour votre réponse, je n’avais pas pensé a cela.
Bonne journée
Ne pas oublier que le code est lu qu’une seule fois par bougie à sa fermeture. Par ailleurs, un croisement de moyennes mobiles doit être confirmé 1 période dessus / 1 période dessous. Les différences sont-elles aussi constatées avec un backtest de la même stratégie ?
Bonjour Nicolas
et merci pour votre réponse. J’aimerais que comme dans le fichier joint lorsque la condition 1 se passe (croisement à la hausse des traits-tillés MA) et la condition 2 se passe (croisement des deux lignes continues MA) j’ouvre une position. A cela s’ajoute d’autres contrôles mais ceux-ci fonctionne alors que l’exemple de l’image jointe de ce matin sur eur/usd ne s’est pas déclanché. Je suis entré manuellement sur cette position comme malheureusement beaucoup d’autres et je ne comprends pas bien pourquoi.
Ou dois-je plutôt utiliser des opérateur de comparaison > entre 2 indicateurs?
Merci beaucoup
Il n’y a pas d’images jointes ? 🙂
Les opérateurs de comparaison sont une autre façon de procéder, mais le résultat serait le même qu’avec CROSSES OVER / UNDER.
Apparemment l’ouverture d’une position fonctionne uniquement lorsque les 2 conditions sont très proches l’une de l’autre. Hier manuellement j’aurais ouvert 3-4 positions mon EA en a ouvert 1 seule.
Ok j’ai bien compris, mais :
- Les différences sont-elles aussi constatées avec un backtest de la même stratégie ? (différence temps réel / backtest) à vérifier svp
- Les périodes et type de moyennes mobiles, sont-elles bien les mêmes dans le code et sur le graphique ? (problème très courant, d’où la question..)
- Sans avoir lu le code difficile de comprendre de où peut provenir le problème, procédons dans l’ordre, car ce type d’instruction fonctionne correctement
Si le robot ne prend position que si les croisements ont lieu sur la même bougie, c’est que tu n’as pas programmé la mémorisation de la condition 1 X bougies en arrière de la condition 2.
- Les différences sont-elles aussi constatées avec un backtest de la même stratégie ? (différence temps réel / backtest) à vérifier svp
Oui les différences sont aussi constatés
- Les périodes et type de moyennes mobiles, sont-elles bien les mêmes dans le code et sur le graphique ? (problème très courant, d’où la question..)
Oui se sont les mêmes
- Sans avoir lu le code difficile de comprendre de où peut provenir le problème, procédons dans l’ordre, car ce type d’instruction fonctionne correctement
Bien entendu voici la partie ou je teste les croisements
//MA
MAa = Average[a](close)
MAb = Average[b](close)
//EMA
EMAx = exponentialaverage[x](close)
EMAy = exponentialaverage[y](close)
Long1 = EMAx CROSSES OVER EMAy
IF Long1 THEN
CondLong1=1
ENDIF
Long2 = MAa CROSSES OVER MAb
IF Long2 THEN
CondLong2=1
ENDIF
IF cond1=1 AND cond2=1 THEN
BUY 1 CONTRACT AT MARKET
SET STOP TRAILING 20
condLong1=0
condLong2=0
ENDIF
// Condition for opening a Short Position
Short1 = EMAx CROSSES UNDER EMAy
IF Short1 THEN
CondShort1=1
ENDIF
Short2 = MAa CROSSES OVER MAb
IF Short2 THEN
CondShort2=1
ENDIF
IF CondShort1=1 AND CondShort2=1 THEN
Sellshort 1 CONTRACT AT MARKET
SET STOP TRAILING 20
CondShort1=0
CondShort2=0
ENDIF
SET STOP pLOSS 20
//MA
MAa = Average[a](close)
MAb = Average[b](close)
//EMA
EMAx = exponentialaverage[x](close)
EMAy = exponentialaverage[y](close)
Long1 = EMAx CROSSES OVER EMAy
IF Long1 THEN
CondLong1=1
ENDIF
Long2 = MAa CROSSES OVER MAb
IF Long2 THEN
CondLong2=1
ENDIF
IF cond1=1 AND cond2=1 THEN
BUY 1 CONTRACT AT MARKET
SET STOP TRAILING 20
condLong1=0
condLong2=0
ENDIF
// Condition for opening a Short Position
Short1 = EMAx CROSSES UNDER EMAy
IF Short1 THEN
CondShort1=1
ENDIF
Short2 = MAa CROSSES OVER MAb
IF Short2 THEN
CondShort2=1
ENDIF
IF CondShort1=1 AND CondShort2=1 THEN
Sellshort 1 CONTRACT AT MARKET
SET STOP TRAILING 20
CondShort1=0
CondShort2=0
ENDIF
SET STOP pLOSS 20
Le bouton “Insert PRT code” est ton ami …
Merci et désolé je suis nouveau dans le forum:-)
Tu utilises des variables nommées “cond1” et “cond2” pour ouvrir des ordres d’achat (ligne 19) qui ne sont jamais renseignées, donc toujours égal à 0. Tu devrais utiliser les variables que tu utilises pour tester des croisements aux lignes 11 et 16 (CondLong1 et 2), je pense que ça ira mieux 🙂
Désolé c’est une erreure lorsque j’a copié/collé mon code dans le forum et modifié 2-3 choses mais c’est bien CondLong1 et 2 que j’utilise et justement le même problem. Quelqu’un peut le tester sur 1 min chart eur/usd et me dire si il a le même effet?