外国為替取引における「ヘッジ」 -なぜ行うのか? - ページ 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:

かなりわかりやすい。

去年と同じように。

だから、私は同じ結果、あるいはある人が言うように、他の手法の方がもっと良い結果を得られると期待しています。

私は、この中から出てくるものを受け入れるのに何の問題もありませんし、無効な真実を押し通そうとしているわけでもありません。

ただ、フォーラムに活気を与え、「必要だ」「欲しい」というトピックの代わりに、ちょっとした競争をさせようと思っています。

High Marco,

ヘッジなしで動作するように変更されたコードは次のとおりです。


	          
 

申し訳ございません。

小さなエラーです。

すぐに戻ってきます。

 

以下は、ヘッジなしの場合のコードです。

//+------------------------------------------------------------------+
//|                                          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:

OK ありがとうございます、私はそれをコンパイルし、結果は次のとおりです。


オープンプライスは、特定のレベルで取引を開始するこのタイプの取引のテストには適していません。

そして、もちろん、同じデータであなたのものとテストしてください。

 
なるほど、どちらも1カチ ごとに走らせるとよく似ていますね。
 
Marco vd Heijden:
さて、彼らは両方の非常によく似て見えるとき、すべてのダニを 実行します。


つまり......このトピックで紹介したいわゆるヘッジ手法を適用しなくても、私たちのフォーラムの尊敬すべきコーダーたちは、マルコが提案した戦略を別の方法で実行し、さらなる経済的利益を得られることを示したのです。

実際、「任意に選択された」戦略はそう示すことができる... そして、これは普遍的に彼の最初の投稿でキースの文 "それは外国為替の "ヘッジ "は非生産的で無意味であるという私の意見だけではありません、それは事実です "を証明するものである。


お気づきでしょうか?

この結果は、「必要なしに複数を仮定すべきではない」あるいは「必要以上に実体を増殖させてはならない」とされる「オッカムの剃刀」と一致するものです。

だから、完璧なために単純である...またはすなわち、このケースでは、任意の実際の利益なしで追加のコストと不必要なリスクから自分自身を保存するために単純である。


ハッピー・ストラテジー・デザイン )

 

さて、ショーは脂肪の女性が歌うまで終わりません。

ご期待ください。

 
Marco vd Heijden:
なるほど、両者とも1ティック ごとに実行すると非常によく似ていますね。

私のバージョンでは利益が少し増加したのがお分かりにならないのでしょうか?