"Cobertura en el mercado de divisas: ¿por qué hacerlo? - página 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()));
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+

Bastante sencillo.

Lo he ejecutado el año pasado.

Así que espero los mismos resultados, o como dicen algunos, incluso mejores de la otra técnica.

No tendré ningún problema en aceptar lo que salga de esto, y no estoy tratando de imponer verdades inválidas.

Solo trato de mantener el foro vibrante, un poco de competencia en lugar de todos los temas de yo necesito, yo quiero.

 
Marco vd Heijden:

Bastante sencillo.

Lo he ejecutado el año pasado.

Así que espero los mismos resultados, o como dicen algunos, incluso mejores de la otra técnica.

No tendré ningún problema en aceptar lo que salga de esto, y no estoy tratando de imponer verdades inválidas.

Solo trato de mantener el foro vibrante, un poco de competencia en lugar de todos los temas de yo necesito, yo quiero.

Alto Marco,

Aquí está el código modificado para trabajar sin cobertura.


	          
 

Lo siento,

pequeño error.

Volveré pronto.

 

Este es el código para la no cobertura

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

Bien gracias, lo compilé y aquí está el resultado:


 
Marco vd Heijden:

Bien gracias, lo compilé y aquí está el resultado:


Por favor, pruébalo sobre Every Tick, los precios abiertos no sirven para probar este tipo de operaciones en las que se entra en determinados niveles.

Y, por supuesto, pruébalo contra el tuyo sobre los mismos datos.

 
De acuerdo, ambos se parecen mucho cuando se ejecuta cada tic.
 
Marco vd Heijden:
De acuerdo, ambos se parecen mucho cuando se ejecuta cada tic.


Así que ... sin aplicar la llamada técnica de cobertura mencionada en este tema, los respetados codificadores de nuestro foro demostraron que la estrategia propuesta por Marco también puede ser implementada de una manera diferente con algunos beneficios financieros adicionales.

De hecho, "cualquier estrategia seleccionada arbitrariamente" puede mostrarse así ... y esto demuestra universalmente la afirmación de Keith en su primer post "no es sólo mi opinión que la "cobertura" en Forex es improductiva y sin sentido, es un hecho".


¿Lo ha notado?

Este resultado concuerda con la Navaja de Occam, enunciada como "la pluralidad no debe ser planteada sin necesidad" o como "las entidades no deben ser multiplicadas más allá de la necesidad".

Por lo tanto, ser simple para la perfección ... o es decir, ser simple para salvarse de los costos adicionales y riesgos innecesarios sin ningún beneficio real en este caso.


Feliz diseño de la estrategia )

 

Bueno, el espectáculo no termina hasta que la dama gorda canta.

Permanezcan en sintonía.

 
Marco vd Heijden:
Bueno, ambos se parecen mucho cuando se ejecuta cada garrapata.

¿No has visto que mi versión produjo un ligero aumento de los beneficios?