この戦略は,移動平均値を用い,取引信号を生成し,各取引のリスクと報酬を制御するために,エントリー価格に基づいて固定パーセントのストップ損失と利益レベルを設定します.
この戦略は,まず,5日指数関数移動平均線 (EMA) と32日 EMA を用いてトレンド方向を決定する.短期移動平均線が長期平均線を超越し,横軸の下を短くすると長引く.
トレードに入ると,ストップ損失を設定し,ユーザが定義したストップ損失百分比と利益の百分比に基づいて,戦略はダイナミックに各取引の利益を取ります.特に,ロングトレードでは,ストップ損失はエントリー価格 × (1 - ストップ損失百分比) で設定され,利益を取ることはエントリー価格 × (1 + 利益の百分比) で設定されます.ショートトレードでは,逆転します -エントリー価格 × (1 + ストップ損失百分比) でストップ損失とエントリー価格 × (1 - 利益の百分比) で利益を取ります.
これは,各取引に対して固定されたリスク/リターン比を確保し,リスクと利益を制御することを可能にします.
ストップ・ロストとテイク・プロフィートを設定するこの方法は,いくつかの重要な利点があります.
取引に対する最大損失を制限し,取引リスクを効果的にコントロールできます
取引ごとに固定利益率を固定し 収益を保証できます
ストップ・ロストとテイク・プロフィートポイントは,固定値を使用するのではなく,実際のエントリー価格によって異なります.
ユーザは入力パラメータを調整することで リスクに対する意欲を判断できます
シンプルで直感的な戦略論理 分かりやすく検証できます
この戦略にはいくつかのリスクもあります:
移動平均値は過度に無効な信号を生み出し,エントリー後に停止する可能性が高い.
利益率が高くすぎると 収益性が不足し 低すぎると 利益が足りなくなるかもしれません
ストップ・ロスは ストップ・アウトの確率を高め 緩衝効果をもたらす可能性があります
取引製品と時間枠の選択が有効性に影響を与える可能性があります.
対応する解法:
移動平均のパラメータを最適化して 誤った信号を減らす
利得率をテストして 最適値を見つけます
ストップ・ロスの距離を市場変動に基づいて調整する.
戦略のパフォーマンスを 異なる製品と時間枠で評価する.
戦略は以下の点で改善できる:
移動平均値から過剰な誤った信号を避けるため,傾向検証のための他の指標を追加する.
ストップ・ロスを最適化し 利回り率をバックテストデータに基づいて 最適なパラメータを見つける
ストップ・ロスを トレイリング・ストップに変更して 継続的な利益を 確保します
取引リスクを管理するためにピラミッド型とストップロスを含むポジションサイズルールを追加します.
異なる取引手段と時間枠におけるパフォーマンス差異を評価する.
この戦略は,移動平均値でトレンド方向を特定し,単一の取引リスクと報酬を制御するためにエントリー価格に基づいて固定パーセントストップロスを設定し,利益を得ます.その利点は,損失を効果的に制限し,利益比率を確保し,シンプルで直接的なロジックです.ストップロスの適切な構成 / 利益を得るためにパラメータ,取引製品とタイムフレームの選択,および戦略をさらに最適化するためのさまざまな方法を注意する必要があります.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // © theCrypster 2020 //@version=4 strategy("Fixed Percent Stop Loss & Take Profit %", overlay=true) // Moving Averages to get some example trades generated eg1 = ema(close, 5) eg2 = ema(close, 32) long = crossover(eg1, eg2) short = crossunder(eg1, eg2) strategy.entry("LONG", strategy.long, when=long) strategy.entry("SHORT", strategy.short, when=short) // // The Fixed Percent Stop Loss Code // User Options to Change Inputs (%) stopPer = input(5.0, title='Stop Loss %', type=input.float) / 100 takePer = input(10.0, title='Take Profit %', type=input.float) / 100 // Determine where you've entered and in what direction longStop = strategy.position_avg_price * (1 - stopPer) shortStop = strategy.position_avg_price * (1 + stopPer) shortTake = strategy.position_avg_price * (1 - takePer) longTake = strategy.position_avg_price * (1 + takePer) if strategy.position_size > 0 strategy.exit(id="Close Long", stop=longStop, limit=longTake) if strategy.position_size < 0 strategy.exit(id="Close Short", stop=shortStop, limit=shortTake) //PLOT FIXED SLTP LINE plot(strategy.position_size > 0 ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL") plot(strategy.position_size < 0 ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL") plot(strategy.position_size > 0 ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit") plot(strategy.position_size < 0 ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit") //