Ошибки, баги, вопросы - страница 410

 
papaklass:
Отслеживать отложенные ордера Вы можете используя фукнкцию OrdersTotal(). Сравнивайте ее текущее значение с предыдущим. А для того, чтобы не множить отложенные ордера используйте флаг установки ордера. Если флаг == true значит по этому символу ордер уже установлен. Сбросьте флаг, когда ордер сработает, т.е. OrdersTotal() измениться.

К счастью, эти азы я прошёл ещё год назад. По статьям, посвящённым начальным навыкам работы с MQL5. Чемпионат подтвердил - данная схема хороша для обучения, но не для повседневной торговли. Статьи Роша расставили все точки над i.

Да и речь сейчас не о том, как именно отслеживать состояние ордеров. Речь о том, что trade-параметры, которые я описал выше, могут значительно упростить работу как с ордерами, так и с позициями. С точки зрения отдельного пользователя (т.е. меня) можно достаточно эффективно ответить на вопрос "Что делать? Неизвестно", а также работать с ордерами точечно, а не через связку "символ - OrdersTotal()".

papaklass:
Все что Вам нужно знать, так это символ по которому произошло это событие.

 Фишка в том, что если отбросить обучающие парадигмы, то для работы с отложенными ордерами важнее знать тикет ордера, а  не символ. Точнее, работа по символу допустима, но много лишних телодвижений.

P.S. Про "подписку" - первый раз слышу. Отличный вариант.

 
papaklass:
 Я не претендую на истину в первой инстанции, а вот от Вашего высказывания о детском саде веет высокомерием.

Не принимайте близко к сердцу. Я исправил эту фразу ещё перед Вашим сообщением. Знаете, иногда напишешь, отправишь, - а потом при прочтении корректируешь возможные двусмысленности во второстепенных фразах.

По теме. У нас прямо противоположные подходы к торговле: мне всё равно - когда и как откроется/закроется позиция, потому что эксперт сам обрабатывает эти моменты (сдвигает TP, трейлинг-стоп и т.д.). Мне важно, чтобы отложенные ордера постоянно окутывали ситуацию на рынке. Именно поэтому я и акцентирую внимание на том, что высказывание типа "для функции  OnTrade() достаточно только одного символ-параметра" не отражает всех обычных/типичных стратегий. 

 
Interesting:

Разработчикам

Постоянный снос информации от торговом счете на Win 2003 SP2 (в терминальном режиме) это баг или так все и было задумано для повышения безопасности?

Верней так, если поочередно пользоваться одной и той же копией программы в обычном и терминальном режиме с разными учетными записями данные о счете периодически исчезают. Видимо если просто в терминальном режиме под разными учетными записями работать будет аналогичная ситуация (это пока не проверял).


Да, все верно.

Когда другой Windows пользователь (даже на том же компьютере) пытается получить доступ к терминалу, у которого сохранены пароли от другого Windows пользователя, то пароли принудительно сбрасываются. Это сделано для того, чтобы никто не смог своровать пароли.

 
Virty:

Во-во, вроде простой вопрос, а уже гуру спорят. Замучаешься, пока от тестера добьёшся правильной работы. Чтобы купить 1 лот EURUSD по текущей цене надо 3-4 проверки выполнить. А не проверишь -работать будет, но не правильно и , главное, по тихому. Только баланс отрицательный в итоге получится или ещё бред какой. И хорошо если проверки прошли успешно. А если какой нибудь SymbolInfoTick вернул false, то не понятно что и делать. Код ошибки на стенку вешать вместо приза на чемпионате?

Я пробовал "equity<0.55*balance" и "free_margin<100". Не заработало. Не знаю почему. Запутался я совсем в маржах этих.

Оставил if(AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)<55.0). Вроде работает.

Что хелп, что правила чемпионата написаны кратко на жаргоне разработчиков, а надо подробно и для чайников.

А что тут спорить ? Уровень маржи=Средства/Залоговая маржа*100%, или, в терминах MQL5:

AccountInfoDouble(ACCOUNT_MARGIN_LEVEL)=AccountInfoDouble(ACCOUNT_EQUITY)/AccountInfoDouble(ACCOUNT_MARGIN)*100=
AccountInfoDouble(ACCOUNT_EQUITY)/(AccountInfoDouble(ACCOUNT_EQUITY)-AccountInfoDouble(ACCOUNT_FREEMARGIN))*100

Эти параметры отображаются в Вашем терминале на вкладке 'Торговля', можете проверить. Что касается стоп-аута, посмотрите аналогичное обсуждение в 2007 г.

Установка Stop Out - MQL4 форум
  • www.mql5.com
Установка Stop Out - MQL4 форум
 
papaklass:

