Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 249

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Что это за ошибка, так понимаю со стороны ДЦ плохая отработка?
Что это за ошибка, так понимаю со стороны ДЦ плохая отработка?
128
ERR_TRADE_TIMEOUT
Истек срок ожидания совершения сделки
Кусочек из обработчика:
128
ERR_TRADE_TIMEOUT
Истек срок ожидания совершения сделки
Кусочек из обработчика:
Эти обработки ошибок в коде есть, но их никогда не было, сегодня как-то решил проверить программу на демо одного популярного ДЦ, и впервые столкнулся с такой лабудой.
В общем правильно понимаю, что это проблема с оборудованием в ДЦ, а не на моей стороне?
подскажите пожалуйста, правильно ли прописана функция. идея в том, чтобы просчитать, пробивала ли цена среднюю в течении определённого количества предыдущих свечек
не исполняется эта функция вовсе, результат отсутствует. результат должен быть: если не пробивала returnToMA ==1, если пробивала returnToMA ==0
может есть прочие решения задачи?
returnToMA = MAtouch(TRADE_TF2,TRADE_TF2_MA,barscount)
int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_Н4, int tradema=10, int bars=100)
{
for(i=0;i<=bars;i++)
{
if(iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)) {return(0);break;}
if (iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)) {return(0);break;}
else return(1);
}
подскажите пожалуйста, правильно ли прописана функция. идея в том, чтобы просчитать, пробивала ли цена среднюю в течении определённого количества предыдущих свечек
не исполняется эта функция вовсе, результат отсутствует. результат должен быть: если не пробивала returnToMA ==1, если пробивала returnToMA ==0
может есть прочие решения задачи?
У вас в функции всегда будет ноль - т.к. максимум или минимум всегда больше/меньше или равен МА.
Свечу надо описывать по минимум двум параметрам в вашем случае:
1. Определить где открылась свеча - выше или ниже МА
2. В зависимости от п.1 проверять, было ли касание МА.
У вас в функции всегда будет ноль - т.к. максимум или минимум всегда больше/меньше или равен МА.
Свечу надо описывать по минимум двум параметрам в вашем случае:
1. Определить где открылась свеча - выше или ниже МА
2. В зависимости от п.1 проверять, было ли касание МА.
cпасибо. добавил условие, но постоянно возвращает 1. может где-то скобки поменять? либо брейк не отрабатывает и функция заканчивает работу присвоение 1 возвращаемому значению
int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_Н4, int tradema=10, int bars=100)
{
for(i=0;i<=bars;i++)
{
if( iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))
{return(0);break;}
if ( iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))
{return(0);break;}
else return(1);
}
cпасибо. добавил условие, но постоянно возвращает 1. может где-то скобки поменять? либо брейк не отрабатывает и функция заканчивает работу присвоение 1 возвращаемому значению
int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_Н4, int tradema=10, int bars=100)
{
for(i=0;i<=bars;i++)
{
if( iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))
{return(0);break;}
if ( iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
&&iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))
{return(0);break;}
else return(1);
}
Попробуйте так
Будет возвращаться 1, если условие соблюдено - было пересечение - нам же надо так?
Попробуйте так
Будет возвращаться 1, если условие соблюдено - было пересечение - нам же надо так?
спасибо, работает как часы по Вашему варианту кода
Добрый день!
Ребята, подскажите, можно ли программно вывести индикатор на график? Или только вручную?
Если можно, то какая команда даётся?