Ошибки, баги, вопросы - страница 1862

Slawa:

Решается алгоритмичнски.

Для HFT не надо каждый раз лазить в историю. Подготовьте необходимую информацию в процессе инициализации и держите её наготове, чтобы очень быстро доступаться

А узнать, как закрылась последняя позиция?
fxsaber:

 и оформил в виде заявки в СД.

А вот это совершенно непонятно, зачем. Хотите дискуссии, проводите её здесь. В сервисдеске не учат программированию
fxsaber:
А узнать, как закрылась последняя позиция?

Во время инициализации сходили один раз и запомнили.

В процессе работы самостоятельно сохраняйте всю нужную информацию. Все инструменты есть

Slawa:
А вот это совершенно непонятно, зачем. Хотите дискуссии, проводите её здесь. В сервисдеске не учат программированию

Сталкивался несколько раз, когда разработчики в силу своих обстоятельств пропускают сообщение. В СД так не выходит.


Дело не в уровне владения программированием. И, наверное, он неплох у меня, что касается MQL5. Привожу доводы, что работа с историей очень медленная и странная, с точки зрения даже логики использования. HistoryDealGet*- O(N). Почему все так сделали? Почему нет нормального доступа к ИМЕЮЩЕЙСЯ истории?

Slawa:

Во время инициализации сходили один раз и запомнили.

В процессе работы самостоятельно сохраняйте всю нужную информацию. Все инструменты есть

Нет, дурачка не включаю. Как понять, что позиция закрылась по TP или SL в тестере без обращения к истории?

Вы предлагаете запомнить TP/SL и на тике, где позиции не стало, проверить, удовлетворяет ли тик TP/SL-закрытию? Кому удовлетворяет - по тому уровню с высокой вероятностью закрыл и тестер. Так?

Ну а профит закрытой позиции? - Аналогично? Тогда это уже сродни написанию своего тестера.

fxsaber:

Нет, дурачка не включаю. Как понять, что позиция закрылась по TP или SL в тестере без обращения к истории?

Вы предлагаете запомнить TP/SL и на тике, где позиции не стало, проверить, удовлетворяет ли тик TP/SL-закрытию? Кому удовлетворяет - по тому уровню с высокой вероятностью закрыл и тестер. Так?

Ну а профит закрытой позиции? - Аналогично? Тогда это уже сродни написанию своего тестера.

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

ACCOUNT_PROFIT в тестере показывает ерунду.


Добавлю:

1. для биржевых инструментов

Как следствие, неправильно оцениваются эквити, просадка и т.д.

2. а так же неверно работает логика советника при ориентировании на суммарный профит/убыток позиций.

ориентируемся на показания ACCOUNT_PROFIT при закрытии.

2017.04.20 11:30:26.318 Core 1  2017.04.17 18:02:46   Профит = 333.01

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

закрываем по убытку

2017.04.20 11:30:26.318 Core 1  2017.04.17 22:02:08   Профит = -338.66

в итоге получаем

#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
//--- global variable
CPositionInfo  m_position;                   // trade position object
CTrade         m_trade;                      // trading object
input     string symb="GOLD-6.17";
input     string symb1="GOLD-9.17";
input     double  ТП  =333;
datetime date1;
double i1,ask1,ask2,bid1,bid2,last1,last2,profit;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  double price1=SymbolInfoDouble(symb,SYMBOL_BID);
  double price2=SymbolInfoDouble(symb1,SYMBOL_BID);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
Comment("");
   }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
  {
//---
      profit=AccountInfoDouble(ACCOUNT_PROFIT);
      Comment("ПРофит = ",profit);
     if(PositionsTotal()==0 )
     {
      m_trade.Buy(1.00,symb);
      m_trade.Buy(1.00,symb1);    
     }

   if( MathAbs(profit)>=ТП )
     {
      Print("Профит = ",profit);
     CloseAll();
     }

  }  
//+------------------------------------------------------------------+
void CloseAll()
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         m_trade.PositionClose(m_position.Ticket());
  }
//+------------------------------------------------------------------+

kaus_bonus:

Добавлю:

В СД разбираемся...
Slawa:
Видимо, я что-то не понимаю в HFT. Насколько я знаю, когда торгуешь "очень быстро", то тебе нет никакого дела до предыдущих сделок.

HFT привел в качестве примера ТС, которая просто совершает много сделок.

Можно запустить прогон за большой период какого-нибудь скальпера. Главное, чтобы было много сделок (десятки тысяч). Тогда проявятся минусы текущей реализации работы с историей.


Ситуация сейчас такая. Если много сделок, не обращайся к истории.

fxsaber:
В СД разбираемся...


это здорово.

достаточно убрать использование LAST цены,чтобы получить адекватные результаты