Такое поможет?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопросы от начинающих MQL4 MT4 MetaTrader 4
Renat Akhtyamov, 2016.12.06 19:23
Вот здесь:
iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0);
меняйте период (таймфрейм) на 1,5,15,30,60,240,1440,10080,43200 //M1.M5.M30 ... и т.д.
или впишите Period() вместо 15, тогда при переключении ТФ вручную, будет автоматически задан текущий
Такое поможет?
Такое поможет?
проблема в том, что если мы работаем через индикаторы, то в вызове iиндикатор везде указывается таймфрейм, и мы можем спокойно сделать его tf(x). Но как в этом случае с ценой быть. Наверняка же можно как-то подгрузить high/low определенного бара на определенном таймфрейме
В идеале - мультивалютник+мультитайминг, но я согласен буду уже и на просто мультитайминг (но не откажусь от и мультивалютника)
string Symb="EURUSD";
CopyClose(Symb,_Period,i,1,pClose);
int i - номер бара с искомой ценой bid, меняем в цикле при нееобходимсоти
попробуйте подставить свой массив с периодами вместо _Period, а вместо Symb - строковый массив с валютными парами
//MQL5
string Symb;
CopyClose(Symb,_Period,i,1,pClose);
int i - номер бара с нужной ценой
попробуйте подставить массив с периодами
да, посмотрел по документациям, но в случае, если несколько таймфреймов - то для каждого тф нужен будет свой массив, каким образом можно подставлять под каждый прогон цикла новый массив?
Если вот так сделать, это не слишком коряво будет?
for (int x=0;x<2;x++)
{
switch (x)
{
case 0:
{
CopyHigh(Symbol(), tf(x), 0,3, price_buffer_m1_high);
CopyLow(Symbol(), tf(x), 0,3, price_buffer_m1_low);
}
case 1: {
CopyHigh(Symbol(), tf(x), 0,3, price_buffer_m5_high);
CopyLow(Symbol(), tf(x), 0,3, price_buffer_m5_low);
}
}
да, посмотрел по документациям, но в случае, если несколько таймфреймов - то для каждого тф нужен будет свой массив, каким образом можно подставлять под каждый прогон цикла новый массив?
Если вот так сделать, это не слишком коряво будет?
Это как угодно.
Тормозить будет - соптимизируете код.
проще будет копировать одно, нужное значение:
if (((iHigh(_Symbol,_Period, 1)+iLow(_Symbol,_Period, 1))/2)> iHigh(_Symbol,_Period, 2))
{
}
double iHigh (string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
if(index < 0) return(-1);
double Arr[];
if(CopyHigh(symbol,timeframe, index, 1, Arr)>0)
return(Arr[0]);
else return(-1);
}
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
{
if(index < 0) return(-1);
double Arr[];
if(CopyLow(symbol, timeframe, index, 1, Arr)>0)
return(Arr[0]);
else return(-1);
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте!
Идея следующая: мы должны сравнивать в определенном формате данные с предыдущей и предпредыдущей свечи. Сам код я написал, все работает корректно. Однако, хочу усложнить код (нет) и себе жизнь (да), чтобы один индикатор отвечал сразу за несколько таймфреймов.
Вот код условия (привет, Торговый хаос Билла Уильямса):
if (((high[1]+low[1])/2)> high[2])
ObjectSetInteger (0,"signal"+IntegerToString(x), OBJPROP_COLOR, Green);
else
{
if (((high[1]+low[1])/2)< low[2])
ObjectSetInteger (0,"signal"+IntegerToString(x), OBJPROP_COLOR, Red);
else ObjectSetInteger (0,"signal"+IntegerToString(x), OBJPROP_COLOR, Gray);
}
Все замечательно работает, сигналы идут так, как надо. Только надо еще, чтобы остальные объекты (которые "сигнал+х") показывали данные с других таймфреймов. Я подумал, что можно создать 4 массива:
double price_buffer_m1_high[];
double price_buffer_m1_low[];
double price_buffer_m5_high[];
double price_buffer_m5_low[];
А также использовать функцию определения таймфрейма:
ENUM_TIMEFRAMES tf(int index)
{
switch(index)
{
case 0:return(PERIOD_M1);
case 1:return(PERIOD_M5);
case 2:return(PERIOD_M15);
case 3:return(PERIOD_M30);
case 4:return(PERIOD_H1);
case 5:return(PERIOD_H4);
case 6:return(PERIOD_D1);
case 7:return(PERIOD_W1);
case 8:return(PERIOD_MN1);
}
return(PERIOD_CURRENT);
}
Однако, я не понимаю, каким образом сопоставить таймфрейм и данные свечей, которые можно взять из high, low массивов. Подскажите, пожалуйста