English Русский 中文 Español Deutsch Português
トレーダーツール、上級者向けのテクニカル分析のためのMQL4

トレーダーツール、上級者向けのテクニカル分析のためのMQL4

MetaTrader 4 | 16 2月 2016, 11:31
1 425 0
Andrey Opeyda
Andrey Opeyda

はじめに

まず、トレーディングは確率の計算です。進展のエンジンとなる無為に関することわざは、それらのインジケーターやトレーディングシステムが開発された理由を明らかにします。トレーディングの多くの新人は「すでにできあがった」トレーディング理論を学習します。しかし、より多くの発見されていない市場の秘密があり、価格の動きの分析に使用されているツールは基本的に明らかにされていないテクニカルインジケーターや統計パッケージとして存在しています。マーケットの動向の理論への貢献において、Bill Williamsに感謝します。おそらくその漕ぎ手に頼るのは早すぎますが。


統計の維持

「どの色のロウソク足がEURUSDの1時間チャートにて使用されるか?」と自分自身に問うと、ブロックに毎回100を書き留める黒色のロウソク足を数え始めることができ、そして、白色のロウソク足を数えます。しかし、これを自動的に行う数行のコードを記述できます。基本的に、すべて論理的で、特別なことはありません。しかし、上記の質問に対する答えを明らかにしましょう。まず、ロウソク足の色の認識をシンプル化しましょう。

bool isBlack(int shift)
  {
    if(Open[shift] > Close[shift])
        return (true);
    return (false);
  }
//+------------------------------------------------------------------+
bool isWhite(int shift)
  {
    if(Open[shift] < Close[shift]) 
        return (true);
    return (false);
  }
//+------------------------------------------------------------------+

すでに記載されているコードを用いて、実験を続けます。

//EXAMPLE 1
      //Calculate black and white candles
      double BlackCandlesCount = 0;
      double WhiteCandlesCount = 0;
      double BProbability = 0;
 
      for(int i = 0; i < Bars - 1; i++)
        {
          if(isBlack(i) == true)
              BlackCandlesCount++;
 
          if(isWhite(i) == true)
              WhiteCandlesCount++;
        }
      
      BProbability = BlackCandlesCount / Bars;

結果は興味深いもので、予想可能なものです:16000の52.5426%は白色です。MQL4コンパイラを用いて、ロウソクの周期性の問題を解決することもできます。例えば、もし黒色のロウソクがクローズされたら、白色を形成する確率はなんでしょうか?これはもちろん、様々な要因によりますが、統計結果を参照してみましょう。

//EXAMPLE 2
      //Calculate seqences of 1st order
      //BW means after black going white candle     
      double BW = 0;
      double WB = 0;
      double BB = 0;
      double WW = 0;
       
      for(i = Bars; i > 0; i--)
        {
         if(isBlack(i) && isWhite(i-1)) 
             BW++;           
         if(isWhite(i) && isBlack(i-1)) 
             WB++;
         if(isBlack(i) && isBlack(i-1)) 
             BB++;            
         if(isWhite(i) && isWhite(i-1)) 
             WW++;
        }

結果:
- 黒に続く白 - 23.64 %
- 白に続く黒 - 23.67 %
- 白に続く白- 21.14 %
- 黒に続く白- 20.85 %

ご覧の通り、同じ色のろうそくに続かれる確率は、正反対の色よりも少し少ないです。

MQL4と履歴データを用い、トレーダーは意味深い市場リサーチを行うことができます。ターミナルはヒストグラムの描写を行うことができます。この機能を用いて、WPRやRSIなどのインジケーターの値に沿ったロウソク足の色の配分を描写します。

//EXAMPLE 3.1
      //Build histogram by RSI
      //RSI min/max - 0/100
      
      double RSIHistogramBlack[100];
      double RSIHistogramWhite[100];
      
      for(i = Bars; i > 0; i--)
        {
          int rsi_val = iRSI(NULL,0,12,PRICE_CLOSE,i);
          if(isWhite(i))
              RSIHistogramWhite[rsi_val]++;
          if(isBlack(i))
              RSIHistogramBlack[rsi_val]++;
        }
      for(i = 0; i < 100; i++)
        {
          ExtMapBuffer1[i] = RSIHistogramBlack[i];
          ExtMapBuffer2[i] = -RSIHistogramWhite[i];
        }
 
