English Русский 中文 Español Deutsch Português
ビル・ウィリアムズのシステムに基づく取引システムモジュール

ビル・ウィリアムズのシステムに基づく取引システムモジュール

MetaTrader 5トレーディングシステム | 12 8月 2016, 12:39
3 993 0
Nikolay Churbanov
Nikolay Churbanov

概論

ビル・ウィリアムズの著書『相場の達人』で書かれた取引システムは、恐らくトレーダーの皆さんによく知られているものだと思います。これは多くの初心者にとって分かりやすいルールのうちの一つです。しかし、ルールの単純さとは裏腹に、取引システムは数十の取引パターンを持っています。

多くの人が自分でこのシステムを採用したトレードロボットを作成しようと試みましたが、多くの場合、パターンの形式化や正しい検索や解釈が、大きな困難を引き起こします。取引の自動化やシステムパターンのマーキングと識別の為に、私はMQL5ウィザードでロボットを作成するトレードシグナルモジュールを開発しました。

このトレードシステムを使って自分で開発をしたいと望む、MetaTrader 5ターミナルユーザーが最大限に快適に利用できるように努めました。提案するトレードモジュールと、他の公開されているMQL5ウィザードの為の60のモジュールとの違いは、ビジュアルインターフェイスを使った設定機能にあります。

トレードモジュールの主要機能は以下の通りです。

  1. グラフィックパネルを使ったトレードシステムのパラメータ設定
  2. 選択したパターンの識別とマーキングをオフにする機能
  3. 選択したパターンによるトレードをオフにする機能
  4. トレードシステムのパラメータを最適化する機能

構成(ソースコードは当記事に添付されているアーカイブ(billwilliamsts.zip)に含まれています)

  1. MQL5クラス CBillWilliamsTS。ここでは、システムのトレードパターンの定義の全ての論理、および見つけたパターンでの取引操作実行論理が含まれています。必要に応じて、クラスを使って取引銘柄のチャート上で見つけたパターンのマーキングをすることができます。クラスはBillWilliamsTS.mqhファイルに含まれています。
  2. MQL5グラフィックパネルクラス CBillWilliamsDialog。これはCBillWilliamsTSクラスのオブジェクトの対話制御の為の設定パネル表示の為にあります。クラスはBillWilliamsPanel.mqhファイルに含まれています。
  3. MQL5クラス SignalBillWilliams。エキスパートアドバイザの自動作成の為にMQL5ウィザードで使用するトレードシグナルモジュールです。
  4. MQL5エキスパートアドバイザー BillWilliamsEA これはグラフィックパネルとトレードのクラスをベースにして開発されたトレードエキスパートアドバイザです。ビル・ウィリアムズのトレードシステムのパターンに基づいた取引の自動化のためのものです。これはBillWilliamsEA.mq5ファイルに含まれています。

資料は次の順序で提供されています。

  1. トレードパターンで使用されているビル・ウィリアムズのトレードストラテジーの簡単な説明と、開発したエキスパートアドバイザが実行するマーキング。
  2. グラフィックパネルの説明。
  3. 様々な取引銘柄でのテスト結果。


1. ビル・ウィリアムズのトレードシステムの概要

1.1. 概要

自身の著書『相場の達人』の中で、ビル・ウィリアムズは金融市場で利益を出す取引をするには、市場の構造を熟知することが必要であると述べています。システム開発者の観点から言えば、市場には総括することで市場から最大80%のトレンドの動きをキャッチし、真実の姿を明らかにすることができる5つの指数があると言えます。

  1. フラクタル(位相空間)
  2. 原動力(位相エネルギー)
  3. 加速/原則(位相力)
  4. エリア(力の組み合わせ/位相エネルギー)
  5. バランスライン

5つの指標にプラスして、ビル・ウィリアムズは皆が良く知っているトレンドとフラットという市場状態を加えています。これらをよく知る為に、システムの開発者は、彼が開発したインディケータ―『アリゲーター』を使用し、市場のトレンド領域でのみ作業をすることを勧めています。

次にトレードパターンの基となるトレードシステムの要素や、開発されたトレードシグナルモジュールを使って発見したシグナルのマーキングの特徴についてお話しします。


1.2. アリゲーター

アリゲーターは3つの移動平均線の組み合わせです(図1)。

  • 顎(jaws)、長期線(青色)、通常13期間の平滑移動平均。
  • 歯(teeth)、中期線(赤色)、通常8期間の平滑移動平均。
  • 唇(lips)、短期線(緑色)、通常5機関の平滑移動平均。



図1アリゲーター

このシステムでは、顎、歯、唇、価格という期間の大きさの順で、アリゲーターラインがトレンド方向にある場合にのみ取引操作を実行する必要があります。図では下降トレンドの始まりと終わりを示しています。

平滑移動平均をベースにした全てのインディケータと同様に、アリゲーターが強く遅れをとるインディケータであることが分かります。しかし平滑移動平均線の交差自体は市場エントリーのシグナルではなく、実行する取引のフィルターでしかありません。


1.3. フラクタルー1番目の市場指標のシグナル

フラクタルは、5つのローソク足から形成されます。売りフラクタルは、中心にあるローソクの安値が最安値のフラクタルです。買いフラクタルは、中心にあるローソクの高値が最高値のフラクタルです。フラクタルは最初の市場指標とも呼ばれます(次元1)。


図2フラクタル

フラクタルは、上昇トレンドに対してはアリゲーター(歯)の平均線よりも高く、下降トレンドには平均線よりも低く形成された場合に有効であると考えられています。

開発したエキスパートアドバイザは有効なフラクタルを次のようにマーキングします。(FrB — FractalBuy — 有効な買いフラクタル、FrS — FractalSell — 有効な売りフラクタル):

図3有効な買いフラクタル

図3有効な買いフラクタル


図4有効な売りフラクタル

図4有効な売りフラクタル

指値注文(Buy Stop)は、有効な買いフラクタルが形成したバーの最大値より1ピップス上に配置されます。指値注文(Sell Stop)は、有効な売りフラクタルが形成したバーの最小値より1ピップス下に配置されます。(フラクタルや他のインディケータに基づく)追加のポジションは、アリゲーターによるトレンドの変化後に最初のフラクタルが克服した後にのみ保有されます。


1.4. Awesome Oscillator(AO)— 2番目の市場指標

1.4.1. 概要

魔法のオシレーター(Awesome Oscillator — AO) は、市場の原動力を判別します。これは34期間の単純移動平均と5期間の単純移動平均のバーの中間値です。チャート上ではインディケータは棒グラフとして表示されます。

図5Awesome oscillator

図5Awesome Oscillator

このトレードストラテジーにはオシレーターに基づく6つのパターンがあります。次の項目ではそれらの説明と開発したエキスパートアドバイザを使用したそれらのマーキングについてふれていきます。

1.4.2. 買いパターンの『ソーサ―』

図6買いパターンの『ソーサ―』

図6買いパターンの『ソーサ―』

このパターンは3つの列で構成されています。最初の列は中央の列よりも高い必要があり、色は特に指定はありません。中央の列は赤い色である必要があります。3つ目の列(シグナル)は緑色である必要があります。シグナルはエキスパートアドバイザによってAOインディケータ上で表示され、DiB (Dish Buy)という略語を持っています。

1.4.3. 売りパターンの『ソーサー』

図7売りパターンの『ソーサー』

図7売りパターンの『ソーサー』

このパターンは3つの列で構成されています。最初の列は中央の列よりも低い必要があり、色は特に指定はありません。中央の列は緑色である必要があります。3つ目の列(シグナル)は、赤色である必要があります。シグナルはエキスパートアドバイザによってAOインディケータ上で表示され、DiS (Dish Sell)という略語を持っています。

1.4.4. 買いのパターン『ゼロ線交差』

図8買いのパターン『ゼロ線交差』

図8買いのパターン『ゼロ線交差』

シグナルは棒グラフが下から上にゼロ線と交差する時に発生します。ゼロ線と交差した列がシグナルとなります。シグナルはエキスパートアドバイザによってAOインディケータ上で表示され、CrB (Cross Buy)という略語を持っています。

1.4.5. 売りのパターン『ゼロ線交差』

図9売りのパターン『ゼロ線交差』

図9売りのパターン『ゼロ線交差』

