"Hedging" no comércio Forex - Por que fazer isso? - 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 simples.

Eu a administro no ano passado.

Portanto, espero os mesmos resultados, ou como alguns dizem, ainda melhores da outra técnica.

Não terei nenhum problema em aceitar o que sai disto, e não estou tentando fazer passar verdades inválidas.

Só estou tentando manter o fórum vibrante, um pouco de competição em vez de todos os tópicos que eu preciso, eu quero.

 
Marco vd Heijden:

Bastante simples.

Eu a administro no ano passado.

Portanto, espero os mesmos resultados, ou como alguns dizem, ainda melhores da outra técnica.

Não terei nenhum problema em aceitar o que sai disto, e não estou tentando fazer passar verdades inválidas.

Só estou tentando manter o fórum vibrante, um pouco de competição em vez de todos os tópicos que eu preciso, eu quero.

Alto Marco,

Aqui está o código modificado para funcionar sem hedging.


	          
 

Desculpe,

pequeno erro.

Voltarei em breve.

 

Aqui está o código para nenhuma 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()));
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
 

Ok, obrigado, eu o compilei e aqui está o resultado:


 
Marco vd Heijden:

Ok, obrigado, eu o compilei e aqui está o resultado:


Por favor, experimente em Every Tick, Open prices não são bons para testar este tipo de negociação onde as negociações são inseridas em certos níveis.

E, é claro, testá-lo contra o seu sobre os mesmos dados.

 
Ok, ambos são muito parecidos quando correm cada tique.
 
Marco vd Heijden:
Ok, ambos são muito parecidos quando se corre a cada tique.


Assim ... sem aplicar a chamada técnica de hedging mencionada neste tópico, os respeitados codificadores em nosso fórum mostraram que a estratégia proposta pelo Marco também pode ser implementada de uma maneira diferente com alguns benefícios financeiros adicionais.

Na verdade, "qualquer estratégia escolhida arbitrariamente" pode ser mostrada assim ... e isto prova universalmente a afirmação de Keith em seu primeiro posto "não é apenas minha opinião que "hedging" no Forex é improdutivo e inútil, é um fato".


Notou isso?

Este resultado concorda com a Navalha de Occam, declarada como "a pluralidade não deve ser posicionada sem necessidade" ou como "as entidades não devem ser multiplicadas além da necessidade".

Então, seja simples para a perfeição ... ou seja, seja simples para se poupar de custos adicionais e riscos desnecessários sem nenhum benefício real neste caso.


Feliz desenho da estratégia )

 

Bem, o show não termina até que a senhora gorda cante.

Fique atento.

 
Marco vd Heijden:
Ok, os dois são muito parecidos quando correm cada tique.

Você não viu que minha versão produziu um pequeno aumento no lucro?