![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
проще будет копировать одно, нужное значение:
Я тоже так подумал, но может быть ему нужно три?
Судя по коду, читать/писать он умеет
Это как угодно.
Тормозить будет - соптимизируете код.
время компиляции на сервере около 2000 мс - это очень много для мультивалютки+мультитайминга (4 пары, 4 таймфрейма)?
норм, на деньги не повлияет
)
Я тоже так подумал, но может быть ему нужно три?
Судя по коду, читать/писать он умеет
мне прям приятно слышать слова, т.к. я не программист, а проджект менеджер, который за счет своих мозгов пытается сэкономить плюс минус 50 долларов)
Я реализовал таким образом:
для каждой пары тф/символ есть свой массив, в который мы через copyhigh/copylow, а также с помощью циклов и switch условия заносим данные. Получилось очень громоздкое решение, но рабочее, главное - с одного графика, квадратики в итоге горят так, как надо)
норм, на деньги не повлияет
)
я к тому, что если мы добавим 30 пар и все таймфреймы, там около 30 секунд будет компилироваться, не положит ли терминал этим?
проще будет копировать одно, нужное значение:
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);
}
Спасибо огромное, время компиляции снизилось до 300 мс, а код стал намного более расширяемым (вместо _Symbol и _Period подставлял значения функций, определяющих по индексу таймфрейм и символ - все получилось аккуратно и, главное, работает:
{
for (int y=0; y<4; y++)
{
if (((iHigh(aSymbol(y),tf(x), 1)+iLow(aSymbol(y),tf(x), 1))/2)> iHigh(aSymbol(y),tf(x), 2))
ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Green);
else
{
if (((iHigh(aSymbol(y),tf(x), 1)+iLow(aSymbol(y),tf(x), 1))/2)< iLow(aSymbol(y),tf(x), 2))
ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Red);
else ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Gray);
}
}
}
Спасибо огромное, время компиляции снизилось до 300 мс, а код стал намного более расширяемым (вместо _Symbol и _Period подставлял значения функций, определяющих по индексу таймфрейм и символ - все получилось аккуратно и, главное, работает:
{
for (int y=0; y<4; y++)
{
if (((iHigh(aSymbol(y),tf(x), 1)+iLow(aSymbol(y),tf(x), 1))/2)> iHigh(aSymbol(y),tf(x), 2))
ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Green);
else
{
if (((iHigh(aSymbol(y),tf(x), 1)+iLow(aSymbol(y),tf(x), 1))/2)< iLow(aSymbol(y),tf(x), 2))
ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Red);
else ObjectSetInteger (0,"signal"+IntegerToString(x)+IntegerToString(y), OBJPROP_COLOR, Gray);
}
}
}
у Вас MQL4?
у Вас MQL4?