Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 413

 
petya33r:

Это-то я понимаю, но не получается написать. Советник либо торгует только по сигналам мувингов и не происходит открытие обратной позиции в случае убытка, либо просто вылетает терминал при начале тестирования. Значит я чего вообще написал что-то не обрабатываемое. Туго у меня с написанием. Нужна помощь ввиде написанного кода.

Вот кусок который как раз смотрит есть ли закрытые ордера и если OrderProfit()<0 получен убыток, то открывает противоположный. Но в связке с сигналами от мувингов не получается. Можете написать единый код чтобы и сигналы от мувингов и условие открытия противоположной позиции были?


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

Вы ищите не по истории, а по текущим позициям, вот логическая цепочка, на основе которой попробуйте написать код:

[блок работы с мувингами и выставления ордера]

1 запоминаем тикет и магическое число выставленного ордера

2 мониторим количество ордеров, если ордеров нет на рынке (это и значит что наш ордер был закрыт) то идём в п.3 или следим за этим конкретным ордером, пока его время закрытия не станет больше нуля, в этом случае исключаем пункт 3 и 4

3 находим наш ордер

4 убеждаемся что он закрыт

5 узнаём каким образом он был закрыт

6 если он был закрыт по стопу, то выставляем другой, отличный от него по направлению, ордер

 
petya33r:

Это-то я понимаю, но не получается написать. Советник либо торгует только по сигналам мувингов и не происходит открытие обратной позиции в случае убытка, либо просто вылетает терминал при начале тестирования. Значит я чего вообще написал что-то не обрабатываемое. Туго у меня с написанием. Нужна помощь ввиде написанного кода.

Вот кусок который как раз смотрит есть ли закрытые ордера и если OrderProfit()<0 получен убыток, то открывает противоположный. Но в связке с сигналами от мувингов не получается. Можете написать единый код чтобы и сигналы от мувингов и условие открытия противоположной позиции были?


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

RefreshRates()

 
petya33r:

Это-то я понимаю, но не получается написать. Советник либо торгует только по сигналам мувингов и не происходит открытие обратной позиции в случае убытка, либо просто вылетает терминал при начале тестирования. Значит я чего вообще написал что-то не обрабатываемое. Туго у меня с написанием. Нужна помощь ввиде написанного кода.

Вот кусок который как раз смотрит есть ли закрытые ордера и если OrderProfit()<0 получен убыток, то открывает противоположный. Но в связке с сигналами от мувингов не получается. Можете написать единый код чтобы и сигналы от мувингов и условие открытия противоположной позиции были?

Если профит ордера меньше нуля, то это ещё не означает, что ордер последний. Последний - это последний по времени закрытия.
 
TarasBY:
Мысль бъёт ключом! НО, как показывает опыт, то, что мы думаем (как должно быть, и то, что есть на самом деле - очень часто РАЗНЫЕ вещи. Что можно посоветовать: "Пропринтуйте всю последовательность выполнения своего кода.", - так быстрее всего отыскать ошибку (или убедиться в своей правоте). :)

Похоже только это и остается, иначе и не понять в чем разница в выставлении стопов при тестировании и при работе на демке.
 
Ekburg:


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

Вы ищите не по истории, а по текущим позициям, вот логическая цепочка, на основе которой попробуйте написать код:

[блок работы с мувингами и выставления ордера]

1 запоминаем тикет и магическое число выставленного ордера

2 мониторим количество ордеров, если ордеров нет на рынке (это и значит что наш ордер был закрыт) то идём в п.3 или следим за этим конкретным ордером, пока его время закрытия не станет больше нуля, в этом случае исключаем пункт 3 и 4

3 находим наш ордер

4 убеждаемся что он закрыт

5 узнаём каким образом он был закрыт

6 если он был закрыт по стопу, то выставляем другой, отличный от него по направлению, ордер


Спасибо за ответ. Буду пытаться. И все же, если будет возможность после работы написать такой код - напишите. Буду очень признателен Вам. Я пока стараюсь логику написанного кода пусть и простого и потом уже пытаюсь сделать что-то по аналогии.
 
khorosh:
Если профит ордера меньше нуля, то это ещё не означает, что ордер последний. Последний - это последний по времени закрытия.


Спасибо за уточнение.
 
petya33r:

Спасибо за ответ. Буду пытаться. И все же, если будет возможность после работы написать такой код - напишите. Буду очень признателен Вам. Я пока стараюсь логику написанного кода пусть и простого и потом уже пытаюсь сделать что-то по аналогии.

После работы я отдыхаю;))) А если пишу, то на заказ, не дорого;) =)
 
условие if ( а > в ...), то - не производить никаких действий (вне рынка - не покупать и не продавать ), как задать условие програмным кодом ? спасибо
 
bergkamp.:
условие if ( а > в ...), то - не производить никаких действий (вне рынка - не покупать и не продавать ), как задать условие програмным кодом ? спасибо

1-ый вариант:

    if (b >= a)
    {
        //торгуем
    }

2-ой вариант:

if (a > b) return;   // выходим из start()
 
TarasBY: спасибо

после выхода из старт он продолжит торговлю после смены сигнала ?

и чем отличается действия ? это и это

Причина обращения: