[TOC]

定量分析トレーダーに「良いエントリーシグナルを見つける方法」の他に最も面倒な質問は何かと尋ねると、「損切りはどこに設定すればよいか」と尋ねられるでしょう。
損切りに関しては、早すぎると後悔するでしょうが、遅すぎるともっと後悔するでしょう。仮想通貨が1.4%の利益を出し、2%の利益目標に達するまで待つつもりだと満足していたのに、その後、滑り台のように下落し、-0.1%に達したところで損切りが発動してしまうのです。
さらに気が滅入るのは、これが単発の出来事ではなく、むしろ繰り返し起こるテーマであるということです。利益曲線は、まるで台本のないサスペンス映画を見ているかのように、激しく変動しています。
この記事では、実際にAIを活用したローテーション戦略に基づいて、私たちが試した様々なストップロス手法をご紹介します。ストップロスの問題で悩んでいる方々にとって、少しでも参考になれば幸いです。
以下は当社の戦略フレームワークの簡単な紹介です。

この戦略は確かに有望な仮想通貨を特定し、トレンドに追従することで良好なリターンを得ることができます。しかし、仮想通貨市場は非常にボラティリティが高く、利益の大幅な減少や損失の反転につながることも少なくありません。そのため、ストップロスの問題は私たちにとって常に懸念事項となっています。そのため、私たちはストップロス対策の解決策を模索する長い道のりを歩み始めました。

トレーリングストップロスは最も古典的なストップロス手法です。その基本的なロジックはシンプルです。
ポジションが確立されてからの最高利益ポイントを追跡し、価格が最高ポイントから設定されたパーセンテージを超えて戻ったときにストップロスをトリガーします。
このアプローチの背後にある哲学は、「価格がどこまで上がるかは分からないが、下がり始めたら撤退すべきであることは分かっている」というものです。
// 核心逻辑
const currentPnl = (currentPrice - entryPrice) / entryPrice; // 当前盈亏
const drawdown = maxProfit - currentPnl; // 回撤幅度
// 更新最高盈利
if (currentPnl > maxProfit) {
maxProfit = currentPnl;
_G(symbolKey, maxProfit);
}
// 触发止损
if (drawdown >= TRAILING_STOP_PERCENT) {
closePosition(coin, "移动止损");
}
アドバンテージ:
欠点:

ストップロスを移動するための「万能」アプローチは十分に正確ではないため、さまざまな利益レベルに基づいてさまざまな戦略を設定します。
ゲームをプレイするのと同じように、最初の村ではリスクを負うことができますが、優れた装備を備えた最大レベルのキャラクターの場合は、より慎重になる必要があります。
当社の階層化デザイン:
| 利益範囲 | ストップロスレベル | モデル |
|---|---|---|
| < 0% | -1% | 損失を防ぎ、損失を止める |
| 0% ~ 0.5% | 0% | 損益分岐点と損切り |
| 0.5% ~ 1% | +0.5% | 利益を確保し損失を止める |
| 1% ~ 1.5% | +1% | 利益を確保し損失を止める |
| 1.5% ~ 2% | +1.5% | 利益を確保し損失を止める |
| ≥ 2% | 最高点 -1.5% | 移動停止 |
const STOP_LOSS_TIERS = [
{ minProfit: -Infinity, maxProfit: 0.0001, stopAt: -0.01 },
{ minProfit: 0.0001, maxProfit: 0.005, stopAt: 0 },
{ minProfit: 0.005, maxProfit: 0.01, stopAt: 0.005 },
// ... 更多层级
{ minProfit: 0.02, maxProfit: Infinity, trailing: 0.015 }
];
// 根据最高盈利找到对应层级,返回止损位
function calculateStopLevel(maxProfit) {
for (let tier of STOP_LOSS_TIERS) {
if (maxProfit >= tier.minProfit && maxProfit < tier.maxProfit) {
return tier.trailing ? maxProfit - tier.trailing : tier.stopAt;
}
}
}
アドバンテージ:
欠点:

