ノロは移動平均ストップ損失戦略を変えた

作者: リン・ハーンチャオチャン,日付: 2024年1月30日 15:49:34
タグ:

img

概要

ノロシフト移動平均ストップ損失戦略は,トレンドをフォローする戦略である. 3日間の単純な移動平均線を計算し,その上にある長いラインと,その下にあるストップ損失ラインを一定の割合で設定する.また,取利益ラインも設定する.これはトレンドが始まるとポジションを開くことができ,トレンドが逆転すると停止する.

戦略の論理

この戦略の核心は,3日間の単純な移動平均線maを計算する.その後,エントリのための長いラインを出すためにmaの上に%loが加算される.価格がロングを超えると,ロングポジションが開かれる. ma以下では%slを引いてストップ・ロストラインストップを得る.価格がストップを下回ると,ポジションは停止される.また,現在の平均保有価格の%以上で設定される利益を引き取るラインもあります. tp

特別規則は以下のとおりです.

  1. 3日間の単純な移動平均を計算します.
  2. 線長 = ma + ma * lo%
  3. 利得ラインの引き上げ = 現在の平均保有価格 + 現在の平均保有価格 * tp%
  4. ストップ損失ラインストップ = 現在の平均保有価格 - 現在の平均保有価格 * sl%

これは,maベンチマークと構成可能なパーセントに基づいて,エントリー,取利益,ストップ損失ラインを設定するトレンドフォロー戦略を構築します.

利点分析

この戦略の最大の利点は,トレンドを自動的に追跡できるということです.パターンの認識を必要とせずに上向きトレンドを捉えるためにロングとダウントレンドをショートすることで,トレンドを捉えます.さらに利益とストップロスを追加することで,トレンドが終了すると自動的にストップアウトし,引き下げを制限することができます.

また,柔軟なパラメータ調整が利点です. パーセンテージを長引,取利益,ストップ損失に変更することで,ポジションサイズとストップ損失間隔を簡単に制御できます.

リスク分析

この戦略の最大のリスクはスライプである.ストップオーダーはストップ損失に使用されるため,急落する市場価格では,オーダーが満たされる前にストップ損失を下回る可能性があります.これは壊滅的な損失につながる可能性があります.

もう一つのリスクは,設定が不適切で,入口や出口が頻繁過ぎ,手数料のコストが上がるからです.

オプティマイゼーションの方向性

戦略は以下の方法で最適化できます.

  1. スリップリスクを回避するために,ストップオーダーの代わりにストップオーダーを使用する.

  2. 取引頻度を削減し,スムーズにスケールインとアウトするポジションサイズ設定を追加します

  3. トレンドでない市場での誤った信号を避けるためにトレンド検出フィルターを追加する

  4. 最適な組み合わせを見つけるためにパラメータ設定を最適化

結論

ノロシフト移動平均ストップ損失戦略は,トレンドフォロー戦略のシンプルで実用的な方法です.利益とストップ損失を制御するリスクを自動に追跡することができます.最大のリスクは,潜在的な滑り込みとパラメータ最適化から過剰に頻繁な取引から生じる.ストップ損失技術を改善し,パラメータを最適化することで,戦略をより堅牢にすることができます.


/*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)

もっと