Aide au codage - page 554

 

Mntiwana, sur Bar to Use, si vous mettez zéro, il prendra des signaux sur la barre encore ouverte (dangereux pour un EA, IMHO). Si la valeur est supérieure à zéro, l'EA recevra des signaux de barres fermées en retour de la barre ouverte, donc si vous avez BarToUse = 2, alors votre EA vérifiera 2 barres en arrière.

 

Bonjour mladen.... s'il vous plaît aidez-moi....ı a été posté mais ı suppose que vous ne pouvez pas voir ... ok ... ı ont un indicateur obtenu ... ı besoin de la version histo.merci beaucoup

Dossiers :
trend.ex4  9 kb
trend.mq4  2 kb
 
aress:
Bonjour mladen.... s'il vous plait aidez moi....ı a été posté mais ı suppose que vous ne pouvez pas voir...ok...ı j'ai un indicateur ...ı j'ai besoin de la version histo.merci beaucoup

aress

Avez-vous le code source original (non-décompilé) de l'indicateur ? Si oui, merci de poster le fichier mq4 original afin de pouvoir travailler dessus.

_________________

PS : vous pouvez également vérifier ce qui suit https://www.mql5.com/en/forum/174961/page4 D'après ce que j'ai vu, c'est tout.

 

Bonjour à tous,

Jetez un coup d'oeil à mon code.

Cet indicateur appelle un autre indicateur avec la fonction icustom.

Le problème que j'ai est que, parfois, même lorsque les conditions pour les signaux ne sont pas remplies,

cet indicateur produit toujours de fausses alertes sonores et ces fausses alertes n'affichent pas de flèches.

Je ne sais pas d'où vient le problème. J'ai essayé ( avec mes connaissances limitées) mais sans succès.

Comment faire en sorte que les fausses alertes cessent ? Comment faire en sorte que l'alerte sonore ne se déclenche que s'il y a une flèche ?

Merci de m'aider.

Merci.

int start()

{

int counted_bars=IndicatorCounted() ;

//----

if(counted_bars>0) counted_bars-- ;

int limit=Bars-counted_bars ;

int j ;

for(int i=limit ; i>=0 ; i--)

{

arr_up = EMPTY_VALUE ; arr_dn = EMPTY_VALUE ;

j=i ;

double var1 = 0 ;

double var2 = 0 ;

for (j = i ; j <= i + 9 ; j++) var2 += MathAbs(High[j] - Low[j]) ;

var1 = var2 / 10.0 ;

double sellprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,0,i) ;

double buyprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,1,i) ;

statique datetime LastAlert ;

datetime curbar = Time[0] ;

if (buyprevious !=EMPTY_VALUE )

{

arr_up=iLow(Symbol(),0,i) - (var1/2) ;

DrawLine("EntryLine11",iHigh(Symbol(),0,i+1),EntryLineColor) ;

if ( LastAlert != curbar && !upalert){

Alert (Symbol()," ",Period(), "BUY") ;

upalert=true ;

downalert=false ;

LastAlert =curbar ;

}

}

else if(sellprevious !=EMPTY_VALUE )

{

arr_dn=iHigh(Symbol(),0,i) + (var1/2) ;

DrawLine("EntryLine11",iLow(Symbol(),0,i+1),EntryLineColor) ;

if ( LastAlert != curbar && !downalert){

Alert (Symbol()," ",Period(), "SELL") ;

downalert=true ;

upalert=false ;

LastAlert = curbar ;

}

}

}

 
luffy:
Bonjour à tous,

Veuillez jeter un coup d'oeil à mon code.

Cet indicateur appelle un autre indicateur avec la fonction icustom.

Le problème que j'ai est que, parfois, même lorsque les conditions pour les signaux ne sont pas remplies,

cet indicateur produit toujours de fausses alertes sonores et ces fausses alertes n'affichent pas de flèches.

Je ne sais pas d'où vient le problème. J'ai essayé ( avec mes connaissances limitées) mais sans succès.

Comment faire en sorte que les fausses alertes cessent ? Comment faire en sorte que l'alerte sonore ne se déclenche que s'il y a une flèche ?

Merci de m'aider.

Merci.

int start()

{

int counted_bars=IndicatorCounted() ;

//----

if(counted_bars>0) counted_bars-- ;

int limit=Bars-counted_bars ;

int j ;

for(int i=limit ; i>=0 ; i--)

{

arr_up = EMPTY_VALUE ; arr_dn = EMPTY_VALUE ;

j=i ;

double var1 = 0 ;

double var2 = 0 ;

for (j = i ; j <= i + 9 ; j++) var2 += MathAbs(High[j] - Low[j]) ;

var1 = var2 / 10.0 ;

double sellprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,0,i) ;

double buyprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,SlowEMA,signal,price,1,i) ;

statique datetime LastAlert ;

datetime curbar = Time[0] ;

if (buyprevious !=EMPTY_VALUE )

{

arr_up=iLow(Symbol(),0,i) - (var1/2) ;

DrawLine("EntryLine11",iHigh(Symbol(),0,i+1),EntryLineColor) ;

if ( LastAlert != curbar && !upalert){

Alert (Symbol()," ",Period(), "BUY") ;

upalert=true ;

downalert=false ;

LastAlert =curbar ;

}

}

