長期トレンド逆転戦略は,トレンドフォローと短期逆転を組み合わせた機械的な取引システムである. 7日間の高低をチャネルを構築し,200日間の移動平均を長期トレンド方向を決定するために使用する. オス市場では,ダウンで購入し,アップトレンドで販売する. 熊市場では,ラリーで販売し,ダウンで購入する.
この戦略は主に以下の原則に基づいています.
7日間の高低値を使って 先週の上昇と低下を判断します
200日移動平均は長期トレンド方向を決定します
価格が7日間の低値を下回り,200日間の移動平均値を超えると,買い信号が生成されます.これは短期的な下向きの修正の終わりを示し,傾向が上昇する可能性があります.
価格が7日間の高値を超えて200日間の移動平均値を下回ると,セールシグナルが生成されます.これは短期上向きの修正の終わりを示し,傾向が下向きに逆転する可能性があります.
取引ごとにリスクを制御するために 2x ATRストップロスを使用します.
鍵は短期および長期の時間枠の両方を考慮することです. 7 日チャネルは最近の価格動向を判断し,200 日MAは多ヶ月のトレンドを判断します. 両方も同じ方向を示したときにのみ取引信号が生成されます. これにより,短期的訂正からの誤った信号が回避されます.
この戦略の主な利点は以下の通りです.
価格と移動平均をベースにした シンプルで明確な信号です
短期的・長期的トレンドを考慮し,ノイズを効果的にフィルターします
トレンドフォローと平均逆転の組み合わせで 利回りが平坦になります
ATRのストップ・ロスはリスクを制御し 最大引き上げを小さくします
株式,外為,暗号通貨に適用できます
高低周波の環境でも動作できます
主なリスクは以下のとおりです.
強いトレンド市場での大きなトレンドを見逃すかもしれません
ストップ・ロスは,不安定な市場では頻繁に発生する可能性があります.
不適切なパラメータは過剰な取引につながります
短期・長期のトレンドメトリックが正しくない場合 信号が過剰に過濾される可能性があります
サンプルデータ不足によるモデル障害
主なリスク管理技術:
合理的なストップ損失と取引頻度のためのパラメータを最適化します.
市場や時間枠を 裏付けています
ポートフォリオの多様化により 単一の戦略リスクが 低下します
取引ごとに損失を制限する指数的なストップ損失.
この戦略は以下の点において改善可能である.
短期のトレンドメトリックを良くするためにチャネル長さを最適化します
長期的トレンドメトリックの改善のために MA 長さを最適化します.
ストップ・ロスの他のテクニックを試してください 割合や後退などです
トレンドの逆転は,しばしばボリュームの増加を見ます.
短期と長期に最適なパラメータを見つけるための機械学習です
基本と感情に基づいた ダイナミックな脱出ルール
ストップロスを指数関数または利益ロックアルゴリズムに最適化します
パラメータの最適化と組み合わせにより 収益とリスク指標がさらに向上します
長期トレンド逆転戦略は,トレンドフォローと平均逆転の両方を組み合わせます.短期的および長期的トレンドの両方を判断することによって,トレンド逆転ポイントで信号を生成します.純粋なトレンドまたは平均逆転戦略と比較して,市場ノイズをフィルターし,安定したリターンとリスク管理を達成します.全体的に,この戦略は,市場観を持つアルゴトレーダーに適しており,定量的なポートフォリオの安定したパフォーマンスを提供します.継続的な最適化とリスク管理により,リスクリターンのさらなる改善は可能です.
/*backtest start: 2023-11-05 00:00:00 end: 2023-11-12 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © racer8 //@version=4 // This Algo Strategy Has Only 3 rules and 62% Win Rate (Youtube) strategy("Trend Bounce", overlay=true) nn = input(7,"Channel Length") hi = highest(high,nn) lo = lowest(low,nn) n2 = input(200,"Ma Length") ma = sma(close,n2) if close>ma and close<lo[1] strategy.entry("Buy",strategy.long) if close>hi[1] strategy.close("Buy") if close<ma and close>hi[1] strategy.entry("Sell",strategy.short) if close<lo[1] strategy.close("Sell") plot(hi,"high",color=color.aqua) plot(lo,"low",color=color.aqua) plot(ma,"sma",color=color.yellow) //-----------------------------------------Stop Loss------------------------------------------------------- atr = sma(tr,10)[1] bought = strategy.position_size[0] > strategy.position_size[1] sold = strategy.position_size[0] < strategy.position_size[1] slm = input(2.0,"ATR Stop Loss",minval=0) StopPrice_Long = strategy.position_avg_price - slm*atr // determines stop loss's price StopPrice_Short = strategy.position_avg_price + slm*atr // determines stop loss's price FixedStopPrice_Long = valuewhen(bought,StopPrice_Long,0) // stores original StopPrice FixedStopPrice_Short = valuewhen(sold,StopPrice_Short,0) // stores original StopPrice plot(FixedStopPrice_Long,"ATR Stop Loss Long",color=color.blue,linewidth=1,style=plot.style_cross) plot(FixedStopPrice_Short,"ATR Stop Loss Short",color=color.red,linewidth=1,style=plot.style_cross) if strategy.position_size > 0 strategy.exit(id="Stop", stop=FixedStopPrice_Long) // commands stop loss order to exit! if strategy.position_size < 0 strategy.exit(id="Stop", stop=FixedStopPrice_Short) // commands stop loss order to exit!