День добрый.
1. Не вся информация выводится в журнал. По замыслу в эксперте открывается три одинаковых ордера одновременно перед открытием ордера в журнал выводится строка "----------------------------------", но почему-то при открытии третьего ордера она не выводится.
2. Прошу заметить и обьяснить следующее: перед открытием ордера всегда расчитывается переменная OP_Bid = Open[0], т.е. она должна быть одинакова для всех трех ордеров. Но это не так. Открытие ордеров происходит по приходу новой свечи поэтому значение Open[0] должно существовать для текущей свечи. Вот что происходит на самом деле:
Выложите кусок кода отвечающий за открытие ордеров и рассчет OP_Bid. Вряд ли это раскроет смысл советника, зато можно будет подумать в чем дело...
Вот код функции открытия ордера:
int OpenShort(double volume) { ... while(true) { Print("-----------------------------------------------------------------------------"); if(IsStopped()==true) return(-1); if(GetTickCount() - StartWaitingTime > MaxWaiting_sec * 1000) { Print("Open_Short(): Превышен лимит ожидания (" + MaxWaiting_sec + " сек.)!"); return(-1); } RefreshRates(); StopLevel=MarketInfo(Symbol(),MODE_STOPLEVEL); OP_Bid = Open[0]; ...
Эта функция вызывается три раза подряд, поэтому значение OP_Bid должно быть одинаково для всех трех случаев.
Так же Print("-----------------------------------------------------------------------------");
должна вызываться прямо перед попыткой открыть ордер.
Отметил зеленым строчку, которой там не должно быть !
Такая строка может появится только после расчета полного лота, но никак не перед ним.
Интересные вещи творятся. Возможно дело в сортировке выводимых в журнал строк, которые имеют одно и то же время, можно только гадать.
Вы не обращаете внимание на время, а смотрите только на порядок. Так как время указывается с точностью до секунд, то некоторые записи могут стоять раньше или позже.
Renat, извините, но такое обьяснение меня не устраивает, потому
как я не могу понять, как то, что в программе происходит раньше
в журнале появляется позже. ;)
А как Вы ответите на вопрос об OP_Bid=Open[0] ?
С Уважением
Скопируйте логи к себе (склейте из кусков), поразбирайтесь, учитывайте время с точностью до секунд и сделайте четкое утверждение. В данном случае не вопрос, а именно обоснованное и проверенное утверждение.
Так как это Ваши логи, то именно Вам и нужно разбираться. Все выглядит именно так, что Вы смотрите на порядок записей, не замечая времени.
Скопируйте логи к себе (склейте из кусков), поразбирайтесь, учитывайте время с точностью до секунд и сделайте четкое утверждение. В данном случае не вопрос, а именно обоснованное и проверенное утверждение.
Renat "...да ты не мудри, ты пальцем покажи"((с) какой-то анекдот).
Я реально не вижу, то на что Вы так настойчиво намекаете.
Вот так должен выглядеть журнал в идеале (взял из тестера):
2007.10.09 22:26:11 2007.10.05 18:00 20_200_v3_ChampionShipExpert EURUSD,H1: OpenLong(): Buy order opened : 1.4153 OP_Ask = 1.4153 попытка - 1 2007.10.09 22:26:11 2007.10.05 18:00 20_200_v3_ChampionShipExpert EURUSD,H1: open #9 buy 1.80 EURUSD at 1.4153 sl: 1.4020 tp: 1.4193 ok 2007.10.09 22:26:11 2007.10.05 18:00 20_200_v3_ChampionShipExpert EURUSD,H1: ----------------------------------------------------------------------------- 2007.10.09 22:26:11 2007.10.05 18:00 20_200_v3_ChampionShipExpert EURUSD,H1: OpenLong(): Buy order opened : 1.4153 OP_Ask = 1.4153 попытка - 1 2007.10.09 22:26:11 2007.10.05 18:00 20_200_v3_ChampionShipExpert EURUSD,H1: open #8 buy 1.80 EURUSD at 1.4153 sl: 1.4020 tp: 1.4193 ok 2007.10.09 22:26:11 2007.10.05 18:00 20_200_v3_ChampionShipExpert EURUSD,H1: ----------------------------------------------------------------------------- 2007.10.09 22:26:11 2007.10.05 18:00 20_200_v3_ChampionShipExpert EURUSD,H1: OpenLong(): Buy order opened : 1.4153 OP_Ask = 1.4153 попытка - 1 2007.10.09 22:26:11 2007.10.05 18:00 20_200_v3_ChampionShipExpert EURUSD,H1: open #7 buy 1.80 EURUSD at 1.4153 sl: 1.4020 tp: 1.4193 ok 2007.10.09 22:26:11 2007.10.05 18:00 20_200_v3_ChampionShipExpert EURUSD,H1: ----------------------------------------------------------------------------- 2007.10.09 22:26:11 2007.10.05 18:00 20_200_v3_ChampionShipExpert EURUSD,H1: Общий лот = 5.5798тут все по-порядку именно так и должно быть.
2007.10.08 20:02:37 | 20_200_v3_ChampionShipExpert EURUSD,H1: Open_Short(): Sell order opened : 1.4051 OP_Bid = 1.4057 попытка - 1 |
2007.10.08 20:02:32 | 20_200_v3_ChampionShipExpert EURUSD,H1: open #4888437 sell 1.40 EURUSD at 1.4051 sl: 1.4257 tp: 1.4030 ok |
2007.10.08 20:02:32 | 20_200_v3_ChampionShipExpert EURUSD,H1: ----------------------------------------------------------------------------- |
2007.10.08 20:02:32 | 20_200_v3_ChampionShipExpert EURUSD,H1: Open_Short(): Sell order opened : 1.4051 OP_Bid = 1.4057 попытка - 1 |
2007.10.08 20:02:32 | 20_200_v3_ChampionShipExpert EURUSD,H1: open #4888436 sell 1.40 EURUSD at 1.4051 sl: 1.4257 tp: 1.4030 ok |
2007.10.08 20:02:26 | 20_200_v3_ChampionShipExpert EURUSD,H1: ----------------------------------------------------------------------------- |
2007.10.08 20:02:26 | 20_200_v3_ChampionShipExpert EURUSD,H1: Open_Short(): Sell order opened : 1.4052 OP_Bid = 1.4052 попытка - 1 |
2007.10.08 20:02:26 | 20_200_v3_ChampionShipExpert EURUSD,H1: open #4888432 sell 1.40 EURUSD at 1.4052 sl: 1.4252 tp: 1.4025 ok |
2007.10.08 20:02:21 | 20_200_v3_ChampionShipExpert EURUSD,H1: ----------------------------------------------------------------------------- |
2007.10.08 20:02:21 | 20_200_v3_ChampionShipExpert EURUSD,H1: Общий лот = 4.2177 |
Есть небольшая проблема при выводе с сортировкой в пределах секунды, когда есть несколько записей в одну секунду. Но все записи выводятся в логи.
Жаль, что мне в очередной раз приходится указывать на контроль СЕКУНД. Достаточно просто переставить пару строк местами в пределах _секунды_, чтобы получить искомую конфигурацию:
Есть небольшая проблема при выводе с сортировкой в пределах секунды, когда есть несколько записей в одну секунду. Но все записи выводятся в логи.
Ох Renat, ну у Вас и выдержка, спасибо. Тепереча догнал, спасибо,
что пальцем показали. Меня как заклинило, казалось что, то, что
относится к одному ордеру должно иметь одно и тоже время. Поэтому
никак не получалось отсортировать строки. Позор на мою седую
голову :)))) , позор :))
Спасибо за помощь.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
День добрый.
1. Не вся информация выводится в журнал. По замыслу в эксперте открывается три одинаковых ордера одновременно перед открытием ордера в журнал выводится строка "----------------------------------", но почему-то при открытии третьего ордера она не выводится.
2. Прошу заметить и обьяснить следующее: перед открытием ордера всегда расчитывается переменная OP_Bid = Open[0], т.е. она должна быть одинакова для всех трех ордеров. Но это не так. Открытие ордеров происходит по приходу новой свечи поэтому значение Open[0] должно существовать для текущей свечи. Вот что происходит на самом деле:
Вы видете, что строка "-------------------------------------" есть только перед открытием первых двух ордеров, а переменная OP_Bid = 1.4052 в первом случае и 1.4057 во втором и третьем случае (выделено желтым).
Прокомментируйте пожалуйста. Это не критично, но просто хотелось бы узнать, что происходит.
Спасибо