Bonjour à tous,
Alors je viens vers vous car j’utilise MT5 et j’aimerai maintenant passer sur ProRealTime sauf que sur MT5, j’utilise un indicateur qui me permet de gérer ma stratégie de scalping facilement, sans ça….. c’est très compliquer pour moi. Vous aurez surement devinez que moi et le code, c’est pas trop ça pour l’instant… peut-être plus tard. J’aimerai savoir si c’est possible de pouvoir recréer l’indicateur sur ProRealTime sinon je serai obliger de rester sur MT5 car j’ai pas trop en confiance en moi pour recommencer ma stratégie de trading à zéro surtout que la je travail sur moi pour laisser de côté les sentiments etc.. qui prennent parfois le dessus, et avec cette indicateur, disons que je suis un peu plus en confiance.
Alors voici le lien qui explique sur quoi ce base le code de mon indicateur
https://www.mql5.com/en/code/429
Et voici comment se présente le code en MQL5.
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
//— plot LRMA
#property indicator_label1 “LRMA”
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrBlue
#property indicator_style1 STYLE_SOLID
#property indicator_width1 2
//— input parameters
input int LRMAPeriod=14; // Period LRMA
//— indicator buffers
double LRMABuffer[];
//#include <MovingAverages.mqh>
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
int OnInit()
{
//— indicator buffers mapping
SetIndexBuffer(0,LRMABuffer,INDICATOR_DATA);
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
ArraySetAsSeries(LRMABuffer,true);
//—
return(INIT_SUCCEEDED);
}
//+——————————————————————+
//| Custom indicator iteration function |
//+——————————————————————+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//—
// ArraySetAsSeries(LRMABuffer,true);
ArraySetAsSeries(close,true);
if(rates_total<=LRMAPeriod) return(0);
int limit=rates_total-prev_calculated;
if(limit>1)
{
ArrayInitialize(LRMABuffer,0.0);
limit=rates_total-LRMAPeriod-1;
}
for(int pos=limit;pos>=0;pos–)
{
LRMABuffer[pos]=LRMA(pos,LRMAPeriod,close);
// Print(“Bar(“,pos,”)=”, LRMABuffer[pos]);
}
//— return value of prev_calculated for next call
return(rates_total);
}
//+——————————————————————+\\
// Calculate LRMA
//+——————————————————————+\\
double LRMA(const int pos,const int period,const double &price[])
{
double Res=0;
double tmpS=0,tmpW=0,wsum=0;;
for(int i=0;i<period;i++)
{
tmpS+=price[pos+i];
tmpW+=price[pos+i]*(period-i);
wsum+=(period-i);
}
tmpS/=period;
tmpW/=wsum;
Res=3.0*tmpW-2.0*tmpS;
return(Res);
}
//+——————————————————————+