Ошибки, баги, вопросы - страница 1521
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В то время как в справке функции IsStopped сказано, что работа программы принудительно завершается через 3 секунды, если поступила команда завершить выполнение mql-программы.
Причем если while(true) заменить на while(!IsStopped()) то при удалении с графика индикатор успешно завершает работу.
Всё понятно. Сделали послабление на обычное удаление.
При закрытии терминала всё будет жёстко. Не более 3 секунд.
И я не уверен, что мы будем писать это в документации, 1. чтобы не потворствовать написанию таких безбашенных индикаторов (Вы это написали с целью проверить?) 2. Как ослабили, так и ужесточили.
Забавная причина ошибки Internal Compiler Error ( функция используется в индикаторе ):
...Лечение очевидно, однако согласитесь - весьма забавный глюк. :)))
Написал Вам личное сообщение.
Dmitri Custurov:
Здравствуйте. Не получается написать код, который открывал бы позицию через n-количество баров после открытия предыдущей позиции. Пробовал использовать Time[i], iBarShift, iTime. Все безуспешно. В программировании новичок. Поиск ничего не дал.
Вот код:
if ((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))Timer=Time[0];}
TimerNull=iBarShift(NULL,0,Timer,false);
if ((TimerNull>=n)&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
Также пробовал и вот так:
Timer=Time[0];}
TimerNull=Time[0];
if ((TimerNull>=(Timer+2700))&&(z==1)) //Как пример здесь вместо n я поставил 2700 секунд, что при тестировании означало 3 15-минутные свечи) {int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
И еще вот так:
Timer=Time[0];}
TimerNull=Time[0];
if ((CurrentTime()>=(Timer+2700))&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red); //В этом случае когда я убирал 2700 то вторая сделка открывалась сразу же после первой в том же баре, и это логично. И даже когда я вместо 2700 ставил любую цифру до 600, вторая сделка так же открывалась в том же баре. При значении больше 600 вторая сделка не открывалась никогда. Не могу понять в чем проблема. Буду очень благодарен за помощь.
Параметры Timer и TimerNull имеют формат datetime.
в вашем примере нет перебора например позиций
if ((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))
поэтому он всегда выбирает 0 позицию.
Всё понятно. Сделали послабление на обычное удаление.
При закрытии терминала всё будет жёстко. Не более 3 секунд.
И я не уверен, что мы будем писать это в документации, 1. чтобы не потворствовать написанию таких безбашенных индикаторов (Вы это написали с целью проверить?) 2. Как ослабили, так и ужесточили.
Ну так и ужесточите уже, или исправьте справку. Потворствовать не потворствовать - это не серьезный разговор. От Вас программисты ожидают не "опеки", а понятного, хорошо документированного софта.
Разумеется у этого кода нет никакого предназначения кроме демонстрации, которую Вы сами попросили. И это вполне безобидно, безбашенно получится, если убрать Sleep и Comment заменить на Print. От спама гигабайтов принта в лог нет никакой защиты ни в четверке ни в пятерке.
Вот код:
if ((OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)&&(Signal==1))Timer=Time[0];}
TimerNull=iBarShift(NULL,0,Timer,false);
if ((TimerNull>=n)&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
Также пробовал и вот так:
Timer=Time[0];}
TimerNull=Time[0];
if ((TimerNull>=(Timer+2700))&&(z==1)) //Как пример здесь вместо n я поставил 2700 секунд, что при тестировании означало 3 15-минутные свечи) {int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red);
z=2;}
И еще вот так:
Timer=Time[0];}
TimerNull=Time[0];
if ((CurrentTime()>=(Timer+2700))&&(z==1))
{int send2=OrderSend(Symbol(), OP_SELL, Volume_, Bid, 0, 0, 0, NULL, 2, 0, Red); //В этом случае когда я убирал 2700 то вторая сделка открывалась сразу же после первой в том же баре, и это логично. И даже когда я вместо 2700 ставил любую цифру до 600, вторая сделка так же открывалась в том же баре. При значении больше 600 вторая сделка не открывалась никогда. Не могу понять в чем проблема. Буду очень благодарен за помощь.
Параметры Timer и TimerNull имеют формат datetime.
Вот одна из возможных реализаций. данный советник должен открывать ордер через указанное количество баров. И учимся правильно вставлять код советников, кнопочка SRC на панели сообщения.
111
Вопрос, наверное, к разработчикам сайта или администраторам сервиса Фриланс
---
Было: выполнено 568 работ, 75% персональных
Добавилось 13 работ (все персональные) и стало: выполнено 581, 75% персональных
---
Поэтому вопрос: расшифруйте плз, что означает 75% ?