"Hedging" nel trading di Forex - perché farlo? - pagina 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()));
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+

Abbastanza semplice.

L'anno scorso l'ho fatto funzionare più dell'anno scorso.

Quindi mi aspetto gli stessi risultati, o come dicono alcuni, anche meglio dall'altra tecnica.

Non avrò alcun problema ad accettare ciò che viene fuori da questo, e non sto cercando di spingere attraverso verità non valide.

Sto solo cercando di mantenere il forum vivace, un po' di competizione al posto di tutti gli argomenti "ho bisogno, voglio".

 
Marco vd Heijden:

Abbastanza semplice.

L'anno scorso l'ho fatto funzionare più dell'anno scorso.

Quindi mi aspetto gli stessi risultati, o come dicono alcuni, anche meglio dall'altra tecnica.

Non avrò alcun problema ad accettare ciò che viene fuori da questo, e non sto cercando di spingere attraverso verità non valide.

Sto solo cercando di mantenere il forum vivace, un po' di competizione al posto di tutti gli argomenti "ho bisogno, voglio".

Alto Marco,

Ecco il codice modificato per funzionare senza hedging.


	          
 

Scusate,

piccolo errore.

Tornerò presto.

 

Ecco il codice per nessuna copertura

//+------------------------------------------------------------------+
//|                                          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()));
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
 

Ok grazie, l'ho compilato ed ecco il risultato:


 
Marco vd Heijden:

Ok grazie, l'ho compilato ed ecco il risultato:


Per favore, provalo su ogni tick, i prezzi aperti non vanno bene per testare questo tipo di trading dove i trade sono inseriti a certi livelli.

E, naturalmente, provalo contro il tuo sugli stessi dati.

 
Ok, entrambi si assomigliano molto quando vengono eseguiti ogni volta.
 
Marco vd Heijden:
Ok, entrambi si assomigliano molto quando vengono eseguiti ogni tick.


Quindi ... senza applicare la cosiddetta tecnica di hedging menzionata in questo topic, gli stimati codificatori del nostro forum hanno dimostrato che la strategia proposta da Marco può essere implementata anche in modo diverso con alcuni benefici finanziari aggiuntivi.

Infatti, "qualsiasi strategia arbitrariamente selezionata" può essere dimostrata così ... e questo prova universalmente l'affermazione di Keith nel suo primo post "non è solo la mia opinione che "l'hedging" nel Forex è improduttivo e inutile, è un fatto."


L'avete notato?

Questo risultato è d'accordo con il Rasoio di Occam, dichiarato come "la pluralità non dovrebbe essere posta senza necessità" o come "le entità non devono essere moltiplicate oltre la necessità".

Quindi, essere semplici per la perfezione ... o cioè essere semplici per salvarsi da costi aggiuntivi e rischi inutili senza alcun beneficio reale in questo caso.


Buona progettazione della strategia )

 

Beh, lo spettacolo non è finito finché la signora grassa non canta.

Restate sintonizzati.

 
Marco vd Heijden:
Ok, sono entrambi molto simili quando vengono eseguiti ogni tick.

Non hai visto che la mia versione ha prodotto un leggero aumento del profitto?

Motivazione: