Обнаружение срабатывания стопа в бэктесте OnTradeTransaction - страница 2

 
chinaski:

Здравствуйте, angevoyageur,

Прилагаю простой советник, который демонстрирует проблему. Советник открывает длинную позицию вместе со стопом и целью, затем короткую, затем длинную и так далее.

Также содержится метод сброса. Просто примените EUR.USD 1 минута 1 неделя и смотрите дампы сделок в журнале бэктестов.

Спасибо за помощь.

Здесь срабатывает ваш стоплосс :

2013.05.03 16:52106EURUSDкупитьв0.011.312401060.000.000.009 978.84
2013.05.03 18:35107EURUSDпродаватьаут0.011.310401070.000.00-2.009 976.84сл 1.31040

2013.05.07 18:45:27    Core 1    2013.05.03 18:35:40   trans=symbol=EURUSD price=1.3104000 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=107 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit

 
angevoyageur:

Здесь срабатывает ваш стоплосс:

2013.05.03 16:52106EURUSDкупитьв0.011.312401060.000.000.009 978.84
2013.05.03 18:35107EURUSDпродаватьаут0.011.310401070.000.00-2.009 976.84sl 1.31040

2013.05.07 18:45:27    Core 1    2013.05.03 18:35:40   trans=symbol=EURUSD price=1.3104000 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=107 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit

Здравствуйте,

но этоentry-type=IN, а не out....

 
chinaski:

Здравствуйте,

но этоentry-type=IN, а не out....

Возможно, но тем не менее это ваш sl сработал. Никогда не вер ьте религиозно тому, что говорит вам программа;-)
 
angevoyageur:
Возможно, но, тем не менее, это ваш sl сработал. Никогда не вер ьте религиозно тому, что говорит вам программа;-)

Вы правы, с другой стороны, как я могу знать, что я могу полагаться на то, что sl=0.0 и tp=0.0 означает, что это стоп или целевой ордер, а не: sl и tp просто пропущены (в структуре сделки)...?

 
chinaski:

Вы правы, с другой стороны, как я могу знать, что я могу полагаться на sl=0.0 и tp=0.0 означает, что это стоп или целевой ордер, а не: sl и tp просто пропущены (в структуре сделки)...?

В структуре не может быть пропущенных полей. Это сделка о сделке(DEAL_TYPE_SELL), сделка не может иметь SL/TP, это не имеет смысла. SL (или TP) - это ордер (своего рода специальный отложенный ордер), когда он срабатывает, ордер приводит к сделке. Вы можете проверить все это в OnTradeTransaction.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties - Documentation on MQL5
 
angevoyageur:

Структура не может иметь отсутствующее поле. Речь идет о сделке(DEAL_TYPE_SELL), сделка не может иметь SL/TP, это бессмысленно. SL (или TP) - это ордер (своего рода специальный отложенный ордер), когда он срабатывает, ордер приводит к сделке. Вы можете проверить все это в OnTradeTransaction.

Я, конечно, не имею в виду члены структуры, я имею в виду значения.
 
chinaski:
Я не имею в виду, конечно, структурные члены; я имею в виду ценности.
И что? Это немного запутано, могу ли я еще помочь?
 
angevoyageur:
И что? Это немного запутано, могу ли я еще помочь?

Да, это была помощь. Что значит "сбивает с толку"? Я задавался вопросом о получении всегда ENTRY_IN. Вы сказали, что никогда не верьте тому, что говорит мне программа. Я говорю, что вы правы, поэтому sl=0.0 или tp=0.0 (пропущенные значения) могут быть и ошибкой сервера - забыли указать значения.

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

Вы понимаете, что я имею в виду?

 
chinaski:

Да, это была помощь. Что значит "сбивает с толку"? Я задавался вопросом о получении всегда ENTRY_IN. Вы сказали, что никогда не верьте тому, что говорит мне программа. Я говорю, что вы правы, поэтому sl=0.0 или tp=0.0 (пропущенные значения) могут быть и ошибкой сервера - забыли указать значения.

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

Вы понимаете, что я имею в виду?

Это я запутался;-) Я читаю и отвечаю на многие темы. Я понимаю, что вы сказали, нужно уметь менять привычки с MT4.
 
chinaski:

Да, это была помощь. Что значит "сбивает с толку"? Я задавался вопросом о получении всегда ENTRY_IN. Вы сказали, что никогда не верьте тому, что говорит мне программа. Я говорю, что вы правы, поэтому sl=0.0 или tp=0.0 (пропущенные значения) могут быть и ошибкой сервера - забыли указать значения.

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

Вы понимаете, что я имею в виду?

Я проверил. Когда срабатывает SL/TP, у вас есть эти транзакции:

  1. TRADE_TRANSACTION_POSITION с установленными SL и TP (но еще нет сделки), затем
  2. TRADE_TRANSACTION_DEAL_ADD

ТОРГОВАЯ_ТРАНЗАКЦИЯ_ПОЗИЦИЯ

Изменение позиции, не связанное с заключением сделки. Этот тип транзакции показывает, что позиция была изменена на стороне торгового сервера. Может быть изменен объем позиции, цена открытия, уровни Stop Loss и Take Profit. Данные об изменениях представляются в структуре MqlTradeTransaction через обработчик OnTradeTransaction. Изменение позиции (добавление, изменение или закрытие) в результате исполнения сделки не приводит к возникновению транзакции TRADE_TRANSACTION_POSITION.