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
Jo
Quelque chose comme ceci :
Bonjour,
Comment puis-je coder une alerte dans un indicateur ?
Par exemple, comment alerter lorsque MACD[0]>MACD[1] ?
Merci pour votre aide.
JoJo
Quelque chose comme ceci :
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é).
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.
Essayez-le. Il est corrigé maintenant
pivot_crazy.mq4Peut-on corriger l'erreur de division par zéro lorsque l'on utilise l'intervalle de temps comme "0" ? Merci.
Merci mladen fonctionne comme un charme
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
Cette façon d'ouvrir un nouvel ordre après une perte n'est pas une martingale + la martingale fonctionne avec des positions ouvertes
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:
{
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);
}Comment puis-je calculer ma taille de lot, si je veux trader à chaque transaction 5 % de mon argent ?