"Хеджирование" в торговле на Форекс - зачем это делать? - страница 7

 
//+------------------------------------------------------------------+
//|                                          Sonic the hedge hog.mq4 |
//|      Copyright 2018, Marco vd Heijden, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//|             The code should be used for educational purpose only.|
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Marco vd Heijden, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

datetime time;
int TrailingStop=100;
double Lots=0.01;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   time=iTime(_Symbol,PERIOD_D1,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   exit();
   enter();
  }
//+------------------------------------------------------------------+
//| enter
//+------------------------------------------------------------------+
void enter()
  {
//--- new bar ?
   if(time!=iTime(_Symbol,PERIOD_D1,0))
     {
      int ticket_buy=-1;
        {
         while(ticket_buy<0)
           {
            ticket_buy=OrderSend(_Symbol,OP_BUY,Lots,Ask,3,NULL,NormalizeDouble(Bid+100*Point,Digits),"Sonic",1234,0,clrGreen);
           }
        }
      int ticket_sell=-1;
        {
         while(ticket_sell<0)
           {
            ticket_sell=OrderSend(_Symbol,OP_SELL,Lots,Bid,3,NULL,NormalizeDouble(Ask-100*Point,Digits),"Sonic",1234,0,clrRed);
           }
        }
      if(ticket_buy>0 && ticket_sell>0)
        {
         time=iTime(_Symbol,PERIOD_D1,0);
        }
     }
  }
//+------------------------------------------------------------------+
//| exit
//+------------------------------------------------------------------+
void exit()
  {
//--- it is important to enter the market correctly, but it is more important to exit it correctly...   
   for(int cnt=OrdersTotal(); cnt>=0; cnt--)
     {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(TimeDay(OrderOpenTime())!=TimeDay(time))
           {
            bool close=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,clrBlue);
              {
               if(close==0)
                 {
                  Print("OrderCloseError"+IntegerToString(OrderTicket()));
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+

Довольно просто.

Я провел его в прошлом году.

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

У меня не будет проблем с принятием того, что из этого получится, и я не пытаюсь проталкивать недействительные истины.

Просто пытаюсь поддерживать форум в живом состоянии, немного конкуренции вместо всех этих тем "мне нужно, я хочу".

 
Marco vd Heijden:

Довольно просто.

Я провел его в прошлом году.

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

У меня не будет проблем с принятием того, что из этого получится, и я не пытаюсь проталкивать недействительные истины.

Просто пытаюсь поддерживать форум в живом состоянии, немного конкуренции вместо всех этих тем "мне нужно, я хочу".

Хай Марко,

Вот код, модифицированный для работы без хеджирования.


	          
 

Извините,

небольшая ошибка.

Скоро вернемся.

 

Вот код для случая отсутствия хеджирования

//+------------------------------------------------------------------+
//|                                          Sonic the hedge hog.mq4 |
//|      Copyright 2018, Marco vd Heijden, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//|             The code should be used for educational purpose only.|
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Marco vd Heijden, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

datetime time;
//int TrailingStop=100;
double Lots=0.01;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   time=iTime(_Symbol,PERIOD_D1,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   exit();
   enter();
  }
//+------------------------------------------------------------------+
//| enter
//+------------------------------------------------------------------+
void enter()
  {
   static double BuyAt=0,SellAt=0,BuyTP=0,SellTP=0;

//--- new bar ?
   if(time!=iTime(_Symbol,PERIOD_D1,0))
     {
      SellAt=NormalizeDouble(Bid+100*Point,Digits);
      SellTP=NormalizeDouble(Ask-100*Point,Digits);
      BuyAt=NormalizeDouble(Ask-100*Point,Digits);
      BuyTP=NormalizeDouble(Bid+100*Point,Digits);
      time=iTime(_Symbol,PERIOD_D1,0);
     }

   if(SellAt>0 && Bid>=SellAt)
     {
      int ticket_sell=-1;
      ticket_sell=OrderSend(_Symbol,OP_SELL,Lots,Bid,3,NULL,SellTP,"Sonic",1234,0,clrRed);
      if(ticket_sell>0)
        {
         BuyAt=0;
         SellAt=0;
        }
     }

   if(BuyAt>0 && Ask<=BuyAt)
     {
      int ticket_buy=-1;
      ticket_buy=OrderSend(_Symbol,OP_BUY,Lots,Ask,3,NULL,BuyTP,"Sonic",1234,0,clrGreen);
      if(ticket_buy>0)
        {
         BuyAt=0;
         SellAt=0;
        }
     }
  }
//+------------------------------------------------------------------+
//| exit
//+------------------------------------------------------------------+
void exit()
  {
//--- it is important to enter the market correctly, but it is more important to exit it correctly...   
   for(int cnt=OrdersTotal()-1; cnt>=0; cnt--)
      //+------------------------------------------------------------------+
      //|                                                                  |
      //+------------------------------------------------------------------+
     {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==true)
        {
         if(TimeDay(OrderOpenTime())!=TimeDay(time))
           {
            bool close=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,clrBlue);
              {
               if(close==false)
                 {
                  Print("OrderCloseError"+IntegerToString(OrderTicket()));
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
 

Хорошо, спасибо, я скомпилировал его и вот результат:


 
Marco vd Heijden:

Хорошо, спасибо, я скомпилировал его и вот результат:


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

И, конечно, протестируйте его против вашего на тех же данных.

 
Они оба выглядят очень похожими при запуске каждого тика.
 
Marco vd Heijden:
Итак, они оба выглядят очень похоже, если запускать их каждый тик.


Итак... не применяя так называемую технику хеджирования, упомянутую в этой теме, уважаемые кодеры на нашем форуме показали, что стратегия, предложенная Марко, может быть реализована и другим способом с некоторыми дополнительными финансовыми выгодами.

Фактически, "любая произвольно выбранная" стратегия может быть показана так... и это универсально доказывает заявление Кита в его первом посте "это не просто мое мнение, что "хеджирование" на Forex непродуктивно и бессмысленно, это факт".


Заметили?

Этот результат согласуется с "бритвой Оккама", сформулированной как "множественность не должна утверждаться без необходимости" или как "сущности не должны умножаться сверх необходимости".

Итак, будьте просты для совершенства ... или именно будьте просты для того, чтобы уберечь себя от дополнительных затрат и ненужных рисков без какой-либо реальной выгоды в данном случае.


Удачной разработки стратегии )

 

Шоу не закончится, пока не запоет толстая дама.

Оставайтесь с нами.

 
Marco vd Heijden:
Ладно, они оба выглядят очень похоже, если запускать их каждый тик.

Разве вы не видели, что моя версия дала небольшое увеличение прибыли?