トレンドフォロー戦略なので、アプローチをシンプルにし、利益確定注文のみを利用し、損切り注文のみを使用します。シンプルさと直接性は時にメリットとなります。
私は損失を抑えることだけに焦点を当てています。どれだけ稼げるかについては、ポジションをいつクローズするかを決定する AI シグナルに任せています。
エントリーシグナルを信じ、最大損失を制御することのみが必要なシナリオに適しています。
// 简单到令人发指
if (currentPnl <= -FIXED_LOSS_PERCENT) {
closePosition(coin, "固定止损");
}
アドバンテージ:
欠点:

結果は理想的とは言えず、利益を逃すことも多々あります。ストップロスだけに頼るのは行き過ぎなので、両方の側面について考えてみましょう。
同時に、利益目標と損切り限度額を設定しています。自分がいくら欲しいのか、そしていくらまでなら耐えられるのかを分かっています。
それは非常に合理的で、成熟したトレーダーがどうあるべきかということのように思えます。
// 止盈检查
if (currentPnl >= FIXED_PROFIT_PERCENT) {
closePosition(coin, "固定止盈");
}
// 止损检查
if (currentPnl <= -FIXED_STOPLOSS_PERCENT) {
closePosition(coin, "固定止损");
}
アドバンテージ:
欠点:

結果はまだ満足のいくものではありませんでした。利益確定の制限と不安定なエントリーシグナルが相まって、損益比率がマイナスになってしまいました。単一通貨ペアで確実に利益をコントロールするのは難しいため、アプローチを変えて複数の通貨ペアの統計情報を組み合わせることにします。
ストップロスとテイクプロフィットのレベルは、保有ポジション数に基づいて動的に計算されます。チーム全体が利益を上げている限り、個々のパフォーマンスは問題になりません。
たとえば、各ポジションが 100U で、3 つのポジションを保持し、利益目標が 0.1 の場合、利益目標 = 3 × 100 × 0.1 = 30U、ストップロス目標 = 3 × 100 × -0.05 = -15U となります。
// 计算动态止盈止损额度
const profitTarget = positionCount * AMOUNT_PER_POSITION * PROFIT_RATIO;
const lossLimit = positionCount * AMOUNT_PER_POSITION * LOSS_RATIO;
// 检查总体盈亏
if (totalProfit >= profitTarget) {
closeAllPositions("止盈");
}
if (totalProfit <= -lossLimit) {
closeAllPositions("止损");
}
アドバンテージ:
欠点:

さまざまなストップロス方法を試した後、哲学的なジレンマに陥ることがあります。
おそらく問題は、私のストップロス方法が間違っているということではなく、そもそも自動ストップロスを使用するべきではなかったということなのでしょう。
ランダム モード: 自動ストップロスを設定せずに、AI のエントリーおよび終了信号を完全に信頼します。
適用される状況:
if (STOP_MODE === "随缘") {
// 什么都不做,一切交给AI信号
return { status: "随缘模式", message: "不进行自动平仓" };
}
「流れに身を任せる」モードはとても気楽に聞こえるかもしれませんが、強力なシグナルシステムとある程度の精神力が必要です。一般の人は注意して使用する必要があります。さもないと、あなた自身が「流れに身を任せる」前に、資金が流れに身を任せてしまう可能性があります。
上記は、ストップロス注文の全体的な戦略フレームワークの概要です。ただし、実際にストップロス注文を実行する際には、より洗練された設計を実装できます。
例えばピン挿入防止ストップロス:

