Aide au codage - page 513

 
mladen:
Essayez-le (il affiche maintenant autant de bougies que je le souhaite sur mon terminal) : candlebreaker_1.mq4

Il fonctionne bien pour moi maintenant.

Salutations.

 

Bonjour tout le monde, j'ai un problème mon mt4 ne peut plus montrer sur le graphique les bougies ma, rsi, wpr c'est arrivé après que j'ai installé il y a quelques jours les plateformes mt à nouveau ? quelqu'un peut-il m'aider ?

 
tfi_markets:
Bonjour ProCoders,

Je travaille actuellement avec l'indicateur Autotrend Forecaster.

J'ai écrit le code ci-dessous, mais l'EA n'ouvre pas de transactions.

Quelqu'un pourrait-il avoir l'amabilité de jeter un coup d'oeil ?

Merci d'avance !

MT4 ne montre que les alertes dans le journal :

Dossiers :
journal.jpg  74 kb
 
tfi_markets:
MT4 ne montre que des alertes dans le journal :

Le problème se trouve alors dans les conditions qui sont écrites dans l'EA.

Vérifiez si les conditions sont évaluées à true.

 

Salut les codeurs,

Je me sens vraiment honteux, car c'est la troisième fois que je demande une fonction d'alerte.

Je voudrais recevoir une alerte lorsque la couleur de l'histogramme change de couleur.

Comme d'habitude, je compare les tampons indicateurs entre eux. Mais cette fois-ci, cela ne fonctionne pas.

Les tampons fonctionnent parfaitement et ma fonction de comparaison est également correcte (à mes yeux).

Je pense donc qu'il doit s'agir d'un petit problème, j'espère que quelqu'un pourra m'aider.

Merci d'avance,

#property indicator_separate_window#property indicator_buffers 5

#property indicator_color1 clrGreen

#property indicator_width1 4

#property indicator_color2 clrRed

#property indicator_width2 4

#property indicator_color3 Teal

#property indicator_color4 Teal

#property indicator_color5 Black

#property indicator_minimum 0

#property indicator_maximum 0.1

extern int Amplitude = 2;

extern bool alertsOn = true;

extern bool alertsMessage = true;

extern bool alertsSound = true;

extern bool alertsNotify = true;

extern bool alertsEmail = true;

extern string soundfile = "alert2.wav";

bool nexttrend;

double minh, maxl, up[], down[], trend[], atrlo[], atrhi[];

int init () {

SetIndexBuffer(0, up);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexLabel(0, "up");

SetIndexBuffer(1, down);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexLabel(1, "down");

SetIndexBuffer (2, atrlo);

SetIndexStyle (2, DRAW_NONE);

SetIndexBuffer (3, atrhi);

SetIndexStyle (3, DRAW_NONE);

SetIndexBuffer (4, trend);

//---

SetIndexEmptyValue (0, 0.0);

SetIndexEmptyValue (1, 0.0);

SetIndexEmptyValue (4, 0.0);

nexttrend = 0;

minh = High;

maxl = Low;

return (0);

}

int start () {

double atr, ll, hh, lma, hma;

int workbar = 1;

int c = IndicatorCounted ();

if (c < 0) {

return (- 1);

}

for (int i = Bars - 1 - c; i >= workbar; i --) {

ll = iLow (Symbol (), Period (),

iLowest (Symbol (), Period (), MODE_LOW, Amplitude, i));

hh = iHigh (Symbol (), Period (),

iHighest (Symbol (), Period (), MODE_HIGH, Amplitude, i));

lma = iMA (NULL, 0, Amplitude, 0, MODE_SMA, PRICE_LOW, i);

hma = iMA (NULL, 0, Amplitude, 0, MODE_SMA, PRICE_HIGH, i);

trend = trend;

atr = iATR (Symbol (), 0, 100, i) / 2;

if (nexttrend == 1) {

maxl = MathMax (ll, maxl);

if (hma < maxl && Close < Low) {

trend = 1;

nexttrend = 0;

minh = hh;

}

}

if (nexttrend == 0) {

minh = MathMin (hh, minh);

if (lma > minh && Close > High) {

trend = 0;

nexttrend = 1;

maxl = ll;

}

}

if (trend == 0.0) { //-------------------------------------------------------------------------------------------

if (trend != 0.0) {

up = down;

up = up;

} else {

up = MathMax (maxl, up);

}

atrhi = up + atr;

atrlo = up - atr;

down = 0.0;

} else {

if (trend != 1.0) {

down = up;//-------------------------------------------------------------------------------------------

down = down;

} else {

down = MathMin (minh, down);

}

atrhi = down + atr;

atrlo = down - atr;

up = 0.0; //-------------------------------------------------------------------------------------------

}

if(alertsOn){

if((up[2]!=EMPTY_VALUE) && (down[2]!=EMPTY_VALUE) &&(up[1]!=EMPTY_VALUE)&&(down[1]==EMPTY_VALUE))lcheckalert();

if((up[2]!=EMPTY_VALUE) && (down[2]==EMPTY_VALUE) &&(up[1]!=EMPTY_VALUE)&&(down[1]!=EMPTY_VALUE))scheckalert();

}

}

return (0);

}

