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

 
angevoyageur:

Итак, мы говорим только о бэктестинге. Я тестировал с собственным кодом и получил 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)

С помощью DEAL_ADD я получаю цену сделки, то есть SL в моем случае. Все кажется мне правильным. Я предлагаю вам прислать мне код, который вы используете, журнал бэктестов (в виде файла) и скриншот настроек тестера стратегий. Тогда я смогу воспроизвести точно такой же тест, как у вас, и проанализировать результат. Вы можете отправить мне сообщение PM, если хотите.

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

подскажите, пожалуйста, где именно хранится исполненный стоп или целевая цена:

a) MqlTradeTransaction

b) MqlTradeRequest

c) MqlTradeResult

вместе с участником. Какой сервер MetaTrader?

Спасибо

Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 
angevoyageur:

Таким образом, мы говорим только о бэктестинге. Я тестировал со своим собственным кодом и получил 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)

С помощью DEAL_ADD я получаю цену сделки, то есть SL в моем случае. Все кажется мне правильным. Я предлагаю вам прислать мне код, который вы используете, журнал бэктестов (в виде файла) и скриншот настроек тестера стратегий. Тогда я смогу воспроизвести точно такой же тест, как у вас, и проанализировать результат. Вы можете отправить мне сообщение PM, если хотите.

Если вы имеете в виду TRADE_TRANSACTION_DEAL_ADD и MqlTradeTransaction.price, то эта цена всегда равна 0.

Даже если я не фильтруюTRADE_TRANSACTION_DEAL_ADD, цена всегда равна 0, после того как отправлен ордер на вход.

Я использую

CTrade.Buy(...)  // place entry

и

CTrade.PositionModify // to attach stop and target

и

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
...
}

для перехвата транзакций.

 
chinaski:

Если вы имеете в виду TRADE_TRANSACTION_DEAL_ADD и MqlTradeTransaction.price, то эта цена всегда равна 0.

Даже если я не фильтруюTRADE_TRANSACTION_DEAL_ADD, цена всегда равна 0, после отправки входного ордера.

Я использую

и

и

чтобы поймать транзакции.

Это касается MqlTradeTransaction.price, она не всегда равна 0.

