SkdonSeriesMulti
- エキスパート
-
Igor Bulyshev
Умный, красивый, в меру упитанный и талантливый трейдер-программист в полном расцвете сил!!)) - バージョン: 6.85
このEA(エキスパートアドバイザー)は、28の通貨ペア(コード内に固定リストあり)を対象とした、長期(生涯運用型)のマルチカレンシー取引用であり、時間足はM30を使用します。対象通貨ペアのリスト:EURUSD, GBPUSD, AUDUSD, USDCAD, USDJPY, USDCHF, GBPJPY, EURJPY, AUDCAD, AUDJPY, CHFJPY, EURCHF, EURGBP, NZDJPY, NZDUSD, CADJPY, AUDCHF, AUDNZD, CADCHF, EURAUD, EURCAD, EURNZD, GBPAUD, GBPCHF, GBPCAD, GBPNZD, NZDCAD, NZDCHF。
このEAの目的は、トレンド相場の動きを捉え、特別な仕組み(平均化、ロック注文、緊急保護機能)を用いてリスクを管理することです。
基本戦略はトレンドフォロー型で、内蔵されたインジケーターSkdon2を使用し、各完了バーでBUYまたはSELLシグナルを出力します。シグナルが変わると、EAは古いポジションを所定のルールでクローズし、新しいシグナルの方向に一連の4件(設定で変更可能)の保留注文(BUYSTOPまたはSELLSTOP)を出します。
1. EAの全体的な動作
EAは、30分足の各通貨ペアを、コードに組み込まれた独自インジケーターで分析します。インジケーターが買いまたは売りのシグナルを出したとき、EAは一連の注文を出します。すなわち、1件の成行注文(現在価格で即時)と、複数の保留注文(買いの場合は価格より上、売りの場合は下)を、設定で指定された間隔で配置します。保留注文の数はパラメーターInpPendingCount(デフォルト4)で指定されますが、テスター内では注文数制限エラーを避けるため強制的に2に減らされます。
シグナルが逆転した場合、EAは古いシリーズを(全体的または部分的に)クローズし、新しい方向で新しいシリーズを開始します。これにより、EAはトレンドに追随し、シグナルが変わるたびにポジションを反転させ続けます。
2. 動作モード
EAには3つの主要モードがあります。
-
モード0 – ノーマル(通常):EAがフル稼働します。新しいシリーズを開始し、それらを管理し、補償とトレーリングを使用します。日常取引の基本モードです。
-
モード1 – エグジット(出口):新しいシリーズは開始されません。既存のシリーズは引き続き管理(トレーリング、平均化、ロック)されますが、それらがクローズされた後は新規はありません。急に全てをクローズせずに、市場から徐々に撤退したい場合に使用します。
-
強制精算モード(自動):いずれかのペアで損失が残高の所定割合(デフォルト5%)を超えた場合に自動的に作動します。作動すると:
-
新規シリーズの開始が禁止されます。
-
利益が出ているシリーズのみをクローズし、利益を確定して全体損失を軽減します。
-
全体損失が所定割合(デフォルト4%)未満になるか、市場注文がゼロになるとモードは解除され、通常の取引が再開されます。
-
3. シリーズの開始とクローズの方法
Skdon2インジケーターのシグナルは、新しいM30バーごとに計算されます。シグナルが変化した(例えば「買い」から「売り」へ)場合、EAはトレンドが反転したと判断します。
シリーズがまだ存在しない場合、シグナル発生時に以下が開始されます:
-
1件の成行注文(買いまたは売り)を即時。
-
複数のBuy StopまたはSell Stop注文を、StepDistance間隔で配置。数はPendingCountで指定。
既にシリーズが存在し、シグナルが逆転した場合:
-
まず全ての保留注文を削除します。
-
次に市場注文を以下のルールでクローズ:
-
シリーズの総利益がプラスの場合、シリーズ内の全市場注文をクローズ。
-
総利益がマイナスの場合、プラスの注文のみをクローズし、損失注文は残します(損失確定を避けるため)。
-
-
その後、新しい方向で新シリーズを開始します。
4. 補償モード(平均化とロック)
いずれかのペアで損失が残高の2.5%を超えて蓄積されると、EAはそのペアに対して補償モードを開始します。このモードでは以下が機能します。
-
平均化(Averaging):そのペアで最も損失の大きい注文を特定します。価格が最後の平均化注文からAveragingStepPoints分だけ離れると、損失方向と同じ方向に新規注文を開始します。これにより平均エントリー価格を引き下げます。各平均化のロットは、乗数AveragingMultiplierに従って増加しますが、端数処理(初期ロット / FractionSize)により急激な増加を抑えます。この補償シリーズ(対象注文+全平均化)の合計利益が目標値(初期ロット × 250)に達すると、シリーズ全体を利益確定でクローズします。
-
ロック注文(Locking):損失が3%を超え、かつ買いと売りの総量に不均衡(差異が0.01ロット超)がある場合に開始されます。ロック注文は優勢な方向とは逆に開かれます(買いが多いなら売り、その逆)。これによりポジションを部分的にヘッジします。ロックのロット = 不均衡 × LockLotPercent / 100。ロック後、不均衡は縮小し、次のロックはより小さなロットになります。
-
新規ロックは、前回のロックを改善する方向にのみ開かれます:
-
売りロックの場合:価格が下落(売りポジションを改善)したとき。
-
買いロックの場合:価格が上昇したとき。
-
-
ロック間の距離はLockStepPointsとします。これにより同一水準での頻繁なロック開始を防ぎます。ロックもトレーリングストップで管理されます(補償モードが有効な通貨ペアの全注文にトレーリングストップが適用されますが、平均化注文は除く)。
-
トレーリングストップ(Trailing Stop):補償モードのペアにのみ適用されます。各注文(平均化注文除く)について、エントリー価格からTrailingActivationポイント以上動いた時点でトレーリングが有効化されます。その後、ストップロスを現在価格からTrailingStopDistの距離に移動させますが、更新頻度はTrailingStep以上とします。これにより、さらなる価格変動で利益を確定できます。
5. 追加の保護機能
-
ギャップ保護(Gap Protection):新M30バー開始時に、前バー終値と現在の始値の間にギャップ(急激な価格変動)がないかチェックします。ギャップサイズがGapThresholdを超えると、そのペアの全ての保留注文を削除し、市場注文を(総利益がプラスなら全クローズ、マイナスならプラス注文のみクローズ)します。その後40秒間のクールダウン後、シグナルを再計算し、変化していれば新シリーズを開始します。
-
古い損失注文のクローズ:8分ごとに、35時間以上経過し損失状態にある市場注文をチェックします。そのような「最悪」の損失注文に対して、EAは他のペアで利益が出ているシリーズを探し、その損失+若干の余裕をカバーできるだけの利益が集まるまでそれらをクローズします。その後、古い損失注文自体もクローズします。
-
逆方向注文のクローズ:同じペアに利益のある買いと損失のある売り(またはその逆)が存在し、一方の利益がシリーズ内の最悪損失注文を余裕を持ってカバーできる場合、利益注文を最悪損失注文と共にクローズし、全体リスクを低減します。
6. 情報パネル
チャート上に2つのブロックからなるパネルが表示されます。
-
左パネル:現在のモード、精算ステータス、目標利益、補償モード中の通貨ペアリスト。
-
右パネル:過去数日の利益、注文数、出来高、古い損失、EAの最後のアクション。
7. 全設定(入力パラメーター)の説明
グループ1: 基本設定
-
Base magic number = 100:EAの全注文を識別するマジックナンバー。複数の口座で複数コピーを動かす場合は、干渉を避けるためにこの数値を変更してください。
-
Work mode = 0:0=通常モード、1=出口モード(新シリーズ開始なし)。手動で運用を終了する際に使用します。
-
Risk percent = 30:ロットサイズに影響します。数値が大きいほどロットが大きくなります。例えば30の場合、基本ロット = 残高 × 0.003 / 10000(経験式)。ご自身のリスクに合わせて調整してください。
-
Minimum gap = 35:保護機能が作動する最小ギャップサイズ(標準ポイント単位)。JPYペアでは1ポイント=0.01、それ以外は0.0001です。
-
Pending orders count = 4:シリーズ開始時に成行注文に追加する保留注文の数。数が多いほどグリッドが深くなります。
-
Distance between pendings = 15:保留注文間のステップ(ポイント単位)。グリッドの密度に影響します。
-
Show info panel = true:チャートに情報パネルを表示します。リソース節約やテスト時にはオフにできます。
グループ2: 精算モード
-
Loss % to activate = 5.0:いずれかのペアの損失がこの残高に対する割合を超えると、精算モードが作動します。
-
Loss % to exit = 4.0:全通貨ペアの合計損失がこの割合未満になると、精算モードが解除されます。
グループ3: 補償とトレーリング
-
Lock lot percent = 15.0:不均衡ボリュームに対する割合で、ロック注文のロットを計算します。
-
Lock step points = 5:ロック注文間のステップ(ポイント単位)。新規ロックは、価格が改善方向にこの距離だけ動いた場合にのみ開始されます。
-
Averaging step points = 20:平均化注文間のステップ。新しい平均化注文は、価格が前回の平均化注文からこの距離だけ動いた場合に開始されます。
-
Averaging multiplier = 1.7:各平均化のロット増加倍率。1より大きい値でロットが増加します。
-
Trailing activation = 18:エントリー価格からこのポイント数動くとトレーリングストップが有効になります。
-
Trailing stop distance = 15:トレーリング時にストップロスを現在価格からこの距離に設定します。アクティベーションより小さくないと、ストップが利益圏になりません。
-
Trailing step = 2:ストップロス更新時の最小変動幅。頻繁な変更を防ぎます。
グループ4: 端数クローズ
-
Profit factor = 250.0:逆方向注文クローズの補助メカニズムで使用します。
-
Fraction size = 5.0:平均化の端数サイズ。最初の平均化ロット = 初期ロット / FractionSize。数値が小さいほど最初の平均化ロットが大きくなります。
8. 重要な実践アドバイス
-
まずデモ口座で運用を始め、ご自身の設定でのEAの挙動を理解してください。
-
TrailingStopDistがTrailingActivationより常に小さくなるようにしてください。そうしないと、トレーリングがストップロスを損失圏に設定してしまいます。
-
ボラティリティが高い場合は、GapThresholdや各ステップ(StepDistance, LockStepPoints, AveragingStepPoints)を大きくして、頻繁な作動を避けてください。
-
アグレッシブな取引には、LockLotPercentやAveragingMultiplierを大きくし、ステップを小さくしてください。
-
精算モードは最終防御です。頻繁に作動する場合はリスクが高すぎるため、RiskPercentを下げるか、作動閾値を上げてください。
-
このEAは完全自動ですが、安定したインターネット接続と、全28ペアがシンボルリストに含まれていることが必要です。
EAのメリット
-
マルチカレンシー – 28通貨ペア。高い分散効果により、単一通貨への依存を軽減します。
-
ポートフォリオの自動クリーンアップ – 古い損失や逆方向ポジションを手動操作なしで自動的に解消します。
-
グローバルな利益目標 – 定期的に全体利益を確定することで、資本増加曲線をより平滑にします。
-
高い耐障害性 – エラー時の再試行、バー不足の保護、取引許可チェックなどが実装されています。
リスクとその軽減策
-
市場リスク(トレンド急変、大きな損失):シグナル変更時の部分クローズ、グローバル目標、古い損失注文のクリーンアップにより、損失注文が何週間も保持されることはありません。
-
ギャップリスク(週末、重要ニュース):専用の保護アルゴリズムにより、ギャップが設定閾値(デフォルト35ポイント)以上の場合は、そのペアの保留注文をクローズし、40秒のクールダウン後にインジケーター状態を再分析して運用を継続します。
-
技術的障害(電源断、再起動):システム再起動時に全ての状態が復元されます。シリーズの方向は既存注文から読み取り、各ペアのインジケーター状態は常に保存され、再起動後の状態と比較されます。
-
連続損失によるドローダウン:グローバル利益達成アルゴリズムや逆方向注文メカニズムにより、優位な方向の利益で損失を補填します。
-
運用時間:月曜から金曜まで24時間稼働します。
このEAは完全自動であり、手動介入は不要です。取引の成功をお祈りします!
スクリーンショットには、3年間にわたる各種通貨ペアでのバックテスト結果が示されています。テストはデフォルト設定で実施されました。なお、これはマルチカレンシーEAであるため、単一通貨ペアでストラテジーテスターを実行した場合、他のペアの利益シリーズによる古い損失注文のクローズ機能は動作しない点にご注意ください。
テスターでの注意点
テストを正常に実行するため、EAは自動的に保留注文数を2に制限し、総開設注文数を30に制限します。これは注文数制限エラー(エラー148)を防止するための措置です。