else if(sellprevious !=EMPTY_VALUE )

{

arr_dn=iHigh(Symbol(),0,i) + (var1/2) ;

DrawLine("EntryLine11",iLow(Symbol(),0,i+1),EntryLineColor) ;

if ( LastAlert != curbar && !downalert){

Alert (Symbol()," ",Period(), "SELL") ;

downalert=true ;

upalert=false ;

LastAlert = curbar ;

}

}

}

luffy

Pouvez-vous également poster l'indicateur appelé, afin qu'il puisse être testé ?

 
mrtools:
Mntiwana, sur la barre à utiliser, si vous mettez zéro, il prendra des signaux sur la barre encore ouverte (dangereux pour un EA, IMHO). Si elle est supérieure à zéro, l'EA recevra des signaux des barres fermées en retour de la barre ouverte, donc si vous avez BarToUse = 2, alors votre EA vérifiera 2 barres en arrière.

Très chers MLADEN et MRTOOLS,

merci pour votre aide, désolé de prendre beaucoup de votre temps, de demander autant ....... .......so dans le cas de cet EA, ce qui est le mieux et le plus approprié, quelle barre devrait être ajoutée.....i veux quand la ligne lente MA a traversé complètement par la ligne rapide MA (dans les deux sens) ......... sur la deuxième barre suivante, le trade devrait être exécuté, pouvons-nous coder de cette façon qu'après le croisement, combien de barres plus tard le trade pourrait être exécuté, par exemple après le croisement sur la première barre, après le croisement sur la deuxième ou troisième barre ? les images sont jointes pour mieux expliquer la question, merci.

salutations

Dossiers :
7.png  35 kb
8.png  38 kb
 

Voici les indicateurs.

Merci.

Dossiers :
 
mrtools:
Mntiwana, sur la barre à utiliser, si vous mettez zéro, il prendra des signaux sur la barre encore ouverte (dangereux pour un EA, IMHO). Si elle est supérieure à zéro, l'EA recevra des signaux de barres fermées en retour de la barre ouverte, donc si vous avez BarToUse = 2, alors votre EA vérifiera 2 barres en arrière.

Cher MRTOOLS,

vous voulez dire .... barre à utiliser = 2 ...... 2 barre après le croisement...pas 2 N barres, quand vous écrivez Bars BACK, j'ai confondu, ma faute....pourriez-vous me corriger. merci.

Salutations

 
mntiwana:
Cher MRTOOLS,

vous voulez dire .... barre à utiliser = 2 ...... 2 barre après le croisement...pas 2 N barres, quand vous écrivez Bars BACK, j'ai confondu, ma faute....pourriez-vous me corriger. merci.

Salutations

mntiwana

Non, mais lorsque les barres à utiliser == 2, alors le croisement sera vérifié à 2 barres de la barre actuelle - il ne vérifiera pas le croisement à la barre actuelle. Donc, avec un délai de 2 barres

 
mladen:
mntiwana Non, mais lorsque les barres à utiliser == 2, alors le croisement sera vérifié à 2 barres de la barre actuelle - il ne vérifiera pas le croisement à la barre actuelle. Donc, avec un délai de 2 barres

Très cher MLADEN,

merci patron, donc dans ce cas, le code pourrait être comme ceci ? corrigez-moi s'il vous plaît,

salutations

===================================================================

code original "simple MA cross EA

//

#define _doNothing 0

#define _doBuy 1

#define _doSell 2

int start()

{

int doWhat = _doNothing ;

double diffc = iMA(NULL,0,Ma1Period,0,Ma1Method,Ma1Price,BarToUse) -iMA(NULL,0,Ma2Period,0,Ma2Method,Ma2Price,BarToUse) ;

double diffp = iMA(NULL,0,Ma1Period,0,Ma1Method,Ma1Price,BarToUse+1)-iMA(NULL,0,Ma2Period,0,Ma2Method,Ma2Price,BarToUse+1) ;

si ((diffc*diffp)<0)

si (diffc>0)

doWhat = _doBuy ;

sinon doWhat = _doSell ;

si (doWhat==_doNothing) return(0) ;

//

================================================

modifié de cette façon

#define _doNothing 0

#define _doBuy 1

#define _doSell 2

int start()

{

int doWhat = _doNothing ;

double diffc = iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma1Period,Ma1Price,2,0 ,0,BarToUse)

-iCustom(NULL,0, "Coque parabolique 2.1",PERIOD_CURRENT,Ma2Period,Ma2Price,2,0 ,0,BarToUse) ;

double diffp = iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma1Period,Ma1Price,2,0 ,0,BarToUse==2)

-iCustom(NULL,0, "Coque parabolique 2.1",PERIOD_CURRENT,Ma2Period,Ma2Price,2,0 ,0,BarToUse==2) ;

si ((diffc*diffp)<0)

si (diffc>0)

doWhat = _doBuy ;

sinon doWhat = _doSell ;

si (doWhat==_doNothing) return(0) ;

//

=====================================

Dossiers :
9.png  108 kb