Обсуждение статьи "Торговый эксперт по книге Б. Вильямса "Новые измерения в биржевой торговле"" - страница 3

 

если заменить строку 422 if(exp_trade.PositionModify(m_Symbol,NormalizeDouble(StopLoss,s_info.Digits()),pos_info.TakeProfit())) в version "1.002" на

 if(exp_trade.PositionModify(m_Symbol,s_info.NormalizePrice(StopLoss),pos_info.TakeProfit()))

картина та же

Файлы:
 
natyog:

если заменить строку 422 if(exp_trade.PositionModify(m_Symbol,NormalizeDouble(StopLoss,s_info.Digits()),pos_info.TakeProfit())) в version "1.002" на

 if(exp_trade.PositionModify(m_Symbol,s_info.NormalizePrice(StopLoss),pos_info.TakeProfit()))

картина та же


От Вас нужны скриншоты:

  1. Терминал - окно "Тестер стратегий" - вкладка "Настройки"
  2. Терминал - окно "Тестер стратегий" - вкладка "Параметры"
  3. Тип торгового счёта: неттинг или хедж
  4. Название торгового сервера к которому Вы подключаетесь
  5. Приложите файл журнала тестера.

 
natyog:

если заменить строку 422 if(exp_trade.PositionModify(m_Symbol,NormalizeDouble(StopLoss,s_info.Digits()),pos_info.TakeProfit())) в version "1.002" на

 if(exp_trade.PositionModify(m_Symbol,s_info.NormalizePrice(StopLoss),pos_info.TakeProfit()))

картина та же


Просто "заменить" что-то в файле "h_ts_bw.mqh" - этого мало. Нужно ещё СКОМПИЛИРОВАТЬ файл советника - "tc_bw_new_version_2-02.mq5".

 

ну, это уже несерьезно. неужели вы полагаете, что не было сделано!? обижаете

терминал RoboForex, счет хедж

 
natyog:
ну, это уже несерьезно. неужели вы полагаете, что не было сделано!? обижаете

Ага, отлично. Значит будем искать ...

 
и журнал 
Файлы:
 
natyog:
и журнал 

Неправильный алгоритм обхода всех позиций -  позиция выбиралась по СИМВОЛУ:

void C_TS_BW::TrailingStop(void)
  {
   bool select=pos_info.Select(m_Symbol);

, а нужно было организовать обход всех позиций и выбирать позицию по индексу в списке позиций, что-то вроде этого (это просто пример):

//+------------------------------------------------------------------+
//| Calculate positions Buy and Sell                                 |
//+------------------------------------------------------------------+
void CalculatePositions(int &count_buys,int &count_sells)
  {
   count_buys=0.0;
   count_sells=0.0;

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY)
               count_buys++;

            if(m_position.PositionType()==POSITION_TYPE_SELL)
               count_sells++;
           }
//---
   return;
  }


неправильный алгоритм модификации позиции - позиция выбиралась по СИМВОЛУ

bool  PositionModify( 
   const string  symbol,     // символ 
   double        sl,         // цена Stop Loss  
   double        tp          // цена Take Profit 
   )

, а нужно было выбирать позицию по тикету:

bool  PositionModify( 
   const ulong   ticket,     // тикет позиции 
   double        sl,         // цена Stop Loss  
   double        tp          // цена Take Profit 
   )
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 

Ждём автора - пусть внесёт исправления.

 

Эксперт разрабатывался и соответсвенно была оформлена статья когда про хеджсчета для мт5 даже не смели заикаться.

По этому выбор позиции был реализован по символу.

 
Alexey Klenov:

Эксперт разрабатывался и соответсвенно была оформлена статья когда про хеджсчета для мт5 даже не смели заикаться.

По этому выбор позиции был реализован по символу.


Хэдж счета уже год как есть. Поэтому, пожалуйста, внесите все изменения, которые я озвучил выше.