2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   stop loss triggered buy 0.10 EURUSD 1.30163 sl: 1.29663 tp: 1.30663 [#47  sell 0.10 EURUSD at 1.29663]
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   deal #47  sell 0.10 EURUSD at 1.29663 done (based on order #47)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   deal performed [#47  sell 0.10 EURUSD at 1.29663]
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   order performed sell 0.10 at 1.29663 [#47  sell 0.10 EURUSD at 1.29663]
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   ----------------TRANSACTION START---------------------------
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   Order #47   type : ORDER_TYPE_BUY(0)  state : ORDER_STATE_STARTED(0)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   Deal #47  type : DEAL_TYPE_SELL(1)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   Price = 1.29663 Volume = 0.1 SL = 0.0 TP = 0.0 Activation price = 0.0

В ваших результатах есть что-то странное, но я не могу понять, что именно с помощью предоставленного вами кода.

 

Вот лог с вашим советником tc_ea_trans :

2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   take profit triggered buy 0.01 EURUSD 1.31553 sl: 1.31503 tp: 1.31603 [#331  sell 0.01 EURUSD at 1.31603]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal #331  sell 0.01 EURUSD at 1.31603 done (based on order #331)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal performed [#331  sell 0.01 EURUSD at 1.31603]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   order performed sell 0.01 at 1.31603 [#331  sell 0.01 EURUSD at 1.31603]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   price corrected from 1.31609 to 1.31604, deviation: 10 (instant sell 0.01 EURUSD at 1.31609 sl: 1.31659 tp: 1.31559)(1.31604 / 1.31609 / 1.31604)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   instant sell 0.01 EURUSD at 1.31604 sl: 1.31659 tp: 1.31559 (1.31604 / 1.31609 / 1.31604)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal #332  sell 0.01 EURUSD at 1.31604 done (based on order #332)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal performed [#332  sell 0.01 EURUSD at 1.31604]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   order performed sell 0.01 at 1.31604 [#332  sell 0.01 EURUSD at 1.31604]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.31609 sl: 1.31659 tp: 1.31559 [done at 1.31604]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   TRADE_TRANSACTION_DEAL_ADD
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   trans=symbol=EURUSD price=1.31603 00 volume=0.01 sl=0.0000000 tp=0.0000000 order=331 deal=331 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
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   TRADE_TRANSACTION_ORDER_DELETE
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   trans=symbol=EURUSD price=1.3160300 volume=0.01 sl=0.0000000 tp=0.0000000 order=331 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 prof
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   TRADE_TRANSACTION_HISTORY_ADD
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   trans=symbol=EURUSD price=1.3160300 volume=0.00 sl=0.0000000 tp=0.0000000 order=331 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profi
 

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

найдите в приложении еще один простой советник. Это должно продемонстрировать его. Он просто размещает ордер с жестким стопом и целью (входные параметры) и регистрирует каждую сделку.

Я очень ценю вашу помощь.

(Возможно, вы также можете показать ваши сделки на вход)

Не могли бы вы также дать мне ip mt-сервера?

Файлы:
tc_ea_trans.mq5  11 kb
 
chinaski:

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

найдите в приложении еще один простой советник. Это должно продемонстрировать его. Он просто размещает ордер с жестким стопом и целью (входные параметры) и регистрирует каждую сделку.

Я очень ценю вашу помощь.

(Возможно, вы также можете показать свои сделки на вход)

Не могли бы вы также дать мне ip mt-сервера?

Я использую советник, который вы только что опубликовали. MQ demo, точка доступа Europe. Бэктестинг с :


Я взял случайную выдержку из журнала:

2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   take profit triggered buy 0.01 EURUSD 1.31751 sl: 1.31681 tp: 1.31821 [#107  sell 0.01 EURUSD at 1.31821]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal #107  sell 0.01 EURUSD at 1.31821 done (based on order #107)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal performed [#107  sell 0.01 EURUSD at 1.31821]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   order performed sell 0.01 at 1.31821 [#107  sell 0.01 EURUSD at 1.31821]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   requote 1.31823 / 1.31836 / 1.31823 (instant sell 0.01 EURUSD at 1.31836 sl: 1.31906 tp: 1.31766)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.31836 sl: 1.31906 tp: 1.31766 [requote (1.31823/1.31836)]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   instant buy 0.01 EURUSD at 1.31840 sl: 1.31770 tp: 1.31910 (1.31827 / 1.31840 / 1.31827)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal #108  buy 0.01 EURUSD at 1.31840 done (based on order #108)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal performed [#108  buy 0.01 EURUSD at 1.31840]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   order performed buy 0.01 at 1.31840 [#108  buy 0.01 EURUSD at 1.31840]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   CTrade::OrderSend: instant buy 0.01 EURUSD at 1.31840 sl: 1.31770 tp: 1.31910 [done at 1.31840]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   trans=symbol=EURUSD price=1.31821 00 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
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   trans=symbol=EURUSD price=1.3182100 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 prof
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   trans=symbol=EURUSD price=1.3182100 volume=0.00 sl=0.0000000 tp=0.0000000 order=107 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profi

Итак, у вас все еще есть проблема с обнаружением срабатывания SL/TP?

Файлы:
 
angevoyageur:

Я использую советник, который вы только что опубликовали. MQ демо, точка доступа Европа. Бэктестинг с :


Я взял случайную выдержку из журнала:

Итак, у вас все еще есть проблема с обнаружением срабатывания SL/TP?

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

Но теперь я вижу эту транзакцию ПОСЛЕ записи в лог.

"сработал тейк-профит"

в моем последнем прогоне также - вместе с ценой исполнения.

Прошу прощения за потраченное время.

 
chinaski:

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

Но теперь я вижу эту транзакцию ПОСЛЕ записи в лог.

...
Журнал, который я вам предоставил, это журнал из программы просмотра, когда вы читаете журнал непосредственно из вкладки "Журнал тестера стратегий ", он отображается в обратном порядке.
 
angevoyageur:
Журнал, который я вам предоставил, получен из программы просмотра, когда вы читаете журнал непосредственно из вкладки журнала тестера стратегий, он отображается в обратном порядке.
Я обычно открываю журнал из вкладки журнала бэктеста, где порядок сверху вниз. Так что на самом деле запись в журнале, указывающая цену, пишется до того, как произошла сделка.
 

Здравствуйте, Анжевояжер,

"Точка доступа Европа. Бэктестинг с :"

Вы можете дать мне полный IP этого сервера?

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