シグナルは棒グラフが上から下にゼロ線と交差する時に発生します。ゼロ線と交差した列がシグナルとなります。シグナルはエキスパートアドバイザによってAOインディケータ上で表示され、CrS (Cross Sell)という略語を持っています。

1.4.6. 買いのパターン『2つの尖り』

図10買いのパターン『2つの尖り』

図10買いのパターン『2つの尖り』

買いのシグナルは、棒グラフがゼロ線よりも下にあり、インディケータの最後の底が前のものより上にある場合に発生します。またこの時、これらの極値の間で棒グラフはゼロより上になりません。シグナルはエキスパートアドバイザによってAOインディケータ上で表示され、2pB (2 peak Buy)という略語を持っています。

1.4.7. 売りのパターン『2つの尖り』

図11売りのパターン『2つの尖り』

図11売りのパターン『2つの尖り』

売りのシグナルは、棒グラフがゼロ線よりも上にあり、インディケータの最後のピークが前のものより下にある場合に発生します。またこの時、これらの極値の間で棒グラフはゼロより下になりません。シグナルはエキスパートアドバイザによってAOインディケータ上で表示され、2pS (2 peak Sell)という略語を持っています。

1.4.7. 注文の設定

買いシグナルの列の発生時に、指値注文(Buy Stop)がシグナルバーの最大値よりも1ピップス上に設定されます。買いシグナルの列の発生時に、指値注文(Sell Stop)がシグナルバーの最小値よりも1ピップス下に設定されます。


1.5. Acceleration/Deceleration Oscillator(AC)-3つ目の市場指標シグナル

棒グラフーAcceleration/Deceleration (АС)は、オーサムオシレーターの棒グラフとオーサムオシレーターに基づく5期間移動平均との差です。

図12ACオシレーター

図12ACオシレーター

買いのシグナルは最後で最小の列より大きい値を持つ2つの連続した列が発生した場合に形成されます(棒グラフはゼロ線よりも上にあります)。棒グラフがゼロ線よりも下の場合、3つの連続した緑の列が必要になります(図13、シグナルB-Buy)。

売りのシグナルは最後で最大の列より小さい値を持つ2つの連続した列が発生した場合に形成されます(棒グラフはゼロ線よりも下にあります)。棒グラフがゼロ線よりも上の場合、3つの連続した赤の列が必要になります(図13、シグナルS-Sell)。

図13ACオシレーターのパターン

図13ACオシレーターのパターン

シグナルはACインディケータ上でエキスパートアドバイザによって表示され、S(Sell)とB(Buy)の通称を持ちます。買いシグナルの列の発生時に、指値注文(Buy Stop)がシグナルバーの最大値よりも1ピップス上に設定されます。買いシグナルの列の発生時に、指値注文(Sell Stop)がシグナルバーの最小値よりも1ピップス下に設定されます。


1.6. エリアトレード(4つ目の市場指標シグナル)

ビル・ウィリアムズはトレードゾーンを緑と赤に分けています。現在のACとAOの列が緑色の場合、価格は緑ゾーンにあります。現在のACとAOの列が赤色の場合、価格は赤ゾーンにあります。

緑ゾーンで新しい買いポジションを持つ為には(売りの場合は赤ゾーン)2つの連続する緑色(赤色)のバーが必要で、この時2つ目のバーの決済価格は前のバーの決済価格よりも高い(低い)必要があります。しかし、5つの連続した緑色または赤色のバーの後、さらなるポジションの保有は起こりません。

5つ目の緑色(赤色)のバーが発生した場合、ストップロスオーダーを5つ目のバーの最小価格(最大価格)より1ピップス下(上)に設定する必要があります。もし次のバーで指値注文が作動しなかった場合、そのレベルを6番目のバーの最小価格(最大価格)より1ピップス下(上)に変更する必要があります。

エリアトレードのシグナルはACインディケータ上でZS(Zone Sell)やZB (Zone Buy)として表示されます(通常、ACインディケータからのシグナルと一致します)。

図14エリアトレードシグナル

図14エリアトレードシグナル


1.7. バランスライントレード(5つ目の市場指標シグナル)

