ノロシフト移動平均ストップ損失戦略は,トレンドをフォローする戦略である. 3日間の単純な移動平均線を計算し,その上にある長いラインと,その下にあるストップ損失ラインを一定の割合で設定する.また,取利益ラインも設定する.これはトレンドが始まるとポジションを開くことができ,トレンドが逆転すると停止する.
この戦略の核心は,3日間の単純な移動平均線maを計算する.その後,エントリのための長いラインを出すためにmaの上に%loが加算される.価格がロングを超えると,ロングポジションが開かれる. ma以下では%slを引いてストップ・ロストラインストップを得る.価格がストップを下回ると,ポジションは停止される.また,現在の平均保有価格の%以上で設定される利益を引き取るラインもあります. tp
特別規則は以下のとおりです.
これは,maベンチマークと構成可能なパーセントに基づいて,エントリー,取利益,ストップ損失ラインを設定するトレンドフォロー戦略を構築します.
この戦略の最大の利点は,トレンドを自動的に追跡できるということです.パターンの認識を必要とせずに上向きトレンドを捉えるためにロングとダウントレンドをショートすることで,トレンドを捉えます.さらに利益とストップロスを追加することで,トレンドが終了すると自動的にストップアウトし,引き下げを制限することができます.
また,柔軟なパラメータ調整が利点です. パーセンテージを長引,取利益,ストップ損失に変更することで,ポジションサイズとストップ損失間隔を簡単に制御できます.
この戦略の最大のリスクはスライプである.ストップオーダーはストップ損失に使用されるため,急落する市場価格では,オーダーが満たされる前にストップ損失を下回る可能性があります.これは壊滅的な損失につながる可能性があります.
もう一つのリスクは,設定が不適切で,入口や出口が頻繁過ぎ,手数料のコストが上がるからです.
戦略は以下の方法で最適化できます.
スリップリスクを回避するために,ストップオーダーの代わりにストップオーダーを使用する.
取引頻度を削減し,スムーズにスケールインとアウトするポジションサイズ設定を追加します
トレンドでない市場での誤った信号を避けるためにトレンド検出フィルターを追加する
最適な組み合わせを見つけるためにパラメータ設定を最適化
ノロシフト移動平均ストップ損失戦略は,トレンドフォロー戦略のシンプルで実用的な方法です.利益とストップ損失を制御するリスクを自動に追跡することができます.最大のリスクは,潜在的な滑り込みとパラメータ最適化から過剰に頻繁な取引から生じる.ストップ損失技術を改善し,パラメータを最適化することで,戦略をより堅牢にすることができます.
/*backtest start: 2023-12-30 00:00:00 end: 2024-01-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //2019 //Noro //@version=4 strategy("Stop-loss", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings lo = input(-5.0, title = "Long-line, %") tp = input(5.0, title = "Take-profit") sl = input(2.0, title = "Stop-loss") //SMA ma = sma(ohlc4, 3) long = ma + ((ma / 100) * lo) //Orders avg = strategy.position_avg_price if ma > 0 strategy.entry("Long", strategy.long, limit = long) strategy.entry("Take", strategy.short, 0, limit = avg + ((avg / 100) * tp)) strategy.entry("Stop", strategy.short, 0, stop = avg - ((avg / 100) * sl)) //Cancel order if strategy.position_size == 0 strategy.cancel("Take") strategy.cancel("Stop") //Lines plot(long, offset = 1, color = color.black, transp = 0) take = avg != 0 ? avg + ((avg / 100) * tp) : long + ((long / 100) * tp) stop = avg != 0 ? avg - ((avg / 100) * sl) : long - ((long / 100) * sl) takelinecolor = avg == avg[1] and avg != 0 ? color.lime : na stoplinecolor = avg == avg[1] and avg != 0 ? color.red : na plot(take, offset = 1, color = takelinecolor, linewidth = 3, transp = 0) plot(stop, offset = 1, color = stoplinecolor, linewidth = 3, transp = 0)