Скачать MetaTrader 5

Достать значения индикаторов с другого таймфрейма?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Где найти программиста? В сервисе Фриланс!
Itchy
91
Itchy 2006.03.08 12:55 
Можно ли как-то в эксперте достать значения индикаторов с другого таймфрейма? Спасибо=)
Editor
103
Editor 2006.03.08 14:08  
Itchy:
Можно ли как-то в эксперте достать значения индикаторов с другого таймфрейма? Спасибо=)
В редакторе MetaEditor <меню Вид - Навигатор - Словарь - Технические индикаторы >

double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

Расчет скользящего среднего.

Параметры:

symbol - Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
period - Период усреднения для вычисления скользящего среднего.
ma_shift - Сдвиг индикатора относительно ценового графика.
ma_method - Метод усреднения. Может быть любым из значений методов скользящего среднего (Moving Average).
applied_price - Используемая цена. Может быть любой из ценовых констант.
shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).
Itchy
91
Itchy 2006.03.08 15:10  
ну тогда почему код
int start()
{
double ma1=iMA(NULL,PERIOD_M1,14,0,MODE_SMA,PRICE_CLOSE,0);
double ma2=iMA(NULL,PERIOD_M5,14,0,MODE_SMA,PRICE_CLOSE,0);
Print(ma1*ma2);
}
Печатает только 0?

И еще, как взять индикатор с другого сивола, что писать вместо NULL? спасибо
MetaQuotes
Админ
24950
Renat Fatkhullin 2006.03.09 13:07  
Все нормально печатает.
Не забудьте, что запрашиваемые таймфреймы должны быть загружены в терминал.
Если какого-то таймфрейма еще нет, то ноль, умноженный на другое число, даст ноль.
Editor
103
Editor 2006.03.09 13:47  
Itchy:
ну тогда почему код
int start()
{
double ma1=iMA(NULL,PERIOD_M1,14,0,MODE_SMA,PRICE_CLOSE,0);
double ma2=iMA(NULL,PERIOD_M5,14,0,MODE_SMA,PRICE_CLOSE,0);
Print(ma1*ma2);
}
Печатает только 0?
Обязательно нужна подкачка исторических данных. Посмотрите пример:
int start() { double ma1 = iMA(NULL, PERIOD_M1, 14, 0, MODE_SMA, PRICE_CLOSE, 0); if(GetLastError() == 4066) { double Lastma1 = ma1; for( int k = 0; k < 5; k++) { Sleep(1000); ma1 = iMA(NULL, PERIOD_M1, 14, 0, MODE_SMA, PRICE_CLOSE, 0); if(Lastma1 == ma1 && GetLastError() == 0) break; Lastma1 = ma1; } } double ma2=iMA(NULL,PERIOD_M5,14,0,MODE_SMA,PRICE_CLOSE,0); if(GetLastError() == 4066) { double Lastma2 = ma2; for( k = 0; k < 5; k++) { Sleep(1000); ma2 = iMA(NULL, PERIOD_M5, 14, 0, MODE_SMA, PRICE_CLOSE, 0); if(Lastma2 == ma2 && GetLastError() == 0) break; Lastma2 = ma2; } } Print(ma1); Print(ma2); Print(ma1*ma2); //---- return(0); }

Itchy:

И еще, как взять индикатор с другого сивола, что писать вместо NULL? спасибо
Обозначение символа в кавычках, например:
"NZDUSD"

Данный символ должен присутствовать в окне "Обзор рынка".
Юрий Макаров
358
Юрий Макаров 2006.03.09 16:29  
Editor:

Обязательно нужна подкачка исторических данных. Посмотрите пример:
Может все таки ввести функцию гарантирующую подкачку заданной глубины истории?
Пусть даже эта глубина будет ограничена разумным максимальным пределом ..

Тогда весь приведенный код превратился бы в 2 строки.
И просто и всем понятно ...
Itchy
91
Itchy 2006.03.09 17:23  
Спасибо, будем разбираться=))
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий