aedu:
ПОМОГИТЕ пожалуйста в доработке,все вроде сделал ,компилятор пишет что ошибок нет а он не считает,в смысле не совсем не считает,а только считает и выводит на график в момент запуска или в момент переключения таймфрейма,а после закрытия свечки стопорится.В чем может быть причина?Перечитал кучу литературы но ответа так и не нашел.Заранее благодарен.
добавьте перед циклом
if (limit<=0) limit=1;
if (limit>3) limit=Bars-1;
добавил .........та же фишка,стоит зараза ,как пуговица на смерть
//+------------------------------------------------------------------+ //| AVR-4.mq4 | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property version "1.00" #property strict #property indicator_separate_window // отображение индикатора в отдельном окне #property indicator_buffers 2 // количество буферов индикатора #property indicator_color1 clrBlue // цвет отрисовки первого значения индикатора #property indicator_color2 clrRed // цвет отрисовки второго значения индикатора #property indicator_level1 15 // задаем уровни в окне отображения #property indicator_level2 50 #property indicator_level3 85 //--- input parameters // вводимые значения вручную input int barsToProcess=200; // количество свечей для счета double BayBuffer[],SellBuffer[]; // наименование массивов получаемых значений с плавающей точкой //+------------------------------------------------------------------+ //| Custom indicator initialization function | // инициализация //+------------------------------------------------------------------+ int init() { IndicatorDigits(2); // количество знаков после запятой в получаемых значениях индикатора IndicatorBuffers(2); // количество буферов индикатора SetIndexBuffer(1, BayBuffer); // присваивание индекса "1" массиву со значением BAY SetIndexEmptyValue(1, -1); // присваивание массиву пустого значения SetIndexStyle(1, DRAW_HISTOGRAM); // присваивание массиву стиля рисования, в данном случае гистограмма SetIndexLabel(1,"bay" ); // присваивание массиву текста при наведении мышкой SetIndexBuffer(0, SellBuffer); // присваивание индекса "0" массиву со значением SELL SetIndexEmptyValue(0, -1); // присваивание массиву пустого значения SetIndexStyle(0, DRAW_HISTOGRAM); // присваивание массиву стиля рисования SetIndexLabel(0,"sell" ); // присваивание массиву текста при наведении мышкой return(0); // конец инициализации } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //считалка //+------------------------------------------------------------------+ int OnCalculate (const int rates_total, // размер входных таймсерий const int prev_calculated, // обработано баров на предыдущем вызове const datetime &time[], // Time const double &open[], // Open const double &high[], // High const double &low[], // Low const double &close[], // Close const long &tick_volume[], // Tick Volume const long &volume[], // Real Volume const int &spread[] // Spread ) { double K,Z,W,N,T,path,buyers,sellers; // обявление получаемых переменных с плавающей точкой int limit=rates_total-prev_calculated; //---- main loop for(int i=0; i<limit; i++) //задание цикла для подсчета значений на открытой свече открытого таймфрейма { Z=high[i]-low[i]; // размер свечи в пунктах if(Z==0) Z=0.0001; path = MathAbs( close[i] - open[i]); // размер тела свечи в пунктах(MathAbs - всегда положительное) K=path/Z; // коэфициент "полезной работы" покупателей или продавцов if(close[i]>open[i]) { // расчет для растущей свечки W = high[i]- K*(high[i]-close[i]); // точка равновесия с учетом "полезной работы" на верхней тени свечи N = open[i] - K* (open[i] -low[i]); // точка равновесия с учетом "полезной работы" на нижней тени свечи T = close[i] - K* (close[i] - open[i]); // точка равновесия с учетом "полезной работы" на теле растущей свечи buyers = (high[i] -W) + (close[i] - T) + (open[i] - N); // покупатели в пунктах sellers = Z - buyers; // продавцы в пунктах } else { // расчет для падающей свечки W = high[i]- K*(high[i] - open[i]); // точка равновесия с учетом "полезной работы" на верхней тени свечи N = close[i] - K* (close[i] - low[i]); // точка равновесия с учетом "полезной работы" на нижней тени свечи T = open[i] - K* (open[i] - close[i]); // точка равновесия с учетом "полезной работы" на теле падающей свечи sellers = (W -open[i]) + (T - close[i]) + (N - low[i]); // продавцы в пунктах buyers = Z - sellers; // покупатели в пунктах } double BAY =100*buyers/(buyers+sellers); // покупатели в процентах BayBuffer[i] = BAY; // сохранение полученного значения в массиве double SELL = 100*sellers/(buyers+sellers); // продавцы в процентах SellBuffer[i] = SELL; // сохранение полученного значения в массиве if(BayBuffer[i]>SellBuffer[i]){ BayBuffer[i]=BAY;SellBuffer[i]=0; } // если покупателей больше, чем продавцов ,то отрисовываются только покупатели else { if(BayBuffer[i]<SellBuffer[i]){ SellBuffer[i]=SELL;BayBuffer[i]=0;} // если продавцов больше, чем покупателей ,то отрисовываются только продавцы } } return(0); } //+------------------------------------------------------------------+
большое спасибо
aedu:
большое спасибо
Всегда пожалуйста.
большое спасибо
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ПОМОГИТЕ пожалуйста в доработке,все вроде сделал ,компилятор пишет что ошибок нет а он не считает,в смысле не совсем не считает,а только считает и выводит на график в момент запуска или в момент переключения таймфрейма,а после закрытия свечки стопорится.В чем может быть причина?Перечитал кучу литературы но ответа так и не нашел.Заранее благодарен.