void lcheckalert()

{

static datetime candletime=0;

if(candletime!=Time[0])

{

string lmessage = "ZOXY is green on, this means a buy signal! Pair:"+_Symbol +" Price: "+Ask;

if (alertsMessage) Alert(lmessage);

if (alertsNotify) SendNotification(lmessage);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," Buy signal "),lmessage);

if (alertsSound) PlaySound("alert2.wav");

candletime=Time[0];

}

}

void scheckalert()

{

static datetime candletime=0;

if(candletime!=Time[0])

{

string smessage = "ZOXY is Red, this means a sell signal! Pair: "+_Symbol +" Price: "+Bid;

if (alertsMessage) Alert(smessage);

if (alertsNotify) SendNotification(smessage);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," Sell signal "),smessage);

if (alertsSound) PlaySound("alert2.wav");

candletime=Time[0];

}

}

zoxy.mq4

Dossiers :
zoxy.mq4  5 kb
 
mladen:
Alors le problème se situe dans les conditions qui sont écrites dans l'EA. Vérifiez si les conditions sont évaluées à true.

Salut Mladen,

merci pour votre suggestion. J'ai réécrit un peu le code pour "forcer" les conditions à true / false. Maintenant il vend, mais n'achète pas. Veuillez voir le code ci-dessous :

if(openedOrders<=0)

{

// AutoTrendForecaster

double AutoTrendup=iCustom(Symbol(),0, "AutoTrendForecaster",TMperiod,Intensity,SL_distance_pips,0,bar) ;

double AutoTrendup_prev=iCustom(Symbol(),0, "AutoTrendForecaster",TMperiod,Intensity,SL_distance_pips,0,bar+1) ;

double AutoTrenddown=iCustom(Symbol(),0, "AutoTrendForecaster",TMperiod,Intensity,SL_distance_pips,1,bar) ;

double AutoTrenddown_prev=iCustom(Symbol(),0, "AutoTrendForecaster",TMperiod,Intensity,SL_distance_pips,1,bar+1) ;

//+------------------------------------------------------------------+

//| BUY

//+------------------------------------------------------------------+

bool buyCondition = false ;

if(AutoTrendup>0 && AutoTrendup!=EMPTY_VALUE)

{

buyCondition = true ;

}

if (buyCondition)

{

OpenBuy() ;

retour(0) ;

}

//+------------------------------------------------------------------+

//| SELL

//+------------------------------------------------------------------+

bool sellCondition = false ;

if (AutoTrenddown>0 && AutoTrenddown!=EMPTY_VALUE)

{

sellCondition = true ;

}

if (sellCondition)

{

OpenSell() ;

retour(0) ;

}

}

Merci d'avance !

Dossiers :
buysell.jpg  65 kb
 
xtractalpha:
Salut les codeurs,

Je me sens vraiment honteux, car c'est la troisième fois que je pose une question sur une fonction d'alerte.

Je voudrais recevoir une alerte lorsque la couleur de l'histogramme change de couleur.

Comme d'habitude, je compare les tampons indicateurs entre eux. Mais cette fois-ci, cela ne fonctionne pas.

Les tampons fonctionnent parfaitement et ma fonction de comparaison est également correcte (à mes yeux).

Je pense donc qu'il doit s'agir d'un petit problème, j'espère que quelqu'un pourra m'aider.

Merci d'avance,

#property indicator_separate_window#property indicator_buffers 5

#property indicator_color1 clrGreen

#property indicator_width1 4

#property indicator_color2 clrRed

#property indicator_width2 4

#property indicator_color3 Teal

#property indicator_color4 Teal

#property indicator_color5 Black

#property indicator_minimum 0

#property indicator_maximum 0.1

extern int Amplitude = 2;

extern bool alertsOn = true;

extern bool alertsMessage = true;

extern bool alertsSound = true;

extern bool alertsNotify = true;

extern bool alertsEmail = true;

extern string soundfile = "alert2.wav";

bool nexttrend;

double minh, maxl, up[], down[], trend[], atrlo[], atrhi[];