Вячеслав, Ваш ответ вселяет надежды. Кто то на форуме предлагал, на мой взгляд, приемлемое решение - подписка. Реализуйте эту подписку по аналогии с функцией iCustom(), в которой есть обязательные и не обязательные параметры. Пусть каждый трейдер, при инициализации эксперта подписывается на события, которые ему необходимы. Не на общее количество событий, а только на те, которые он считает важными для своей торговли. Такой подход (подписка) существенно облегчит разработку мильтивалютников и реально сократит код. Сделайте эксперимент хотя бы в двух функциях OnTrade() и OnTick(). Сделайте минимум - символ. Потом можно увеличить количество событий (параметров). Практика - критерий истины. Пока не попробуешь, не поймешь, какие трудности могут возникнуть.

PS Аналогия с функцией GetLastError(), которая возвращает значение системной переменной LastError, наверно, более уместна, чем аналогия с функцией iCustom(). Введите системную переменную TradeEvent и при срабатывании OnTrade(), выводите значение этой переменной.  

Про подписку первый раз слышу, но как основа идеи (типа подписки на события тамера или стакан цен) очень даже хорошая мысль.

Также идея о константе по типу _Error довольно интересно.

На мой взгляд символ нужно передавать обязательно, в принципе можно начать двигаться в этом направлении уже сейчас, чтобы успеть до чемпионата внедрить хоть какие-то новшества в этой области.

Yedelkin:

Фишка в том, что если отбросить обучающие парадигмы, то для работы с отложенными ордерами важнее знать тикет ордера, а  не символ. Точнее, работа по символу допустима, но много лишних телодвижений.

Сначала нужно реализовать только символ, потом будет время подумать над тем что и как дополнительно передавать. Хорошо бы подобным образом поступить с OnTrade() и OnTick().

Развивая тему про подписку можно организовать подписку на тики определенной пары.

 
Yedelkin:

Не принимайте близко к сердцу. Я исправил эту фразу ещё перед Вашим сообщением. Знаете, иногда напишешь, отправишь, - а потом при прочтении корректируешь возможные двусмысленности во второстепенных фразах.

По теме. У нас прямо противоположные подходы к торговле: мне всё равно - когда и как откроется/закроется позиция, потому что эксперт сам обрабатывает эти моменты (сдвигает TP, трейлинг-стоп и т.д.). Мне важно, чтобы отложенные ордера постоянно окутывали ситуацию на рынке. Именно поэтому я и акцентирую внимание на том, что высказывание типа "для функции  OnTrade() достаточно только одного символ-параметра" не отражает всех обычных/типичных стратегий. 

Согласен, не отражает. Но тем не менее начинать нужно именно с символа, а тикеты ордеров/сделок или что-то другое потом к этому прибавится вопрос иной.

Renat:

Да, все верно.

Когда другой Windows пользователь (даже на том же компьютере) пытается получить доступ к терминалу, у которого сохранены пароли от другого Windows пользователя, то пароли принудительно сбрасываются. Это сделано для того, чтобы никто не смог своровать пароли.

Понятно, спасибо (в принципе так и думал, решил убедиться).
 
Interesting:

Сначала нужно реализовать только символ, потом будет время подумать над тем что и как дополнительно передавать.

...начинать нужно именно с символа, а тикеты ордеров/сделок или что-то другое потом к этому прибавится вопрос иной.

В общем, акценты уже расставлены, просто хотелось бы отметить, что если действовать по принципу "каждый тянет одеяло на себя" (типа "дайте мне только символ-параметр" или "только тикет-параметр"), то можно ничего не добиться. Поэтому мой вопрос изначально был сформулирован  с учётом минимальной конфигурации параметров. Именно "минимальной конфигурации", поскольку я ожидал, что у более продвинутых пользователей появятся свои пожелания по поводу расширения/уточнения их списка.

Поэтому было несколько удивительно, что возникли предложения ограничиться только одним параметром (символ-параметром). Особенно удивительно это на фоне ответа stringo, который вообще ничего не говорил о том, что у разработчиков возникают проблемы с количеством параметров для функции  OnTrade(). Проблема была в том, что "по одному и тому же тикету может прийти куча сообщений". Ну так ведь они и сейчас приходят, только в обезличенной форме. И будут приходить независимо от того, сколько параметров будет введено для функции.

...В прошлом году долго не мог понять, о каких "костылях" периодически говорят профи. Теперь же, на основании обсуждения темы про параметры для OnTrade(), возникла стойкая ассоциация: "костыли" == полумеры при решении того или иного вопроса. Думаю, что вопрос про параметры для OnTrade() будет решён без них. Хвала, как говорится, разработчикам, что они отличаются комплексным подходом к решению проблем! :)

 

Что означает сообщение "pump result 0" в конце тестирования?
 

 
MoneyJinn:

build 466: Результаты одиночного тестирования отличаются от результатов проведенной за минуту до этого оптимизации.

В чем причина? Какие обновленные параметры тестер берет с рынка при новом тестировании?

Можете приложить результаты?
 
Ashes:

Что означает сообщение "pump result 0" в конце тестирования?
 

Случайно проскочившее отладочное сообщение. Цифра после pump result соответствует номеру при старте
Причина обращения: