Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ну блокировать я бы конечно не стал. Я бы передал наверх эту ошибку и уже там решал, что с ней делать.
Если в этот момент заблокировать работу советника - то возможно останутся открытые позиции этим советником, а это будет катастрофа.
:-) вот Вы сами и ответили на свой вопрос о длительной паузе. Она делается для того, чтобы переждать время действия сигнала на открытие позиции или установку ордера.
Благодарю Вас, Василий, ещё раз за успешное сбивание меня с пути истинного. Я уж чуть было не бросился исправлять коды... И ещё раз благодарю, что обратно на свою дорогу меня вернули :-)
:-) вот Вы сами и ответили на свой вопрос о длительной паузе. Она делается для того, чтобы переждать время действия сигнала на открытие позиции или установку ордера.
Благодарю Вас, Василий, ещё раз за успешное сбивание меня с пути истинного. Я уж чуть было не бросился исправлять коды... И ещё раз благодарю, что обратно на свою дорогу меня вернули :-)
Если честно, то не понял логики.
Ну например выставили мы ордер на 0.000001 лота. Нам сервер ессессено за это по рукам.
А мы вместо того, чтобы поменять лот(снаружи функции), делаем паузу.
В результате этой паузы действительно может пропасть сигнал на установку ордера, но должны то мы сменить лот, а не ждать.
Поэтому тут я не согласен насчет паузы. Надо просто выходить из этой функции и наверх передавать код ошибки и уже там его обрабатывать.
Если пойти по моему пути - то возможно мы не пропустим профитную сделку!!! А можем и лося поймать :)
PS: Я таки собью вас с пути неистинного :)
а мне казалось, нужно сразу вызывать функцию расчета лота (а не выходить на верх), выход на верх только после переполнения счетчика ошибок
Да конечно нужно сразу вызывать эту функцию, но если все же произошла ошибка!!!
Выходом наверх я называю ситуацию когда надо выйти из функции SetOrder.
Я вижу себе это примерно так:
int ticket = SetOrder(.....);
if (ticket > 0) {
// all ok} else {
// correct logic error
}
int SetOrder(....) // возвращает либо тикет, либо номер ошибки только с отрицательным знаком.
{
int ticket = OrderSend(....)
if (ticket < 0) {
// correct set order errors
}
}
Т.е я считаю нужно разделять ошибки логики от ошибок установки ордера. Надеюсь сегодня я приведу пример реализации.
Если честно, то не понял логики.
Функцию расчёта размера лота я строю таким образом, что неверный лот (ноль) она выдаст только в случае не хватки денег. В остальных случаях лот нормализуется и загоняется в рамки между минимальным и максимальным размерами. Если денег не хватает, то надо ждать, когда закроется какая-нибудь позиция.
Ну например выставили мы ордер на 0.000001 лота. Нам сервер ессессено за это по рукам.
А почему мы это сделали? Почему мы намеренно стали передавать неверный размер лота? Чем мы можем оправдать такое своё поведение?
Надо просто выходить из этой функции и наверх передавать код ошибки и уже там его обрабатывать.
Просто я считаю, что ваша функция - это библиотечная функция, т.е универсальная, и поэтому нужно разделять все ошибки на 2 категории:
Функцию расчёта размера лота я строю таким образом, что неверный лот (ноль) она выдаст только в случае не хватки денег. В остальных случаях лот нормализуется и загоняется в рамки между минимальным и максимальным размерами. Если денег не хватает, то надо ждать, когда закроется какая-нибудь позиция.
блок проверки ошибок.
Вот такое вот у меня видение этого дела :) Как уже писал выше надеюсь сегодня приведу пример реализации.
Мой вариант моды:
Мой вариант моды:
Уважаемый TheXpert, Ваш код выглядит очень компактно. Что, конечно же, являет собой жирный плюс! Спасибо.
В прикрепленном файле эксперт в котором используется функция. За основу взял эксперта AI.
Не успел сделать проверку работы функции по времени. Т.е я считаю, что после истечения ну например 8 минут нужно заново проверять сигнал.
Добавлена генерация ошибок торгового сервера, что позволит детально изучать работу функции и выявлять ошибки.
errTest - последовательность в которой генерируются ошибки, 0 ошибки нет. Накидал последовательность от балды никакого подвоха в них искать не нужно.
Жду критики :)
Как и обещал выкладываю свой вариант функции.
В прикрепленном файле эксперт в котором используется функция. За основу взял эксперта AI.
Не успел сделать проверку работы функции по времени. Т.е я считаю, что после истечения ну например 8 минут нужно заново проверять сигнал.
Добавлена генерация ошибок торгового сервера, что позволит детально изучать работу функции и выявлять ошибки.
errTest - последовательность в которой генерируются ошибки, 0 ошибки нет. Накидал последовательность от балды никакого подвоха в них искать не нужно.
Жду критики :)
На функцию мне в принципе по боку, можно сказать одно :), не буду оригинален и скажу как всегда :) -- слишком перегружена.
В итоге советник из 5 КБ чистого и понятного кода превратился в 32 килобайтную бандуру, колупаться в которой у меня, допустим, нет ни малейшего желания.
Есть вопросы по коду.
1. Если Вы дизаблите работу эксперта, то он больше работать не будет, пока не перезапустят. Почему не сделать выжидание относительно большого промежутка времени?
2. Нейросеть -- во-первых она никогда не выдает сигнал флет. Во-вторых -- как можно надеяться, что она что-то оптимизирует, если у нее нет порога??? отсутствием порога Вы убиваете ее и без того малую эффективность(линейная все-таки) процентов на 80.
ЗЫЖ: Не обижайтесь, я тут критиком в этом топике подрабатываю :) .