Спасибо за EnumToString. Гораздо умнее в использовании.
Да, я беспокоюсь о транзакциях в бэктесте. Но для того, чтобы сделать его максимально реальным, транзакция должна быть такой же, как и в реальной торговле.
TRADE_TRANSACTION_POSITION не имеет отношения к сделке, как вы также упоминали ранее. Я полагаю, что это указывает, например, когда вы перевели деньги на свой счет.
Похоже, что некоторые транзакции недоступны при бэктестинге. Это ошибка или ограничение бэктестинга. При работе на форвард-тесте у меня есть TRADE_TRANSACTION_POSITION при срабатывании SL/TP.
Похоже, что некоторые транзакции недоступны при бэктестинге. Это ошибка или ограничение бэктестинга. При работе на форвард-тесте у меня есть TRADE_TRANSACTION_POSITION, когда срабатывает SL/TP.
У меня все еще есть проблема с получением цены исполнения стопа или лосса, прикрепленного к позиции - в бэктесте. Пока не знаю, как это будет выглядеть в реальных условиях.
Это из журнала бэктестов:
KP 023:18:29 Core 12010.05.1111:00:00 instant buy 0.01 EURUSD at 1.26882 (1.26871 / 1.26882 / 1.26871)
EM 023:18:29 Core 12010.05.1111:00:00 deal #2 buy 0.01 EURUSD at 1.26882 done (based on order #2)
MG 023:18:29 Core 12010.05.1111:00:00 deal performed [#2 buy 0.01 EURUSD at 1.26882]
RI 023:18:29 Core 12010.05.1111:00:00 order performed buy 0.01 at 1.26882 [#2 buy 0.01 EURUSD at 1.26882]
JS 023:18:29 Core 12010.05.1111:00:00 CTrade::OrderSend: instant buy 0.01 EURUSD at 1.26882 [done at 1.26882]
LP 023:18:29 Core 12010.05.1111:00:00 position modified [buy 0.01 EURUSD 1.26882 sl: 1.26809 tp: 1.27028]
LM 023:18:29 Core 12010.05.1111:00:00 CTrade::OrderSend: modify EURUSD (sl: 1.26809, tp: 1.27028) [done]
LR 023:18:29 Core 12010.05.1111:00:00 trans=symbol=EURUSD price=1.2688200 volume=0.01 sl=0.0000000 tp=0.0000000 order=2 deal=2 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.0100:00 price_trigger=0.0000000 profit=0.00 order-open=0.000000 order-current=0.000000 deal-price=0.000000
GG 023:18:29 Core 12010.05.1111:18:40 take profit triggered buy 0.01 EURUSD 1.26882 sl: 1.26809 tp: 1.27028 [#3 sell 0.01 EURUSD at 1.27028]
MD 023:18:29 Core 12010.05.1111:18:40 deal #3 sell 0.01 EURUSD at 1.27028 done (based on order #3)
PI 023:18:29 Core 12010.05.1111:18:40 deal performed [#3 sell 0.01 EURUSD at 1.27028]
NO 023:18:29 Core 12010.05.1111:18:40 order performed sell 0.01 at 1.27028 [#3 sell 0.01 EURUSD at 1.27028]
RS 023:18:29 Core 12010.05.1111:18:40 trans=symbol=EURUSD price=1.2702800 volume=0.01 sl=0.0000000 tp=0.0000000 order=3 deal=3 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.0100:00 price_trigger=0.0000000 profit=0.00 order-open=0.000000 order-current=0.000000 deal-price=0.000000
JM 023:18:29 Core 12010.05.2009:00:00 ut =3.00 candle=o=1.24130 c=1.24170 h=1.24360 l=1.24100 b=39 uw=190 lw=29
FK 023:18:29 Core 12010.05.2009:00:00 instant sell 0.01 EURUSD at 1.24180 (1.24180 / 1.24195 / 1.24180)
MG 023:18:29 Core 12010.05.2009:00:00 deal #4 sell 0.01 EURUSD at 1.24180 done (based on order #4)
IG 023:18:29 Core 12010.05.2009:00:00 deal performed [#4 sell 0.01 EURUSD at 1.24180]
CN 023:18:29 Core 12010.05.2009:00:00 order performed sell 0.01 at 1.24180 [#4 sell 0.01 EURUSD at 1.24180]
EO 023:18:29 Core 12010.05.2009:00:00 CTrade::OrderSend: instant sell 0.01 EURUSD at 1.24180 [done at 1.24180]
EQ 023:18:29 Core 12010.05.2009:00:00 position modified [sell 0.01 EURUSD 1.24180 sl: 1.24253 tp: 1.24034]
DO 023:18:29 Core 12010.05.2009:00:00 CTrade::OrderSend: modify EURUSD (sl: 1.24253, tp: 1.24034) [done]
HI 023:18:29 Core 12010.05.2009:00:00 trans=symbol=EURUSD price=1.2418000 volume=0.01 sl=0.0000000 tp=0.0000000 order=4 deal=4 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.0100:00 price_trigger=0.0000000 profit=0.00 order-open=0.000000 order-current=0.000000 deal-price=0.000000
JH 023:18:29 Core 12010.05.2009:00:40 stop loss triggered sell 0.01 EURUSD 1.24180 sl: 1.24253 tp: 1.24034 [#5 buy 0.01 EURUSD at 1.24253]
HI 023:18:29 Core 12010.05.2009:00:40 deal #5 buy 0.01 EURUSD at 1.24253 done (based on order #5)
MK 023:18:29 Core 12010.05.2009:00:40 deal performed [#5 buy 0.01 EURUSD at 1.24253]
NL 023:18:29 Core 12010.05.2009:00:40 order performed buy 0.01 at 1.24253 [#5 buy 0.01 EURUSD at 1.24253]
KQ 023:18:29 Core 12010.05.2009:00:40 trans=symbol=EURUSD price=1.2425300 volume=0.01 sl=0.0000000 tp=0.0000000 order=5 deal=5 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.0100:00 price_trigger=0.0000000 profit=0.00 order-open=0.000000 order-current=0.000000 deal-price=0.000000
PJ 023:18:30 Core 12010.08.2609:08:00 ut =3.83 candle=o=1.27238 c=1.27274 h=1.27448 l=1.27238 b=35 uw=174 lw=0
IH 023:18:30 Core 12010.08.2609:08:00 instant sell 0.01 EURUSD at 1.27276 (1.27276 / 1.27287 / 1.27276)
GH 023:18:30 Core 12010.08.2609:08:00 deal #6 sell 0.01 EURUSD at 1.27276 done (based on order #6)
MR 023:18:30 Core 12010.08.2609:08:00 deal performed [#6 sell 0.01 EURUSD at 1.27276]
HR 023:18:30 Core 12010.08.2609:08:00 order performed sell 0.01 at 1.27276 [#6 sell 0.01 EURUSD at 1.27276]
PR 023:18:30 Core 12010.08.2609:08:00 CTrade::OrderSend: instant sell 0.01 EURUSD at 1.27276 [done at 1.27276]
FE 023:18:30 Core 12010.08.2609:08:00 position modified [sell 0.01 EURUSD 1.27276 sl: 1.27349 tp: 1.27130]
LK 023:18:30 Core 12010.08.2609:08:00 CTrade::OrderSend: modify EURUSD (sl: 1.27349, tp: 1.27130) [done]
NE 023:18:30 Core 12010.08.2609:08:00 trans=symbol=EURUSD price=1.2727600 volume=0.01 sl=0.0000000 tp=0.0000000 order=6 deal=6 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.0100:00 price_trigger=0.0000000 profit=0.00 order-open=0.000000 order-current=0.000000 deal-price=0.000000
HM 023:18:30 Core 12010.08.2609:08:40 stop loss triggered sell 0.01 EURUSD 1.27276 sl: 1.27349 tp: 1.27130 [#7 buy 0.01 EURUSD at 1.27349]
Как вы можете видеть в последней строке, цена исполнения указана в журнале -> [#7 buy 0.01 EURUSD at 1.27349].
Но ни одна структура, транзакция, сделка или история ордеров не предоставляет эту цену.
Эта строка сбрасывает транзакцию, связанную со сработавшим стопом:
angevoyageur: Спасибо, я изучу этот вопрос как можно скорее.
Это очень мило. Не спешите.
Я проверил каждую сделку, запрос и результат, переданный в OnTradeTransaction.
Цена сработавшего стоп-лосса, указанная в журнале бэктестов (создается MetaTrader), не может быть найдена, кроме как как цена sl, но не как цена или цена сделки или цена исполнения.
Я проверил каждую сделку, запрос и результат, переданный в OnTradeTransaction.
Цена сработавшего стоп-лосса, упомянутая в журнале бэктестов (создается MetaTrader), не может быть найдена, кроме как как цена sl, но не как цена или цена сделки или цена исполнения.
Таким образом, речь идет только о бэктестинге. Я тестировал со своим собственным кодом и получил 3 сделки при срабатывании стопа:
С помощью DEAL_ADD я получаю цену сделки, то есть SL в моем случае. Все кажется мне правильным. Я предлагаю вам прислать мне код, который вы используете, журнал бэктестов (в виде файла) и скриншот настроек тестера стратегий. Тогда я смогу воспроизвести точно такой же тест, как у вас, и проанализировать результат. Вы можете отправить мне сообщение PM, если хотите.
Я проверил. Когда срабатывает SL/TP, у вас есть эти транзакции :
При выходе в короткую позицию - из девственной позиции, я получаю 3 транзакции:
A вход )
После срабатывания стоп-лосса я получаю
B выход )
НетTRADE_TRANSACTION_POSITION. Я думаю, что вы не можете использовать его здесь.
Резюме:
Открывается шорт, первая транзакция
entry-type=IN trans-type=DEAL_ADD order_type=BUYsl=1.3119000 tp=1.3088000
Шорт закрыт, по стопу или цели, первая отраженная транзакция
entry-type=IN trans-type=DEAL_ADD order_type=BUY sl=0.0 tp=0.0
Это сбивает с толку. Должно быть так:
open short:
entry-type=IN trans-type=DEAL_ADD order_type=SELLsl=1.3119000 tp=1.3088000
закрыть шорт:
entry-type=OUT trans-type=DEAL_ADD order_type=BUY sl=0.0 tp=0.0
Я проверил. Когда срабатывает SL/TP, у вас есть эти транзакции :
При выходе в шорт - из девственной позиции, я получаю 3 сделки:
A вход )
После срабатывания стоп-лосса я получаю
B выход )
НетTRADE_TRANSACTION_POSITION.Я думаю, что вы не можете использовать его здесь.
...Вы пропускаете некоторые сделки, не знаю почему. Из-за бэктестинга?
Небольшое отступление, вместо :
вы можете использовать :
EnumToString(t.order_type)Небольшое отступление, вместо :
вы можете использовать :
Спасибо за EnumToString. Гораздо умнее в использовании.
Да, я беспокоюсь о транзакциях в бэктесте. Но для того, чтобы сделать его максимально реальным, транзакция должна быть такой же, как и в реальной торговле.
TRADE_TRANSACTION_POSITION не имеет отношения к сделке, как вы также упоминали ранее. Я полагаю, что это указывает, например, когда вы перевели деньги на свой счет.
...
Похоже, что некоторые транзакции недоступны при бэктестинге. Это ошибка или ограничение бэктестинга. При работе на форвард-тесте у меня есть TRADE_TRANSACTION_POSITION при срабатывании SL/TP.
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=0 entry-type=IN trans-type=ORDER_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_DELETE
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_HISTORY_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.00 sl=0.0000000 tp=0.0000000 order=19683612 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_POSITION
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3173500 volume=0.01 sl=1.3174200 tp=1.3170100 order=0 deal=0 entry-type=IN trans-type=POSITION order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_DEAL_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=16655372 entry-type=OUT trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.34
Похоже, что некоторые транзакции недоступны при бэктестинге. Это ошибка или ограничение бэктестинга. При работе на форвард-тесте у меня есть TRADE_TRANSACTION_POSITION, когда срабатывает SL/TP.
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=0 entry-type=IN trans-type=ORDER_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_ORDER_DELETE
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_HISTORY_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.00 sl=0.0000000 tp=0.0000000 order=19683612 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_POSITION
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3173500 volume=0.01 sl=1.3174200 tp=1.3170100 order=0 deal=0 entry-type=IN trans-type=POSITION order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) TRADE_TRANSACTION_DEAL_ADD
2013.05.08 19:20:29 tc_ea_trans (EURUSD,M1) trans=symbol=EURUSD price=1.3170100 volume=0.01 sl=0.0000000 tp=0.0000000 order=19683612 deal=16655372 entry-type=OUT trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.34
Здравствуйте, angevoyageur,
У меня все еще есть проблема с получением цены исполнения стопа или лосса, прикрепленного к позиции - в бэктесте. Пока не знаю, как это будет выглядеть в реальных условиях.
Это из журнала бэктестов:
Как вы можете видеть в последней строке, цена исполнения указана в журнале -> [#7 buy 0.01 EURUSD at 1.27349].
Но ни одна структура, транзакция, сделка или история ордеров не предоставляет эту цену.
Эта строка сбрасывает транзакцию, связанную со сработавшим стопом:
Это код функции дампа:
Я попытался получить цену исполнения из истории ордеров и сделок: безрезультатно.
Здравствуйте, angevoyageur,
...Спасибо, я изучу этот вопрос как можно скорее.
Это очень мило. Не спешите.
Я проверил каждую сделку, запрос и результат, переданный в OnTradeTransaction.
Цена сработавшего стоп-лосса, указанная в журнале бэктестов (создается MetaTrader), не может быть найдена, кроме как как цена sl, но не как цена или цена сделки или цена исполнения.
Это очень мило. Не спешите.
Я проверил каждую сделку, запрос и результат, переданный в OnTradeTransaction.
Цена сработавшего стоп-лосса, упомянутая в журнале бэктестов (создается MetaTrader), не может быть найдена, кроме как как цена sl, но не как цена или цена сделки или цена исполнения.
Таким образом, речь идет только о бэктестинге. Я тестировал со своим собственным кодом и получил 3 сделки при срабатывании стопа:
2013.05.15 10:22:27 Core 1 2013.05.10 16:20:37 Symbol : EURUSD event : TRADE_TRANSACTION_DEAL_ADD(6)
2013.05.15 10:22:27 Core 1 2013.05.10 16:20:37 Symbol : EURUSD event : TRADE_TRANSACTION_ORDER_DELETE(2)
2013.05.15 10:22:27 Core 1 2013.05.10 16:20:37 Symbol : EURUSD event : TRADE_TRANSACTION_HISTORY_ADD(3)