int init () {

SetIndexBuffer(0, up);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexLabel(0, "up");

SetIndexBuffer(1, down);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexLabel(1, "down");

SetIndexBuffer (2, atrlo);

SetIndexStyle (2, DRAW_NONE);

SetIndexBuffer (3, atrhi);

SetIndexStyle (3, DRAW_NONE);

SetIndexBuffer (4, trend);

//---

SetIndexEmptyValue (0, 0.0);

SetIndexEmptyValue (1, 0.0);

SetIndexEmptyValue (4, 0.0);

nexttrend = 0;

minh = High;

maxl = Low;

return (0);

}

int start () {

double atr, ll, hh, lma, hma;

int workbar = 1;

int c = IndicatorCounted ();

if (c < 0) {

return (- 1);

}

for (int i = Bars - 1 - c; i >= workbar; i --) {

ll = iLow (Symbol (), Period (),

iLowest (Symbol (), Period (), MODE_LOW, Amplitude, i));

hh = iHigh (Symbol (), Period (),

iHighest (Symbol (), Period (), MODE_HIGH, Amplitude, i));

lma = iMA (NULL, 0, Amplitude, 0, MODE_SMA, PRICE_LOW, i);

hma = iMA (NULL, 0, Amplitude, 0, MODE_SMA, PRICE_HIGH, i);

trend = trend;

atr = iATR (Symbol (), 0, 100, i) / 2;

if (nexttrend == 1) {

maxl = MathMax (ll, maxl);

if (hma < maxl && Close < Low) {

trend = 1;

nexttrend = 0;

minh = hh;

}

}

if (nexttrend == 0) {

minh = MathMin (hh, minh);

if (lma > minh && Close > High) {

trend = 0;

nexttrend = 1;

maxl = ll;

}

}

if (trend == 0.0) { //-------------------------------------------------------------------------------------------

if (trend != 0.0) {

up = down;

up = up;

} else {

up = MathMax (maxl, up);

}

atrhi = up + atr;

atrlo = up - atr;

down = 0.0;

} else {

if (trend != 1.0) {

down = up;//-------------------------------------------------------------------------------------------

down = down;

} else {

down = MathMin (minh, down);

}

atrhi = down + atr;

atrlo = down - atr;

up = 0.0; //-------------------------------------------------------------------------------------------

}

if(alertsOn){

if((up[2]!=EMPTY_VALUE) && (down[2]!=EMPTY_VALUE) &&(up[1]!=EMPTY_VALUE)&&(down[1]==EMPTY_VALUE))lcheckalert();

if((up[2]!=EMPTY_VALUE) && (down[2]==EMPTY_VALUE) &&(up[1]!=EMPTY_VALUE)&&(down[1]!=EMPTY_VALUE))scheckalert();

}

}

return (0);

}

void lcheckalert()

{

static datetime candletime=0;

if(candletime!=Time[0])

{

string lmessage = "ZOXY is green on, this means a buy signal! Pair:"+_Symbol +" Price: "+Ask;

if (alertsMessage) Alert(lmessage);

if (alertsNotify) SendNotification(lmessage);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," Buy signal "),lmessage);

if (alertsSound) PlaySound("alert2.wav");

candletime=Time[0];

}

}

void scheckalert()

{

static datetime candletime=0;

if(candletime!=Time[0])

{

string smessage = "ZOXY is Red, this means a sell signal! Pair: "+_Symbol +" Price: "+Bid;

if (alertsMessage) Alert(smessage);

if (alertsNotify) SendNotification(smessage);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," Sell signal "),smessage);

if (alertsSound) PlaySound("alert2.wav");

candletime=Time[0];

}

}

zoxy.mq4

xtractalpha

Indépendamment de la SetIndexEmptyValue() EMPTY_VALUE n'est pas == 0, mais 2147483647. Vous avez également des problèmes de repeinture dans ce code que vous devez d'abord nettoyer.

 

S'il vous plaît, quelqu'un pourrait-il corriger cet indicateur pour qu'il montre les flèches d'alerte (est déjà dans) sur le graphique et aussi il devrait seulement alerter sur la première bougie qui clôture au-dessus/au-dessous d'une ema.

candle_close_cross_ma_alert1.mq4

 
triip:
S'il vous plaît, quelqu'un pourrait-il corriger cet indicateur pour qu'il montre des flèches d'alerte (est déjà en place) sur le graphique et aussi il devrait seulement alerter sur la première bougie qui clôture au-dessus/au-dessous d'une ema.candle_close_cross_ma_alert1.mq4

triip

Regardez celui-là : https://www.mql5.com/en/forum/general

Définissez la période du ma rapide à 1 et alors ce sera la même chose que si le prix traverse la moyenne mobile (le slo ma).

 

Merci beaucoup, sans votre aide je n'aurais pas pu le réparer.

(ps. le code fonctionne).

Bonne journée à tous !