
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вместо многоточия нужно вставить свой код)))
Это взаимоисключающие функции. В коде используется либо start (старый формат), либо OnTick (новый формат). Конечно, если мы про код советника говорим. Если это индикатор, то вместо OnTick используется OnCalculate. Если же скрипт, то OnStart.понаплодили разномастицы блин...
скрипт, вышло так
bool IsTFReady(ENUM_TIMEFRAMES eTF)
{
iTime(Symbol(), eTF, 1);
return GetLastError() == ERR_NO_ERROR;
}
void start()
{
if (!IsTFReady(PERIOD_D1))
return;
............
}
у компилятора жалоб нет, но 4066 все равно лезет
похоже все-таки ручками придется взбадривать D1
у компилятора жалоб нет, но 4066 все равно лезет
Как определили, что ошибка возникает?
Да, кстати, сегодня как раз с этой функцией (IsTFReady) разбирался. Оказалось, что iTime(), если прошла без ошибок, не сбрасывает _LastError в ноль. Раньше сбрасывала. Поэтому стоит подкорректировать функцию:
похоже все-таки ручками придется взбадривать D1
Как определили, что ошибка возникает?
Да, кстати, сегодня как раз с этой функцией (IsTFReady) разбирался. Оказалось, что iTime(), если прошла без ошибок, не сбрасывает _LastError в ноль. Раньше сбрасывала. Поэтому стоит подкорректировать функцию:
Это вообще не вариант. )) Для чего тогда программы-то пишем?>>Как определили, что ошибка возникает?
у меня вместо исполнительных команд пока алерты с хай/лоу искомой свечки
IsTFReady поменял - похоже перестал ошибку выкидывать, но запускается теперь скрипт со второго раза
первый раз запрашивает начальные условия
extern int MaxRisk=2;,
.....
но не исполняется
со второго раза выполняется без 4066
Подскажите бестолковому...
Как реализовать задачу получения iLow и iHigh первой на дню !! 4часовой !! свечи на текущей паревроде как так должно быть -
datetime some_time= iTime(NULL, PERIOD_D1, 0);
int shift=iBarShift(NULL,PERIOD_H4,some_time);
double LowLine= (iLow(0,PERIOD_H4,shift)-200*Point); // Нижняя линия = минимум -200ps
double HighLine=(iHigh(0,PERIOD_H4,shift)-200*Point); // Верхняя линия = максимум + 200pps
Первая должна возвратить ДАТУ-ВРЕМЯ начала сегодняшнего дня
Вторая - взять НОМЕР первого 4часового бара по этой дате
Но datetime возвращает не дату-время, а тоже номер бара....
как из iTime вернуть дату в формате 2017-*сегодня*-00:00 ???????
Мне больше нравятся новые (для языка mql4) функции. В частности
В качестве start_time используем
и прибавляем к времени открытия дня
С указанием периода Н4.
Спасибо, "накостылял" чего-то, завтра посмотрим
Запускать скрипт просто на D1 надо, и все будет замечательно.
вопрос конечно с запуском с любого таймфрейма остался..так ради общего образования и полной красоты скрипта
Спасибо, "накостылял" чего-то, завтра посмотрим
Запускать скрипт просто на D1 надо, и все будет замечательно.
вопрос конечно с запуском с любого таймфрейма остался..так ради общего образования и полной красоты скрипта
Посмотри комментарий графика после запуска этого скрипта на любой период графика
Остаётся открытым вопрос о работе скрипта до открытия нужной, первой Н4 свечи. Но это решается простыми условиями if() в зависимости от желаемого действия в этом случае.
Посмотри комментарий графика после запуска этого скрипта на любой период графика
Остаётся открытым вопрос о работе скрипта до открытия нужной, первой Н4 свечи. Но это решается простыми условиями if() в зависимости от желаемого действия в этом случае.
вроде запускается без ошибок, но Н4-свечу берет не ту
время 2017-10-07 04:00
нужня первая свеча, т.е. 2017-10-07 00:00
>>Остаётся открытым вопрос о работе скрипта до открытия нужной, первой Н4 свечи.....
скрип будет запускаться заведомо позже закрытия этой свечи
торговать в 00-00 по терминалу в Новосибирске (это 4 часа ночи) проблематично :)
вроде запускается без ошибок, но Н4-свечу берет не ту
время 2017-10-07 04:00
нужня первая свеча, т.е. 2017-10-07 00:00
>>Остаётся открытым вопрос о работе скрипта до открытия нужной, первой Н4 свечи.....
скрип будет запускаться заведомо позже закрытия этой свечи
торговать в 00-00 по терминалу в Новосибирске (это 4 часа ночи) проблематично :)
Ааа... А для меня эта свеча нулевая... Тогда просто удалить из строки PeriodSeconds
Удали что выделено красным и будет то что надо.
А если так, то вопросФорум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Как получить iLow и iHigh первой !! 4часовой !! свечи
Alexey Viktorov, 2017.07.09 14:20
Остаётся открытым вопрос о работе скрипта до открытия нужной, первой Н4 свечи. Но это решается простыми условиями if() в зависимости от желаемого действия в этом случае.
Вобщем оба варианта рабочие, данные берутся правильные. но ошибка 4066 все равно из скрипта лезет :(
дальнейший кусок скрипта взят из другого скрипта который просто расчитывал лот и открывал прямой ордер.
работает как часы, в ошибке 4066 ни разу замечен не был.
только вместо прямого BUY ордера в новом скрипте поставлен отложенный -
OrderSend(Symbol(),OP_BUYSTOP,Lot,HighLine,10,LowLine,HighProfit," ",0,0,CLR_NONE);
параметр Lot из старого скрипта,
остальное -
double LowLine= (iLow(0,PERIOD_H4,shift)-200*Point); // Нижняя линия = минимум -200ps
double HighLine=(iHigh(0,PERIOD_H4,shift)+200*Point); // Верхняя линия = максимум + 200pps
double Channel=HighLine-LowLine; // Считаем канал
double LowProfit=(LowLine-Channel*3); // Нижняя точка профита
double HighProfit=(HighLine+Channel*3); // Верхняя точка профита
для первого варианта
double LowLine= mqlRates[0].low-200*Point; // Нижняя линия = минимум -200ps
double HighLine= mqlRates[0].high+200*Point; // Верхняя линия = максимум + 200pps
double Channel=HighLine-LowLine; // Считаем канал
double LowProfit=(LowLine-Channel*3); // Нижняя точка профита
double HighProfit=(HighLine+Channel*3); // Верхняя точка профита
для второго
если запускать скрипт с таймфрейма D1 - то ее нет
в принципе можно считать закрытой тему, если не интересно копаться дальше
скрипт отрабатывает то, что должен, вне зависимости от ошибки :)