暗号通貨の世界では、「フラッシュクラッシュ」と呼ばれるよく知られた現象があります。これは、突然の急激な価格変動の後に急激な回復が続く現象で、特にストップロス注文を設定した人々を狙ったものです。
これに対抗するための 1 つの戦略:損失をすぐに止めるのではなく、一定期間内にストップロスラインに触れた回数をカウントし、しきい値に達した場合にのみ損失を止めます。
その論理は、単なる急騰であれば価格はすぐに回復し、真のトレンド反転であればストップロスラインに達し続けるというものです。
// 核心逻辑
let triggerCount = 0;
const THRESHOLD = 3; // 需要触及3次才真正止损
// 每次检查时
if (currentPnl <= STOP_LOSS_PERCENT) {
triggerCount++;
if (triggerCount >= THRESHOLD) {
closePosition(coin, "防插针止损");
triggerCount = 0;
}
} else {
triggerCount = 0; // 价格恢复,重置计数
}
もちろん、これにはリスクも伴います。市場が実際に暴落した場合、「確認待ち」であるため、より大きな損失を被る可能性があります。したがって、価格の急騰と急落が頻繁に起こる市場環境に適しています。
同様の洗練されたデザインは数多くありますが、中核となる考え方は同じです。全体的な戦略フレームワーク内で、特定のシナリオに合わせた最適化が行われます。

上記の方法をテストした結果、私たちは多少直感に反する結論に達しました。
最も単純なトレーリング ストップ ロス戦略は、このアプローチでは全体的に最も優れたパフォーマンスを発揮します。
なぜでしょう?
この戦略の目的は、将来性の高い仮想通貨を選択することであるため、一部の仮想通貨の急騰が他の仮想通貨の損失を覆い隠してしまう可能性があります。そのため、より柔軟な移動ストップロス注文によって、トレンドをより適切に捉えることができます。
しかし、これはトレーリングストップロスがあらゆる戦略に普遍的な解決策であることを意味するものではありません。私たちの結論は次のとおりです。
正直に言うと、ストップロスの問題はまだ完全には解決されていません。現段階では、比較的受け入れられる解決策を見つけただけです。
今後も探求し続ける価値があると私たちが考える方向性はいくつかあります。
ボラティリティに基づく動的なパラメータ調整現在のストップロスのパラメータは固定されていますが、ボラティリティは通貨や市場局面によって大きく異なります。理論的には、ストップロスレベルを直近のATR(損失調整試行)に基づいて自動的に調整できれば、市場への適応性が向上するはずです。もちろん、「理論上」と「実際」の間には大きな違いが生じることがよくあります。
通貨によって異なる戦略が使用されます。BTCとアルトコインの価格変動は全く異なるため、同じストップロスロジックを適用するのは本質的に粗雑です。各コインの過去のボラティリティ特性に基づいて、最適なストップロス方法を自動的にマッチングさせる方が望ましいでしょう。
保持時間を考慮するポジションをオープンする際に、よりタイトなストップロスオーダーを設定することで、元本を守ることができます。ポジションの保有期間が長くなるほどトレンドは安定し、ボラティリティも高まるため、より柔軟な対応を可能にするために、より広いストップロスオーダーを設定することができます。このロジックは理にかなっているように思われますが、時間減衰関数の具体的な設計方法については、まだ検討が必要です。
より多くの信号源を組み合わせる現在、ストップロス注文は価格のみに基づいていますが、これに異常な取引量、資金調達率の変化、さらにはニュースのセンチメントなどのシグナルを組み合わせることで、「通常の引き戻し」なのか「トレンドの反転」なのかをより正確に評価できる可能性があります。もちろん、シグナルソースが増え、システムが複雑になればなるほど、問題が発生する可能性が高くなります。
これらのアイデアは現在はまだ「アイデア」の段階ですが、実際に実行に移し、成果が出次第、皆様に共有させていただきます。
この時点で、「どのタイプのストップロスを使用すればよいのか」と疑問に思うかもしれません。
私の答えは次のとおりです。両方試してみてください。
あらゆる戦略には独自の「個性」があり、あらゆる市場には独自の「気質」があります。戦略と市場の相乗効果を見つける必要があります。ストップロス手法は単なるツールであり、ツールを効果的に活用するための前提条件は、それらを理解することです。
ストップロスについてもっと良いアイデアがあれば、ぜひ共有してください。結局のところ、定量取引の道を歩む私たちは、途中で間違いを犯しながら学ぶ旅人なのです。
最後に、アドバイスを一言。
損失を止めるということは、敗北を認めることではなく、次回のより良い攻撃に備えることです。
取引が成功することを祈っています!🚀