Besoin d'aide pour le codage - page 8

 

Jo

Quelque chose comme ceci :

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):
Jovager:
Bonjour,

Comment puis-je coder une alerte dans un indicateur ?

Par exemple, comment alerter lorsque MACD[0]>MACD[1] ?

Merci pour votre aide.

Jo
 
mladen:
Jo

Quelque chose comme ceci :

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):

Merci Mladen, mais où ?

J'ai eu les messages :

Red -If_function non défini

Red-Alert_Semicolon attendu

------------------------------------------------------------------------------------------------------------------

#property indicateur_separate_window

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Red

#property indicator_width1 2

//---- paramètres de l'indicateur

extern int FastEMA=12 ;

extern int SlowEMA=26 ;

extern int SignalSMA=9 ;

//---- tampons de l'indicateur

double MacdBuffer[] ;

double SignalBuffer[] ;

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

//| Fonction d'initialisation de l'indicateur personnalisée |

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

int init()

{

//---- paramètres de dessin

SetIndexStyle(0,DRAW_HISTOGRAM) ;

SetIndexStyle(1,DRAW_LINE) ;

SetIndexDrawBegin(1,SignalSMA) ;

IndicatorDigits(Digits+1) ;

//---- mappage des tampons d'indicateurs

SetIndexBuffer(0,MacdBuffer) ;

SetIndexBuffer(1,SignalBuffer) ;

//---- nom pour l'étiquette de la DataWindow et de la sous-fenêtre de l'indicateur

IndicatorShortName("MACD("+FastEMA+", "+SlowEMA+", "+SignalSMA+")") ;

SetIndexLabel(0, "MACD") ;

SetIndexLabel(1, "Signal") ;

//---- initialisation terminée

retour(0) ;

}

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

//| Convergence/Divergence des Moyennes Mobiles |

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

int start()

{

int limite ;

int counted_bars=IndicatorCounted() ;

//---- dernière barre comptée sera recomptée

if(counted_bars>0) counted_bars-- ;

limit=Bars-counted_bars ;

//---- macd compté dans le 1-st tampon

for(int i=0 ; i<limit ; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i) ;

//---- ligne de signal comptée dans le 2ème tampon

for(i=0 ; i<limit ; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i) ;

//---- terminé

retour(0) ;

}

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

 

Juste avant le dernier retour dans votre code (de cette façon, vous vous assurez qu'il n'est exécuté que lorsque tout le reste du traitement est terminé).

Jovager:
Merci Mladen, mais où ?

J'ai eu les messages suivants :

Red -If_function non défini

Red-Alert_Semicolon attendu

------------------------------------------------------------------------------------------------------------------

#property indicator_separate_window

#property indicator_buffers 2

#property indicator_color1 Silver

#property indicator_color2 Red

#property indicator_width1 2

//---- paramètres de l'indicateur

extern int FastEMA=12 ;

extern int SlowEMA=26 ;

extern int SignalSMA=9 ;

//---- tampons de l'indicateur

double MacdBuffer[] ;

double SignalBuffer[] ;

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

//| Fonction d'initialisation de l'indicateur personnalisée |

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

int init()

{

//---- paramètres de dessin

SetIndexStyle(0,DRAW_HISTOGRAM) ;

SetIndexStyle(1,DRAW_LINE) ;

SetIndexDrawBegin(1,SignalSMA) ;

IndicatorDigits(Digits+1) ;

//---- mappage des tampons d'indicateurs

SetIndexBuffer(0,MacdBuffer) ;

SetIndexBuffer(1,SignalBuffer) ;

//---- nom pour l'étiquette de la DataWindow et de la sous-fenêtre de l'indicateur

IndicatorShortName("MACD("+FastEMA+", "+SlowEMA+", "+SignalSMA+")") ;

SetIndexLabel(0, "MACD") ;

SetIndexLabel(1, "Signal") ;

//---- initialisation terminée

retour(0) ;

}

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

//| Convergence/Divergence des Moyennes Mobiles |

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

int start()

{

int limite ;

int counted_bars=IndicatorCounted() ;

//---- dernière barre comptée sera recomptée

if(counted_bars>0) counted_bars-- ;

limit=Bars-counted_bars ;

//---- macd compté dans le 1-st tampon

for(int i=0 ; i<limit ; i++)

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i) ;

//---- ligne de signal comptée dans le 2ème tampon

for(i=0 ; i<limit ; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i) ;

//---- terminé

retour(0) ;

}

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

Pouvez-vous corriger l'erreur de division par zéro lors de l'utilisation du timeframe en tant que "0" ?

pivot_crazy.mq4Peut-on corriger l'erreur de division par zéro lors de l'utilisation de la fenêtre temporelle comme "0" ?

Merci.

Dossiers :
 

Essayez-le. Il est corrigé maintenant

privateer:
pivot_crazy.mq4Peut-on corriger l'erreur de division par zéro lorsque l'on utilise l'intervalle de temps comme "0" ? Merci.
Dossiers :
 

Merci mladen fonctionne comme un charme

mladen:
Essayez-le. Il est corrigé maintenant

merci mladen fonctionne comme un charme

 

j'ai besoin d'aide avec cette ea qui a une fonction martingale mais qui ne fonctionne pas proprement par exemple si une position est fermée en perte la fonction martingale devrait multiplier les lots de la dernière position fermée en perte mais il y a une erreur dans le code qui fait que la martingale fonctionne proprement voici l'eauniversalmacrossea.mq4

Dossiers :
 

Cette façon d'ouvrir un nouvel ordre après une perte n'est pas une martingale + la martingale fonctionne avec des positions ouvertes

blondutrader:
j'ai besoin d'aide avec cette ea qui a une fonction martingale mais qui ne fonctionne pas correctement par exemple si une position est fermée en perte la fonction martingale devrait multiplier les lots de la dernière position fermée en perte mais il y a une erreur dans le code qui fait que la martingale fonctionne correctement voici l'eauniversalmacrossea.mq4
 

Comment puis-je calculer ma taille de lot, si je veux trader à chaque transaction, c'est-à-dire 5% de mon argent ?

 

sunshineh,

Essayez d'utiliser cette fonction:

double getLots(string symbol, double Risk, double stopLossDistance)

{

RefreshRates();

double lots = 0;

double MinLots = NormalizeDouble(MarketInfo(symbol,MODE_MINLOT) ,2);

double MaxLots = NormalizeDouble(MarketInfo(symbol,MODE_MAXLOT) ,2);

double LotStep = NormalizeDouble(MarketInfo(symbol,MODE_LOTSTEP),2);

int LotDigit = 2;

if(MarketInfo(symbol,MODE_DIGITS)==3 || MarketInfo(symbol,MODE_DIGITS)==5) stopLossDistance *= 10.0;

//

//

//

//

//

if (LotStep==1) LotDigit=0;

if (LotStep==0.1) LotDigit=1;

if (LotStep==0.01) LotDigit=2;

if (Risk>0)

{

if (AccountBalance()>AccountFreeMargin())

lots = NormalizeDouble(AccountFreeMargin()*(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

else lots = NormalizeDouble(AccountBalance() *(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

}

//

//

//

//

//

lots = NormalizeDouble(NormalizeDouble(lots/LotStep,0)*LotStep,LotDigit);

lots = MathMax(MathMin(lots,MaxLots),MinLots);

return(lots);

}
sunshineh:
Comment puis-je calculer ma taille de lot, si je veux trader à chaque transaction 5 % de mon argent ?