Как сместить МА по вертикали или как в МА "впихнуть" сумму нескольких ценовых значений - страница 4
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я дал Вам рабочий код. Используйте его ( изменяйте номер версии тольҡо после правок).
Платформа и не должна двигаться - она железобетонная, к платформе прибывают поезда.
А вот в MetaTrader 5 есть замечательная возможность тестировать на исторических данных.
Ваш код в окне данных есть, но на графике не рисуется почему-то. Даже сейчас.
Враки 😀. Уменьшите масштаб отображения графика и будет чудо.
Да))), вы правы. уменьшил масштаб и действительно появился индикатор. только масштаб пришлось изменить до самого минимума, чтобы появились линии. Что-то не то. разница от "open" до линии не 30, а 334))
Всё правильно, Вы в настройках указали 30 пунктов - это в шкале измерений "четырёхзнака". А так как график у Вас пятизначный, то указанное значение пересчитано в "пятизнак" и получили 300.
Всё правильно, Вы в настройках указали 30 пунктов - это в шкале измерений "четырёхзнака". А так как график у Вас пятизначный, то указанное значение пересчитано в "пятизнак" и получили 300.
У Вас всё-равно неэкономный расчёт - Вы просчитываете на всю глубину. Вот экономный пересчёт: при prev_calculated==0 (это бывает при первом старте или при подкачке истории) рассчитываем на всю глубину - от limit=="0" до "rates_total". При последующих заходах в OnCalculate() limit=prev_calculated-1 - то есть будет всё время перечитывать только текущий бар или два бара, когда появится новый бар:
//| Line.mq5 |
//| Copyright 2016, Вован |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Вован"
#property link "https://www.mql5.com"
#property version "1.001"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots 2
//--- plot Line1
#property indicator_label1 "Line1"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrGreen
#property indicator_style1 STYLE_SOLID
#property indicator_width1 2
//--- plot Line2
#property indicator_label2 "Line2"
#property indicator_type2 DRAW_LINE
#property indicator_color2 clrRed
#property indicator_style2 STYLE_SOLID
#property indicator_width2 2
//--- input parameters
input ushort Y=30;
double ExtY=0.0;
//--- indicator buffers
double Line1Buffer[];
double Line2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,Line1Buffer,INDICATOR_DATA);
SetIndexBuffer(1,Line2Buffer,INDICATOR_DATA);
//---
ExtY=Y*Point(); // tuning
//---
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[])
{
//---
int limit=0;
if(prev_calculated==0) // the first start or the history has been changed
{
for(int i=limit;i<rates_total;i++) // calculation on all depth of history
{
Line1Buffer[i]=open[i]+ExtY;
Line2Buffer[i]=open[i]-ExtY;
}
}
else
{
limit=prev_calculated-1; // economical recalculation of bars
for(int i=limit;i<rates_total;i++)
{
Line1Buffer[i]=open[i]+ExtY;
Line2Buffer[i]=open[i]-ExtY;
}
}
Comment("rates_total=",rates_total,"\n",
"limit=",limit);
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//| Indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
Comment("");
}
//+------------------------------------------------------------------+
Про стрелочки чуть позже, а пока для прочтения:
спасибо, полезная инфа