Key_Reversal Indicator For MT5
L' Key_Reversal Indicator For MT5 visualizza la zona di inversione chiave con l'aiuto di tre barre o modelli di avvolgimento. Il modello che avvolge è un forte segnale di inversione che viene utilizzato dagli investitori d'élite.
Gli indicatori hanno cinque livelli di input unici. Il periodo di rilevamento del trend viene utilizzato per gestire il numero di barre che verranno valutate per trovare la direzione del trend. Il segmento di regolazione del filtro è per i trader esperti che amano scambiare le coppie incrociate sul mercato. I segnali vengono generati sotto forma di una freccia rossa e blu. Indicatori a freccia rossa si verificherà una nuova tendenza al ribasso. Al contrario, la freccia blu indica che una nuova tendenza in rialzo dominerà il mercato. Questo indicatore è dotato di un sistema di allarme avanzato in grado di generare avvisi e-mail. Se sei super impegnato, puoi utilizzare il sistema di avviso SMS di questo indicatore.
Tuttavia, saltare negli scambi con l'indicazione della freccia è un grosso errore. Analizzare le condizioni del mercato e determinare le dimensioni del lotto di conseguenza.
Installazione della Key_Reversal Indicator For MT5
Dopo aver scaricato l'indicatore tramite il modulo sopra è necessario decomprimere il file zip. Quindi è necessario copiare il file Key_Reversal.mq5 nella cartella MQL5Indicators dell'installazione di MT5 . Dopodiché, riavvia MT5 e sarai in grado di vedere l'indicatore nell'elenco degli indicatori.
Parametri della Key_Reversal Indicator For MT5
Key_Reversal Indicator For MT5 ha i parametri 5 da configurare.
input uint InpPeriod = 2; // Trend detection period
input ENUM_INPUT_YES_NO InpUseFilter = INPUT_YES; // Use trend detection filter
input ENUM_INPUT_YES_NO InpUseAlert = INPUT_YES; // Show alerts
input ENUM_INPUT_YES_NO InpSendMail = INPUT_NO; // Send mails
input ENUM_INPUT_YES_NO InpSendPush = INPUT_YES; // Send push-notifications
Buffer della Key_Reversal Indicator For MT5
Key_Reversal Indicator For MT5 fornisce buffer 2 .
SetIndexBuffer(0,BufferTKR,INDICATOR_DATA);
SetIndexBuffer(1,BufferBKR,INDICATOR_DATA);
Parti principali del codice
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[])
{
//--- #AB0= gt 2:0 lt 0AA82 gt 2 1CD5@ gt 2 :0: B09 lt A5@89
ArraySetAsSeries(open,true);
ArraySetAsSeries(high,true);
ArraySetAsSeries(low,true);
ArraySetAsSeries(close,true);
ArraySetAsSeries(time,true);
//--- @ gt 25@:0 : gt ;8G5AB20 4 gt ABC?=KE 10@ gt 2
if(rates_total lt fmax(period,4)) return 0;
//--- @ gt 25@:0 8 @0AGQB : gt ;8G5AB20 ?@ gt AG8BK205 lt KE 10@ gt 2
int limit=rates_total-prev_calculated;
if(limit gt 1)
{
limit=rates_total-period-2;
ArrayInitialize(BufferTKR,EMPTY_VALUE);
ArrayInitialize(BufferBKR,EMPTY_VALUE);
}
//--- 0AGQB 8=48:0B gt @0
static datetime last_time=0;
for(int i=limit; i gt =0 && !IsStopped(); i--)
{
BufferBKR[i]=(Verification(i,open,high,low,close)== 1 ? low[i] : EMPTY_VALUE);
BufferTKR[i]=(Verification(i,open,high,low,close)==-1 ? high[i] : EMPTY_VALUE);
}
//--- !83=0;K
string Alerts="";
if(time[0] gt last_time && (BufferTKR[1]!=EMPTY_VALUE || BufferBKR[1]!=EMPTY_VALUE))
{
string dir=(BufferBKR[1]!=EMPTY_VALUE ? "Up" : BufferTKR[1]!=EMPTY_VALUE ? "Down" : "");
string message=Symbol()+", "+TimeframeToString(Period())+": Key Reversal "+dir+" Signal.";
if(InpUseAlert) Alert(message);
if(InpSendMail && TerminalInfoInteger(TERMINAL_EMAIL_ENABLED)) SendMail("Key Reversal indicator Signal",message);
if(InpSendPush && TerminalInfoInteger(TERMINAL_NOTIFICATIONS_ENABLED)) SendNotification(message);
last_time=TimeCurrent();
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//| gt 8A: ?0BB5@= gt 2 |
//+------------------------------------------------------------------+
int Verification(const int shift,const double &open[],const double &high[],const double &low[],const double &close[])
{
int signal=(close[shift] gt high[shift+1] ? 1 : close[shift] lt low[shift+1] ? -1 : 0);
if(!InpUseFilter)
return signal;
for(int i=1; i lt =period; i++)
{
int check=(close[shift+i] gt open[shift+i] ? 1 : close[shift+i] lt open[shift+i] ? -1 : 0);
if((signal==1 && check==1) || (signal==-1 && check==-1))
return 0;
}
return signal;
}
//+------------------------------------------------------------------+
//| Timeframe to string |
//+------------------------------------------------------------------+
string TimeframeToString(const ENUM_TIMEFRAMES timeframe)
{
return StringSubstr(EnumToString(timeframe),7);
}
//+------------------------------------------------------------------+