//EXAMPLE 3.2
      //Build histogram by %R
      //%R min/max - 0/-100

      double WPRHistogramBlack[100];
      double WPRHistogramWhite[100];
      
      for(i = Bars; i > 0; i--)
        {
          int wpr_val = iWPR(NULL,0,12,i);
          int idx = MathAbs(wpr_val);
          if (isWhite(i))
              WPRHistogramWhite[idx]++;
          if (isBlack(i))
              WPRHistogramBlack[idx]++;
        }




黒色と白色のロウソク足の数を数えるよりも、損切りと利食いの異なる値を持つ利益を生んだトレードと損失を生み出したトレードの統計を取る方がより客観的でしょう。以下はこの目的において役に立ちます。
int TestOrder(int shift, int barscount, int spread, int tp, int sl, int operation)
 {
   double open_price = Close[shift];
   
   if (operation == OP_BUY)
      open_price  = open_price + (Point * spread);
      
   if (operation == OP_SELL)
      open_price  = open_price - (Point * spread);
      
   
   for (int i = 0; i<barscount; i++)
    {
      if (operation == OP_BUY)
       {
         //sl
         if (Low[shift-i] <= open_price - (Point * sl) )
            return (MODE_STOPLOSS);
         //tp            
         if (High[shift-i] >= open_price + (Point * tp) )
            return (MODE_TAKEPROFIT);            
       }
      
      if (operation == OP_SELL)
       {
         //sl
         if (High[shift-i] >= open_price + (Point * sl) )
            return (MODE_STOPLOSS);
         //tp            
         if (Low[shift-i] <= open_price - (Point * tp) )
            return (MODE_TAKEPROFIT);            
       }
      
    }  
   return (MODE_EXPIRATION);   
 }

その結果は皆さんにとって驚きのものでしょう。Kohonenマップ、ガウス分布、Hurst係数はさらにみなさんを驚かせるでしょう。 さらにたくさんの驚くべきものがあります。重要なこととして、トレーディングの本質や感覚を忘れてはいけません。

まとめ

基本的にすべてのトレーダーは自身のトレーディングテクニックを使用します。もちろん、システムの効果を絵的に表現することを妨げるものはありません。結果がないことも結果です。トレーダーが得た知識は、トレーディングの生産性を向上させます。


MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/1410

添付されたファイル |
instrument.mq4 (5.02 KB)
いくつかのインジケーターにおけるマルチNullバー再計算 いくつかのインジケーターにおけるマルチNullバー再計算
この記事は、Nullバーが変化した際に MetaTrader 4クライアントターミナルのインジケーター値の再計算に関する問題に焦点を当てています。複数の再計算前に保存されたプログラムコードを保存させるいくつかの追加プログラムをインジケーターに追加する方法について述べています。
オプティマイザでの遺伝的アルゴリズム vs シンプルな検索 オプティマイザでの遺伝的アルゴリズム vs シンプルな検索
この記事は、遺伝的アルゴリズムとシンプルな検索により取得されるものを用いて、エキスパートアドバイザーの最適化を行った結果とかかった時間を比較します。
初めてのGrail 初めてのGrail
初心者プログラマが「金のなる木」を作成させる最も頻度の高い失敗が調査されました。テスターではすばらしい結果を示したが、実際のトレーディングでは損失を出したエキスパートが示されています。
エキスパートシステム「コメンテーター」MQL4プログラムの組み込みインジケーターの実践的な使用 エキスパートシステム「コメンテーター」MQL4プログラムの組み込みインジケーターの実践的な使用
この記事は、MQL4でのプログラミングにおけるテクニカルインジケーターの使用について紹介しています。