Здравствуйте, прошу помочь с кодом. Я хотел бы написать советник в котором можно было выполнить такой алгоритм:
1. Получить список нескольких валютных пар; 2. Выбирать валютную пару, и по этой валютной паре выбирать свечи;
Я могу делать по одной конкретной валютной паре, получать свечи по этой валютной паре а вот по нескольким даже не знаю как.
Прошу помочь, спасибо.
ЗЫ. Я видел на форуме где то ветку, с такой темой и примерами но потерял, найти не могу. Спасибо.
например
iVolume("EURUSD",PERIOD_M5,0) или
iHigh("EURUSD",PERIOD_M1,0)
вместо EURUSD можно написать любую другую пару
Читай документацию по iOpen(), iClose() и т.п. Ещё может пригодится MarketInfo для открытия ордеров по другой валютной паре
я наверное неправильно выразился. к примеру я использую следующий алгоритм:
for(int Nom_Candle=Bars - 1; Nom_Candle>=0; Nom_Candle--) - соответственно я перебираю все свечи некой валютной пары.
Так вот iVolume("EURUSD",PERIOD_M5,0) или iHigh("EURUSD",PERIOD_M1,0) это хорошо, но вот как задать некий массив который
уже содержит список нужных для анализа валютных пар, и по циклу поочереди выбирались валютные пары для анализа.
Т.е. чтобы вместо того чтобы каждый раз не прописывать iHigh("EURUSD",PERIOD_M1,0) а потом iHigh("EURCAD",PERIOD_M1,0) и т.п.
Спасибо.
rabanik писал(а) >>
это хорошо, но вот как задать некий массив который
уже содержит список нужных для анализа валютных пар, и по циклу поочереди выбирались валютные пары для анализа.
Т.е. чтобы вместо того чтобы каждый раз не прописывать iHigh("EURUSD",PERIOD_M1,0) а потом iHigh("EURCAD",PERIOD_M1,0) и т.п.
Спасибо.
// может быть так for( int i=1; i<29; i++) { switch(i) { case 1: para = "EURGBP"; break; case 2: para = "EURAUD"; break; case 3: para = "EURNZD"; break; case 4: para = "EURUSD"; break; //для каждой цифры пары прописать вручную case 28: para = "CHFJPY"; break; } HIGH[i]=iHigh(para,PERIOD_M1,0); OPEN[i]=iOpen(para,PERIOD_M1,0); }
я наверное неправильно выразился. к примеру я использую следующий алгоритм:
for(int Nom_Candle=Bars - 1; Nom_Candle>=0; Nom_Candle--) - соответственно я перебираю все свечи некой валютной пары.
Так вот iVolume("EURUSD",PERIOD_M5,0) или iHigh("EURUSD",PERIOD_M1,0) это хорошо, но вот как задать некий массив который
уже содержит список нужных для анализа валютных пар, и по циклу поочереди выбирались валютные пары для анализа.
Т.е. чтобы вместо того чтобы каждый раз не прописывать iHigh("EURUSD",PERIOD_M1,0) а потом iHigh("EURCAD",PERIOD_M1,0) и т.п.
Спасибо.
начитать можно только надо обеспечить актуальность данных на момент расчета
иначе можете попасть на ситуацию когда данные в массиве будут не актуальны
сделайте массив пар и перед расчетом начитывайте в массив значения
сначала массив пар
dimenson string gSYM[10];
// затем массивы значений
dimenson double gSYMO[10];
dimenson double gSYMC[10];
dimenson double gSYMH[10];
dimenson double gSYML[10];
// доступ по индексу ... iSYM в цикле по парам
// вроде так
iHigh( gSYM[ iSYM ],PERIOD_M1,0)
ошибка
/ может быть так for( int i=1; i<29; i++) { switch(i) { case 1: para = "EURGBP"; break; case 2: para = "EURAUD"; break; case 3: para = "EURNZD"; break; case 4: para = "EURUSD"; break; //для каждой цифры пары прописать вручную case 28: para = "CHFJPY"; break; } HIGH[i]=iHigh(i,PERIOD_M1,0); OPEN[i]=iOpen(i,PERIOD_M1,0); }
так правильно
HIGH[i]=iHigh( para ,PERIOD_M1,0);
я наверное неправильно выразился. к примеру я использую следующий алгоритм:
for(int Nom_Candle=Bars - 1; Nom_Candle>=0; Nom_Candle--) - соответственно я перебираю все свечи некой валютной пары.
Так вот iVolume("EURUSD",PERIOD_M5,0) или iHigh("EURUSD",PERIOD_M1,0) это хорошо, но вот как задать некий массив который
уже содержит список нужных для анализа валютных пар, и по циклу поочереди выбирались валютные пары для анализа.
Т.е. чтобы вместо того чтобы каждый раз не прописывать iHigh("EURUSD",PERIOD_M1,0) а потом iHigh("EURCAD",PERIOD_M1,0) и т.п.
Спасибо.
Есть функции ArrayCopyRates() и ArrayCopySeries(). Первая как раз копирует данные с нужной тебе пары и таймфрейма в массив. А дальше обрабатывай заполненный массив.
начитать можно только надо обеспечить актуальность данных на момент расчета
иначе можете попасть на ситуацию когда данные в массиве будут не актуальны
сделайте массив пар и перед расчетом начитывайте в массив значения
dimenson string gSYM[10];
// затем массивы значений
dimenson double gSYMO[10];
dimenson double gSYMC[10];
dimenson double gSYMH[10];
dimenson double gSYML[10];
// доступ по индексу ... iSYM в цикле по парам
// вроде так
iHigh( gSYM[ iSYM ],PERIOD_M1,0)
Спасибо, всем за ответы. Только хотел уточнить, что значит - "начитать можно только надо обеспечить актуальность данных на момент расчета"? Можно ли это предотвратить если при работе мультивалютного советника открыть окна по всем валютам по которым я собираюсь работать (чтобы я так понял данные были актуальны)? И второй вопрос - Я не слишком силен в программировании MQL4 как вы, можете ли вы мне скинуть небольшой пример - сначала массив пар // затем массивы значений. Спасибо.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, прошу помочь с кодом. Я хотел бы написать советник в котором можно было выполнить такой алгоритм:
1. Получить список нескольких валютных пар; 2. Выбирать валютную пару, и по этой валютной паре выбирать свечи;
Я могу делать по одной конкретной валютной паре, получать свечи по этой валютной паре а вот по нескольким даже не знаю как.
Прошу помочь, спасибо.
ЗЫ. Я видел на форуме где то ветку, с такой темой и примерами но потерял, найти не могу. Спасибо.