One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Boa tarde eu personalizei um indicador existente, porém ao adicionar ao MT5 o indicador nao é exibido na janela.
//+------------------------------------------------------------------+
//| MR.mq5 |
//| Alexandre Jùnior |
//| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Alexandre Júnior"
#property link "http://www.mql5.com"
#property version "1.00"
#property description "Média Rápida"
#include <MovingAverages.mqh>
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots 1
//--- plot ExtMRBuffer
#property indicator_label1 "MR"
#property indicator_type1 DRAW_LINE
#property indicator_color1 Yellow
#property indicator_style1 STYLE_SOLID
#property indicator_width1 2
//--- default applied price
#property indicator_applied_price PRICE_CLOSE
//--- input parameters
input int InpPeriodMR=8; // MR period
input int InpShiftMR=0; // MR shift
//--- indicator buffer
double ExtMRBuffer[];
double ExtMRBuffer2[];
double ExtFastSC;
int ExtPeriodMR;
int InpMRPeriod;
int ExtMRPeriod;
//+------------------------------------------------------------------+
//| MR initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
//--- check for input values
if(InpPeriodMR<=0)
{
ExtPeriodMR=17;
PrintFormat("Input parameter InpPeriodMR has incorrect value (%d). Indicator will use value %d for calculations.",
InpPeriodMR,ExtPeriodMR);
}
else
ExtPeriodMR=InpPeriodMR;
//--- indicator buffers mapping
SetIndexBuffer(0,ExtMRBuffer,INDICATOR_DATA);
//--- set accuracy
IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//--- sets first bar from what index will be drawn
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,ExtPeriodMR);
//--- set index shift
PlotIndexSetInteger(0,PLOT_SHIFT,InpShiftMR);
//--- set shortname and change label
string short_name=StringFormat("MR(%d)",ExtPeriodMR);
IndicatorSetString(INDICATOR_SHORTNAME,short_name);
PlotIndexSetString(0,PLOT_LABEL,short_name);
}
//+------------------------------------------------------------------+
//| AMA iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
int i;
//--- check for rates count
if(rates_total<ExtPeriodMR+begin)
return(0);
//--- draw begin may be corrected
if(begin!=0)
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,ExtPeriodMR+begin);
//--- detect position
int pos=prev_calculated-1;
//--- first calculations
if(pos<ExtPeriodMR+begin)
{
pos=ExtPeriodMR+begin;
for(i=0; i<pos-1; i++)
ExtMRBuffer[i]=0.0;
ExtMRBuffer[pos-1]=price[pos-1];
}
//--- main cycle
for(i=pos; i<rates_total && !IsStopped(); i++)
{
//--- calculate MR
if(i==InpMRPeriod-1)
ExtMRBuffer[i]=SimpleMA(i,InpMRPeriod,price);
else
ExtMRBuffer[i]=ExponentialMA(i,InpMRPeriod,ExtMRBuffer[i-1],price);
//--- Calculate StdDev
ExtMRBuffer2[i]=StdDevFunc(price,ExtMRBuffer,i);
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//| Calculate DESV value |
//+------------------------------------------------------------------+
double StdDevFunc(const double &price[],const double &ma_price[],const int position)
{
double dev=0.0;
for(int i=0; i<ExtMRPeriod; i++)
dev+=MathPow(price[position-i]-ma_price[position],2.0);
dev=MathSqrt(dev/ExtMRPeriod);
return(dev);
}
//+------------------------------------------------------------------+