Кто шарит MQL нужен совет!!!
Как получить значение скользящей средней для предыдущих 50 свечей.
Таким способом
в ma[0] я получаю только текущую. Если поменять 1 на 50, говорит что там нет данных.
double ma[];
CopyBuffer(ExtHandle,0,0,50,ma);
ma[0] - 50я свеча
ma[49] - текущая свеча
CopyBuffer(ExtHandle,0,0,50,ma)
Как получить значение скользящей средней для предыдущих 50 свечей.
Таким способом
в ma[0] я получаю только текущую. Если поменять 1 на 50, говорит что там нет данных.
1. Хендл индикатора нужно получать и проверять в OnInit(), у Вас же похоже на каждом тике пытаетесь получить хендл.
2. Пример универсальной функции в коде Trend Separate signals
//+------------------------------------------------------------------+ //| Get value of buffers | //+------------------------------------------------------------------+ double iGetArray(const int handle,const int buffer,const int start_pos,const int count,double &arr_buffer[]) { bool result=true; if(!ArrayIsDynamic(arr_buffer)) { Print("This a no dynamic array!"); return(false); } ArrayFree(arr_buffer); //--- reset error code ResetLastError(); //--- fill a part of the iBands array with values from the indicator buffer int copied=CopyBuffer(handle,buffer,start_pos,count,arr_buffer); if(copied!=count) { //--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the indicator, error code %d",GetLastError()); //--- quit with zero result - it means that the indicator is considered as not calculated return(false); } return(result); }
Объявили массивы (динамические), заказали по 6 элементов, развернули массивы (теперь в массивах элемент [0] соответствует правому бару на графике)
//+------------------------------------------------------------------+ //| Search trading signals | //+------------------------------------------------------------------+ bool SearchTradingSignals(void) { double ma_buy[],ma_sell[],fractals_up[],fractals_down[]; ArraySetAsSeries(ma_buy,true); ArraySetAsSeries(ma_sell,true); ArraySetAsSeries(fractals_up,true); ArraySetAsSeries(fractals_down,true); int start_pos=0,count=6; if(!iGetArray(handle_iMA_Buy,0,start_pos,count,ma_buy) || !iGetArray(handle_iMA_Sell,0,start_pos,count,ma_sell) || !iGetArray(handle_iFractals,UPPER_LINE,start_pos,count,fractals_up) || !iGetArray(handle_iFractals,LOWER_LINE,start_pos,count,fractals_down)) { return(false); }

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как получить значение скользящей средней для предыдущих 50 свечей.
Таким способом
в ma[0] я получаю только текущую. Если поменять 1 на 50, говорит что там нет данных.