『バランスラインより上で買い』のパターンは、アリゲーターよりも価格が上の場合に2つのバーによって形成されます。ゼロバーの始値(この時点ではこの価格が最大価格)が最初の前のバーの最大価格よりも下(それより以前にいくつかのバーがある場合もある)である場合に、見つけた最大価格が緑ゾーンでの買い方向へのポジションを持つ価格となります。もし価格がアリゲーターラインよりも低い場合、緑ゾーンでのエントリーの為の価格以上のもう一つの最大価格が必要になります。

バランスラインよりも低い売りは、正反対になります。

バランスラインのトレードロジックのより詳細な説明は、『「新しいトレーディングの特質」に基づいたエキスパートアドバイザー : BILL WILLIAMS著』をご覧ください。

エキスパートアドバイザは指値注文が設置された場所を水平線でマーキングをします。

図15指値注文設置場所

図15指値注文設置場所


1.8. ポジション決済

ビル・ウィリアムズはいくつかのポジション決済の方法を提案しています。

  • もし市場にトレンドがあり、バーが終値でアリゲーターの歯(赤いライン)と交差する場合は、決済をする必要があります。
  • ストップロスは、最後のバーの極値下で緑ゾーン(赤ゾーン)に5つの連続したバーが発生した後に設定されます。
  • もし反対方向にシグナルが発生した場合、全ての保有ポジションを決済する必要があります。


2. グラフィックパネル

2.1. 概要

グラフィックパネルの外観は以下の通りです。

図16エキスパートアドバイザを制御する為のグラフィックパネル

図16エキスパートアドバイザを制御する為のグラフィックパネル

グラフィックパネルは2つの論理ブロックから構成されています。

  • アナライザーの設定
  • アリゲーターの設定
  • 5つの指標に基づくトレードと表示の設定
  • トレード設定

設定を変更した後、変更を承認する為に、«Accept»ボタンをクリックする必要があります。


2.2. アナライザーの設定

アナライザーの設定には次の要素が含まれています。
  • Show Signals — ビル・ウィリアムズのトレードストラテジーに基づき発見したパターンを表示するオプション
  • RGB — 発見したパターンを表示する為のカラー設定
  • Bar count — チャートマーキングの履歴での所定数のバーの計算(もしゼロが指定されている場合、全てのチャートがマーキングされます)


2.3. アリゲーターの設定

アリゲーターの設定は、このインディケータのデフォルト設定です。このインディケータを非表示にする追加機能もあります(パラメータ Show)。


2.4. 指標シグナルによるトレードと表示の設定

個々のシグナルの表示を有効にしたり(オプション Show)、個々のシグナルによるトレードを表示することができます(オプション Trade)。
  • フラクタル (Dim1.Fractals列)
  • AO (Dim2.AO列)
  • AC (Dim3.AC列)
  • エリアトレード(Dim4.Zones列)
  • バランスライントレード(Dim5.Balance列)

現在のトレンドにかかわらず、全てのシグナルの表示をオンにする追加の機能があります(オプション Show out of trend signals)。


2.5. トレード設定

トレード設定はトレードロット(Lot)のサイズの唯一のパラメータです。


2.6. 作業ウィンドウ

作業ウィンドウの外観は図の通りです(設定パネルは折り畳まれた状態)。

図17作業ウィンドウ

図17作業ウィンドウ



3. MQL5ウィザードでのエキスパートアドバイザの作成

3.1. 準備

エキスパートアドバイザの作成の前に、添付アーカイブ(billwilliamsts.zip )をダウンロードし、そこにあるファイルを取引ターミナルの対応するデータフォルダにコピーする必要があります。


3.2. エキスパートアドバイザの作成

エキスパートアドバイザの自動生成には、次のステップを完了する必要があります。

MQLエディターで『新規作成』を選択し、表示されたウィンドウで『エキスパートアドバイザ(自動生成)』を選択する必要があります。


図18エキスパートアドバイザの作成 — ステップ 1

次に作成するエキスパートアドバイザの名前を入力する必要があります。


図19エキスパートアドバイザの作成 — ステップ 2

次のステップでは、使用するシグナルジェネレーターを追加する必要があります。


図20エキスパートアドバイザの作成 - ステップ 3

シグナルジェネレーターとして"Signal of BillWilliams trading system"を選択してください。


図21エキスパートアドバイザの作成 - ステップ 4

次のステップは変更せずに確認されます。


図22エキスパートアドバイザの作成 - ステップ 5

