概要
TripleBulletはその名の通り、1ペアから3ペアまで同時にトレードできるグリッドトレード(リピート方式)のEAです。
相関の低いペア(例:USDCHF / EURGBP / AUDNZD)または負の相関のあるペア(例:USDJPY / S&P500)を組み合わせることで、リスク分散が可能です。
- ペア ||ペア 制限なし。 すべてのペアが利用可能です
- 「EURUSD」や「USDJPY」などのFXペアだけでなく、「S&P500(CFD)」「XAUUSD(先物)」「BTCUSD(仮想通貨)」などにもご利用いただけます。
- 最低必要預金 || 調整できます
- たとえば、 私のライブ口座は500,000 円 (= 3,700 米ドル) で開始されました
- タイムフレーム || 月足を使用してください
- 月足を使用することで、MT5 は より多くの履歴データを取得できます
ロジックとパラメーター
パラメーターサマリ
Parameter | Roll | Usage |
---|---|---|
debugMode | ログ出力 | trueのとき、ジャーナルにデバグログを表示します |
magicNumber | マジックナンバー | 他のEAと被らないユニークな値を設定してください |
stopEquity | セーフ機能 | 有効証拠金がstopEquity以下のとき、新規注文が行われません. 無効にするには、0を設定してください |
stopMarginLevel | セーフ機能 | 証拠金維持率がstopMarginLevel以下のとき、新規注文が行われません. 無効にするには、0を設定してください |
stopDrawDownPer | セーフ機能 | ドローダウンがstopDrawDownPer以上のとき、新規注文が行われません. 無効にするには、100を設定してください |
spreadLimit | セーフ機能 | スプレッドがspreadLimit以上のとき、新規注文が行われません. 無効にするには、99999999…を設定してください |
risk | セーフ機能 | riskパラメーターを設定することで、ロットを自動計算します riskとlotを同時に設定することはできません 無効にするには、0を設定してください |
lot | セーフ機能 | 取引時のロットを固定します riskとlotを同時に設定することはできません 無効にするには、0を設定してください |
pricePeriod | トレード戦略 | どれだけの月足を計算に使用するか決定します |
noTradeCoreRange | トレード戦略 | どこまでがcore rangeか決定します. |
positionHalf | トレード戦略 | core range外で、どれだけのポジションを持つか決定します |
positionCore | トレード戦略 | core range内で、どれだけのポジションを持つか決定します |
minTP | トレード戦略 | ポジションの取りうる、最小のTakeProfit(pips単位)を決定します |
maxTP | トレード戦略 | ポジションの取りうる、最小のTakeProfit(pips単位)を決定します |
sl | トレード戦略 | stop loss(by pips) To disable set 0 (No stop loss) |
symbol2 | Logic | どのペアを追加でトレードするか決めます |
symbol3 | Logic | どのペアを追加でトレードするか決めます |
トレード対象の決定
- 同時にトレード可能なペアは1~3個です
- 1つ目のペアは、EAを稼働させるチャートの通貨に準じます
- 2つ目は[symbol2]、3つ目は[symbol3]によって決定されます
- つまり[symbol2]や[symbol3]に何も入力しなかった場合、その分取引されるシンボル数も減ります
※Market Watchにないシンボルについては設定しないでください
ブローカーの中には、オリジナルのシンボル名を付けることがあります
下記のように、MarketWatchでシンボル名が”EURGBP-“の場合、”EURGBP”ではなく”EURGBP-“をセットしてください
グリッドレンジの決定
このEAでは、現在のローソク足から、過去[PricePeriod]ヵ月間の最高値( Highest ),最安値( Lowest )を元にトレード戦略を立てます。
それぞれの項目の計算式は以下の通りです。
Highest = 過去[PricePeriod]ヵ月間の最高値
Lowest = 過去[PricePeriod]ヵ月間の最安値
Distance = Highest - Lowest
CenterLine = Distance / 2 + Lowest
これらの値は、トレードを行うための間隔( interval )計算に用いられます。
トレードについて
- トレードは全て成り行き注文にて行われます。 指値注文は一切行いません
- これにより、Spread拡大時のトレードを抑制することが可能になりました
- グリッドトレードなので、ストップロスは設定しません
- CenterLine を基準にトレード手法を決定します
- CenterLineより上の価格では、ショートトレードのみ
- CenterLineより下の価格では、ロングトレードのみ
トレード禁止レンジ
[noTradeCoreRange]はトレードを禁止するを決めています。
CenterLine から、上下[noTradeCoreRange]分の範囲ではトレードが行われません。
CenterLine 周辺でのトレードを禁止することで、レートが大きく上振れたり下振れたりしても、含み損が少なくなります。
トレードが禁止される範囲は以下のようになります。
つまり、[noTradeCoreRange]を0.5以上にすると、トレードは行われません。
no trade range: (CenterLine - Distance * [noTradeCoreRange]) ~ (CenterLine + Distance *[noTradeCoreRange])
各ポジションのTPおよびトレード間隔
ポジションは各 interval ごとに1つです。
intervalの計算式は以下の通りです。
interval = Distance / [positionHalf]
But if interval < [minTP]pips then interval = [minTP]
But if interval > [maxTP]pips then interval = [maxTP]
つまり、現在の価格から、上下のinterval範囲内で既にポジションを持っていた場合、トレードは行われません。
また、ポジションの利食い値(TakeProfit)もintervalと同じ値です。
基本的に、最大ポジション数に関しては、[positionHalf]に近い値になりますが、intervalが[minTP]pips以下、もしくは[maxTP]pips以上の場合はその限りではありません。
このintervalに、それぞれの通貨ペアが干渉しあうことはありません。それぞれの通貨ペアごとにintervalが管理されています。
ストップロス
※[sl]パラメーターはpro versionでのみ利用可能
デフォルトでは、ストップロスは設けられていません。というのもストップロスを取らないのが、このEAの基本戦略だからです。
proバージョンでのみ、pips単位でストップロスが設定できます。
ストップロスの具体的な値は以下のようになります。
Stoploss(ロングトレード) = Ask - [sl]pips
Stoploss(ショートトレード) = Bid - [sl]pips
※ [sl] = 0のとき、ストップロスは設定されません(デフォルト設定)
lot数について
※[risk]パラメーターはpro versionでのみ利用可能
固定lot法 と 変動lot法 の2つを用意しています。
lot数が、ブローカーの定める最小lot以下の場合、トレードは行われません。
固定lot法
固定lot法では、以下の計算式でlotが決定します。
lot = [lot]
変動lot法
変動lot法では、以下の計算式でlotが決定します。
lot = free margin * [risk] / margin required to buy 1 lot of trading pair
- ドローダウンが大きくなったときは、lot数を下げ、余裕があるときにはlot数を上げるリスクを抑えた複利取引が可能になります。
- 複数ペアをトレードするときにバランスがとりやすいです。
- 例えば、1lotをトレードするとき、EURUSDとUSDJPYで必要証拠金が異なるため、固定lot法では、どちらかのペアに掛け金が偏ります。
- 変動lot法では、余剰証拠金をベースにlotを決めるため、この問題は起きません。
※変動lotの場合、余剰証拠金を元にlot数を計算するため、ハイレバレッジにするほど余剰証拠金が増え、想定よりハイリスクになります。レバレッジを変更する際は気を付けてください。
※変動lotを使いたい場合、[lot] は0に設定してください.
セーフ機能
※[spreadLimit][stopEquity][stopMarginLevel][stopDrawDownPer]パラメーターはpro versionでのみ利用可能
- 現在のスプレッドが [spreadLimit] 以上の場合、取引を一時停止します
- 無効にするには、[spreadLimit] = 99999999… を設定してください
- 現在の評価額が [stopEquity] 未満の場合は取引を一時停止します
- 無効にするには、 [stopEquity] = 0 を設定してください
- 証拠金維持率が [stopMarginLevel] を下回った場合、取引を一時停止します
- 無効にするには、 [stopMarginLevel] = 0 を設定してください
- ドローダウンが [stopDrawDownPer] を超えると取引を一時停止します
- 無効にするには、 [stopDrawDownPer] = 100 を設定してください
詳細・購入
magicNumber
このEAが管理しているポジションを識別するには、[magicNumber]を、他のEAと被らないようにセットしてください。
このEAは[magicNumber]と紐づけられたポジションに対してのみ操作を行います。
ログ
EA上で起きたトラブル等に関しては、チャートの左上に表示されます。
[debugMode]をONにすると、チャートの左上だけではなく、MT5のJournal上でもログを確認できます
※debugModeをONにした場合、ログが貯まりすぎるとMT5やマシンのストレージを圧迫し、動作不良を起こす可能性があります。 利用の際はストレージ残量に注意しながら行ってください。
最適化について
利用したいペアに対して、最適化を行うことでより高パフォーマンスを発揮できます。
- 複数ペアを運用する場合、相関関係の少ないペアを選ぶことでリスク分散が期待できます。
- [lot]は最小lot(0.1か0.01)を指定してください。
- [noTradeCoreRange] < 0.5 にしてください。
- pro versionでは、
- [risk] = 0 を設定してください
- セーフ機能はオフとすることをお勧めします
- 最適化評価には「Complex Criterion Max」を利用することをお勧めします。
- 最適化には、最低でも3年はテスト期間を取ることをお勧めします。
- カーブフィッティングを避けるため、テスト期間の半分をフォワードテストに充てることをお勧めします。
おススメの最適化項目は以下の通りです。
自分の好みや、マシンスペックと相談しつつ調整してください。
Variable | Start | Step | Stop |
---|---|---|---|
pricePeriod | 1 | 1 | 96 |
noTradingCoreRange | 0 | 0.05 | 0.5 |
positionHalf | 1 | 1 | 50 |
minTP | 10 | 5 | 100 |
maxTP | 101 | 10 | 301 |
最適化結果サンプル(2015/05~2022/07)
作者のマシンで最適化を行った際の、ベスト設定は以下の通りです(EURGBP)。
Variable | Value |
---|---|
pricePeriod | 36 |
noTradingCoreRange | 0.16 |
positionHalf | 31 |
minTP | 95 |
maxTP | 271 |
symbol1 | USDCHF |
symbol2 | AUDNZD |
最適化中に発生したエラーメッセージについて
もし下記のようなエラーが最適化中に発生した場合、最適化がうまくいっていないかもしれません。
その場合は、”Visualize Test”でエラーの詳細を確認することを推奨します。
失敗した可能性のあるパラメーターセットを入力し、”Visualize Test”を開始します
エラーの詳細(アラートメッセージ)が確認できます。
詳細・購入