Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Немного навел красоту на уровни Мюрея
Добрый день. Умельцы очень нужно перевести индикатор корреляции в MT5
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots 2
#property indicator_color1 clrDeepSkyBlue
#property indicator_color2 clrDeepSkyBlue
#property indicator_chart_window
double UpBuffer[];
double DnBuffer[];
int OnInit()
{
SetIndexBuffer(0,UpBuffer);
SetIndexBuffer(1,DnBuffer);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(0,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3);PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(1,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3);PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
return(0);
}
//+------------------------------------------------------------------+
//| 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[])
{ int i;
for(i=1000;i>0;i--)
{ UpBuffer[i]=1.428; DnBuffer[i]=1.41;
}
return(0);
}
Почему не рисуются линии?
надо как то так примерно, поверил все работает
Скачал данный индикатор. При компиляции выдал ошибку в 228 строке, рисунок сделать не смог, поэтому прошу поверить на слово. А вообще я хотел индикатор, которым пользуюсь закинуть на МТ5, поэтому я здесь, сам-то не смог. Может вы мне его перепишите. Спасибо.
Помогите пожалуйста.
Пытался переписать WATL, почти получилось. Линии неверно рисует это из за кривого расчета LWMA. А главное иногда на графе получаются такие сюрпризы:
Линия из точек иногда один в один машки по которым считаеться WATL.
Или бывает граф крутанешь и точки все дублируются на соседний бар.
Заранее спасибо за любую помощь =)
Может, кто видел этот индикатор в MQL5 преобразований? http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=67
Здравствуйте,
Как не крутился-не смог сделать,ето,что хотел
Корочие-вызиват другой буфер мувинга,вычислен на другую пару,чем остановлен индикатор.
[code]
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_plots 2
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_type2 DRAW_COLOR_LINE
#property indicator_color1 clrBlue
#property indicator_color2 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_style2 STYLE_SOLID
input int period_1 = 20;
input int period_2 = 100;
input ENUM_MA_METHOD ma_method = MODE_SMA;
input ENUM_APPLIED_PRICE applied_price = PRICE_CLOSE;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
int EMHandle1=0;
int EMHandle2=0;
int EMHandle11=0;
int EMHandle22=0;
MqlParam params[]; // Структура за съхранение параметрите на индикатора
double ma1[],ma2[],ma3[],ma4[];//Временни буфери
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0, ExtMapBuffer1, INDICATOR_DATA);
SetIndexBuffer(1, ExtMapBuffer2, INDICATOR_DATA);
SetIndexBuffer(2, ma1, INDICATOR_DATA);
SetIndexBuffer(3, ma2, INDICATOR_DATA);
SetIndexBuffer(4, ma3, INDICATOR_DATA);
SetIndexBuffer(5, ma4, INDICATOR_DATA);
PlotIndexSetInteger(0, PLOT_SHIFT, 0);
PlotIndexSetInteger(1, PLOT_SHIFT, 0);
PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_SOLID);
//---
PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrBlue);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,clrRed);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
IndicatorSetString(INDICATOR_SHORTNAME,"2_2_MA");
//--- set accuracy
IndicatorSetInteger(INDICATOR_DIGITS,4);
//---
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_1;
// Смещение
params[1].type =TYPE_INT;
params[1].integer_value=0;
// Метод расчета: простое усреднение
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
// Тип цен для рассчета: цены закрытия
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle1 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params);
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_2;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle2 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params);
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_1;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle11 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params);
ArrayResize(params,4);
params[0].type =TYPE_INT;
params[0].integer_value=period_2;
params[1].type =TYPE_INT;
params[1].integer_value=0;
params[2].type =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].type =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle22 = IndicatorCreate(_Symbol, 0, IND_MA, 4, params);
return(0);
}
int OnCalculate (const int rates_total, // размер массива price[];
const int prev_calculated,// количество доступных баров ;на предыдущем вызове;
const int begin,// с какого индекса в массиве price[] начинаются достоверные данные;
const double &price[]) // массив, по которому и будет считаться индикатор;
{
int i;
ArraySetAsSeries(ma1, true);
ArraySetAsSeries(ma2, true);
ArraySetAsSeries(ma3, true);
ArraySetAsSeries(ma4, true);
if(CopyBuffer(EMHandle1, 0, 0, 1, ma1) < 0){Print("CopyBuffer ma1 error =", GetLastError());}
if(CopyBuffer(EMHandle2, 0, 0, 1, ma2) < 0){Print("CopyBuffer ma2 error =", GetLastError());}
if(CopyBuffer(EMHandle11, 0, 0, 1, ma3) < 0){Print("CopyBuffer ma3 error =", GetLastError());}
if(CopyBuffer(EMHandle22, 0, 0, 1, ma4) < 0){Print("CopyBuffer ma4 error =", GetLastError());}
int limit;
//if(prev_calculated<1)
//limit=period_1;
limit=prev_calculated-1;
for( i=0; i<limit; i++)
ExtMapBuffer1[0]=вычисление;
ExtMapBuffer2[0]=вычисление;
Comment(
"\n=====================",
"\n ma1[0] : ",DoubleToString(ma1[0],5),
"\n ma2[0] : ",DoubleToString(ma2[0],5),
"\n ma3[0] : ",DoubleToString(ma3[0],5),
"\n ma4[0] : ",DoubleToString(ma4[0],5),
"\n ExtMapBuffer1[0] : ",DoubleToString(ExtMapBuffer1[0],4),
"\n ExtMapBuffer2[0] : ",DoubleToString(ExtMapBuffer2[0],4)
);
return(rates_total);
}
void OnDeinit(const int reason)
{
Comment("");
}
[/code]
Когда 0 наместо i(для бара)вижу результат,когда для бара(текущий= i )дает что не может найти данни для вторая пара.
График пары открыт,в окошке маркета есть символа-не пойму,где/что путаю?
Две разны е парый в один индикатор-так где моя ошибка?
Когда ставлю 0 ,вижу результат как комент,но линии не рисует-как не пробувал.
Уточнение: ma1 и ma2 на одна пара а ma3 и ma4 на другая пара.
Спосибо.