次にトレードシグナルモジュールの選択が確認されます。


図23エキスパートアドバイザの作成 - ステップ 6

トレーリングストップのパラメータを設定する必要がある場合。


図24エキスパートアドバイザの作成 - ステップ 7

次に資産管理パラメータが設定されます。


図25エキスパートアドバイザの作成 - ステップ 8

次にエキスパートアドバイザがトレードパネルでのパラメータの変更に反応するようにする為に、作成したエキスパートアドバイザのファイルを編集する必要があります。

ファイルでコード部分を見つけます。

//--- Creating filter CBillWilliamsSignal
CBillWilliamsSignal *filter0=new CBillWilliamsSignal;

これを置き換えます。

filter0=new CBillWilliamsSignal;

filter0グローバル変数を宣言します。

//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
CBillWilliamsSignal *filter0;

チャートのイベントハンドラも追加します。

void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
  filter0.ChartEvent(id,lparam,dparam,sparam);
}

作成したエキスパートアドバイザが使用できるようになりました。


3.3. 制限

ウィザードで作成したエキスパートアドバイザは標準ライブラリAPIによって課される制限を持っています。

  1. すでにポジションを持っている場合、ポジションを上積みすることはできません(標準ライブラリを仕上げる必要があります)。
  2. エキスパートアドバイザは成行注文でのみ取引を行います。

これらの欠点を補う為に、トレードシグナルのクラスに基づき、添付ファイルにある追加のエキスパートアドバイザBillWilliamsEA.mq5を開発しました。


4. テスト結果

4.1. EURUSD D1, 2015


Рисунок 26. テストチャート EURUSD D1, 2015

詳細な結果はEUR-D1-2015.zipファイルでご参照ください。


4.2. EURUSD D1, 2010 - 2015


図27テストチャート EURUSD D1, 2010-2015

詳細な結果はEUR-D1-2010-2015.zipファイルでご参照ください。


4.3. EURJPY D1, 2010 - 2015


図28テストチャート EURJPY D1, 2010-2015

詳細な結果はEURJPY-D1-2010-2015.zipファイルでご参照ください。


まとめ

テスト結果から言えることは、エキスパートアドバイザはトレンド部分を素晴らしく処理したものの、フラット市場でマイナスに働きました(尤も、これはビル・ウィリアムズ自身が述べているように、標準的な状況です)。

許容できる結果を得るには、ビル・ウィリアムズのシステムが大きく後れを取るもので、すでにトレンドが十分に成熟した頃にトレンドにエントリーする為、ストップロスの設定技術を組み合わせる必要があります。

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

添付されたファイル |
billwilliamsts.zip (12.97 KB)
eur-d1-2015.zip (50.88 KB)
エキスパートアドバイザとインディケータに素早く制御パネルを追加する方法 エキスパートアドバイザとインディケータに素早く制御パネルを追加する方法
自分のエキスパートアドバイザやインディケータに便利な制御パネルを追加したいけど、何をどうしたら良いかわかりませんか?この記事では、貴方のMQL4/MQL5プログラムに入力パラメータを持つダイアログパネルを『取り付ける方法』をステップバイステップでご紹介します。
ユニバーサルEA:シグナルの標準メタトレーダーモジュールとの統合(その7) ユニバーサルEA:シグナルの標準メタトレーダーモジュールとの統合(その7)
このパートでは、シグナルモジュールとCStrategyエンジンの統合の可能性が、メタトレーダーの標準ライブラリにあることについて記述します。この記事では、カスタム戦略を作成するメソッドと同様に、シグナルの操作メソッドについて説明します。
領域法 領域法
取引システム『領域法』は、RSIオシレーターの通常ではない解釈において使われます。この記事では、領域法を可視化するインディケータと、このシステムに基づいてトレードを行うエキスパートアドバイザを提供します。記事では、様々な通貨ペアや時間軸、面積値でのエキスパートアドバイザの詳細なテスト結果が記述されています。
実際ティックでの取引ストラテジーのテスト 実際ティックでの取引ストラテジーのテスト
この記事では、簡単な取引ストラテジーを3つのモード(履歴からの記録ティックを使用した『リアルティックに基づいた全てのティック』、『1分足OHLC』、『全ティック』)でテストします。