Советник Buy stop Sell stop Grid в виде класса - страница 4

 
Vladimir Karputov:

Для шага 35 расширенные итоги:

Direction_of_trades_EURUSD_35

Здесь видно, что

  • практически 50% всех случаев - это когда длина непрерывающихся трейдов равна "1". То есть имеем ситуации типа: открыли Buy и затем перевернули позицию (то есть закрыли Buy с убытком и открыли Sell) или такая ситуация: открыли Sell и затем перевернули позицию (то есть закрыли Sell с убытком и открыли Buy). Таким образом ситуации с длиной непрерывающихся трейдов равной "1" - это гарантированный убыток.
  • примерно 25% всех случаев с длиной непрерывающихся трейдов равной "2", на примере Buy: открыли Buy, потом открыли ещё Buy и затем перевернули позицию (то есть закрыли два Buy и открыли Sell - в итоге получили убыток равный нулю).

Думаю, что над этими самыми многочисленными категориями (длина непрерывающихся трейдов равная "1" и "2") нужно подробнее подумать для корректировки стратегии размещения Stop отложенных ордеров.


Проверим идею пирамидинга (для случаев открытия позиции в направлении предыдущей): 

1. Вариант увеличения лота в геометрической прогрессии

Геометри́ческая прогре́ссия — последовательность чисел  b1, b2, b3, ...  (членов прогрессии), в которой каждое последующее число, начиная со второго, получается из предыдущего умножением его на определённое число q  (знаменатель прогрессии), где b1!=0, q!=0: b1, b2=b1*q, b3=b2*q.

2. Вариант увеличения лота в арифметической прогрессии

Арифмети́ческая прогре́ссия (алгебраическая) — последовательность чисел (членов прогрессии), в которой каждое число, начиная со второго, получается из предыдущего добавлением к нему постоянного числа d (шага, или разности прогрессии).

 

С вводом двух типов регрессии возникает необходимость проверять вычисленный размер лота. Для этого будет использоваться функция LotCheck. Пример использования этой функции в скрипте:

//+------------------------------------------------------------------+
//|                                                     LotCheck.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
#property description "Checking the volume of the lot"
#property script_show_inputs
//---
input double start_lot  = 0.85;
input double step_lot   = 0.354;
#include <Trade\SymbolInfo.mqh>  
CSymbolInfo    m_symbol;                     // symbol info object
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   m_symbol.Name(Symbol());
   m_symbol.Refresh();
//---
   Comment("");
   Comment(StringFormat("Symbol %s. Lots Min: %.2f, Lots Max: %.2f, Lots Step %.2f",
           m_symbol.Name(),m_symbol.LotsMin(),m_symbol.LotsMax(),m_symbol.LotsStep()));
//---
   double ext_start_lot = start_lot;
   double ext_step_lot  = step_lot;
//---
   for(int i=0;i<21;i++)
     {
      Comment(ChartGetString(0,CHART_COMMENT),"\n",
              "Input lot ",ext_start_lot,", lot check: ",DoubleToString(LotCheck(ext_start_lot),2));
      ext_start_lot+=ext_step_lot;
     }
  }
//+------------------------------------------------------------------+
//| Lot Check                                                        |
//+------------------------------------------------------------------+
double LotCheck(double lots)
  {
//--- calculate maximum volume
   double volume=NormalizeDouble(lots,2);
   double stepvol=m_symbol.LotsStep();
   if(stepvol>0.0)
      volume=stepvol*MathFloor(volume/stepvol);
//---
   double minvol=m_symbol.LotsMin();
   if(volume<minvol)
      volume=0.0;
//---
   double maxvol=m_symbol.LotsMax();
   if(volume>maxvol)
      volume=maxvol;
   return(volume);
  }
//+------------------------------------------------------------------+

Дабы не засорять журнал терминала весь вывод организован на график:

LotCheck

Файлы:
LotCheck.mq5  5 kb
 

В класс советника добавлены геометрическая и арифметическая профессии. Реализован расчёт лота (пока) для геометрической прогрессии.

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//| 1.003:                                                           |
//|   OnTradeTransaction: DEAL_ENTRY_IN                              |
//|      DEAL_TYPE_BUY => ClosePositions(POSITION_TYPE_SELL)         |
//|      DEAL_TYPE_SELL => ClosePositions(POSITION_TYPE_BUY)         |
//|   PlacesXXXX:                                                    |
//|      "RefreshRates()" is now inside the "PlacesXXXX"             |
//|   OnTradeTransaction:                                            |
//|      a "while" loop for "PlacesXXXX"                             |
//| 1.004:                                                           |
//|   add OnTester and save csv file                                 |
//| 1.005:                                                           |
//|   add Geometric and arithmetic progression                       |
//|      only a geometric progression is realized                    |
//+------------------------------------------------------------------+

ds

 

Сравнение торговли (символ EURUSD, шаг 35) обычным лотом и с геометрической прогрессией:

Советник Buy stop Sell stop Grid в виде класса: обычный лот

Рис. 1. Советник Buy stop Sell stop Grid в виде класса: обычный лот


Советник Buy stop Sell stop Grid в виде класса: лот в геометрической прогрессии

Рис 2. Советник Buy stop Sell stop Grid в виде класса: лот в геометрической прогрессии


Советник Buy stop Sell stop Grid в виде класса: лот в арифметической прогрессии

Рис. 3. Советник Buy stop Sell stop Grid в виде класса: лот в арифметической прогрессии


Скажем так: "Увеличение лота в геометрической прогрессии или в арифметической прогрессии при наборе позиций в одном направлении оказывается хуже торговли постоянным лотом".

 

Что-то у меня при попытке обновить данные из Хранилища пишет:

2017.10.03 12:59:10.146 Storage failed to read http data (storage.mql5.com:443 read failed [12152])

В общем, никак у меня работа с Хранилищем не налаживается... Что-то я неправильно делаю...
 
George Merts:

Что-то у меня при попытке обновить данные из Хранилища пишет:

2017.10.03 12:59:10.146 Storage failed to read http data (storage.mql5.com:443 read failed [12152])

В общем, никак у меня работа с Хранилищем не налаживается... Что-то я неправильно делаю...

Давайте в Skype, а потом здесь выложим решение проблемы с Хранилищем ...

 
Vladimir Karputov:

Давайте в Skype, а потом здесь выложим решение проблемы с Хранилищем ...

Без проблем. Написал в личку.

 

Итак.

У меня Windows7 x64, контроль учетных записей отключен. При каждом входе в метаедитор приходится каждый раз подключаться к Хранилищу.


 

Владимир, просьба и меня добавить в проект. Спасибо

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