ノロバンドのトレンドフォロー戦略


作成日: 2023-09-18 13:57:31 最終変更日: 2023-09-18 13:57:31
コピー: 3 クリック数: 679
1
フォロー
1617
フォロワー

概要

この戦略は,Noroが自作した波帯指標に基づいてトレンド方向を判断し,特定のルールと組み合わせて取引シグナルを生成するトレンド追跡戦略である.価格が波帯を破るときに取引シグナルを生成する.また,シグナル品質を向上させるために補助指標CryptoBottomと組み合わせる.

戦略原則

  1. ノロ波帯を計算する.ユーザ定義周期による最近の高点,低点を計算し,中線,上下軌道を計算する.

  2. トレンドの方向を判断する. 上線上の価格は看板で,下線下の価格は下落である.

  3. 取引シグナルを生成する。看時,価格が下線を突破すると買取シグナルを生成する;看時,価格が上線を突破すると売り出せシグナルを生成する。

  4. CryptoBottomの統合. 補助指標CryptoBottomが信号を発したときに購入する機会を増やす.

  5. ポジション開設ルール 〇 ユーザーは,多頭取引のみまたは空頭取引のみを選択できます. 〇 選択しない場合は全仓取引です.

  6. ノロ波帯の描画. 波帯の描画を表示または隠すことができます.

優位分析

  1. 流行の方向を判断するのに有効なノロ波帯です.

  2. 波帯突破と結合して信号を生成し,偽突破を回避する.

  3. CryptoBottomは購入信号の質を向上させました.

  4. オーダーメイドで多めにやるとか空っぽにやるとか

  5. パラメータは,異なる周期に対応して調整できます.

リスク分析

  1. パラメータを正しく設定しない場合,波帯判断が失効する可能性があります.

  2. 突破信号が遅れている.

  3. CryptoBottomは完全には信頼できない.

  4. 余分な仕事や余分な仕事で 機会を逃してしまうかもしれません

  • リスク1は,パラメータ最適化によって最適な設定を見つけることができる.

  • リスク2は,他の指標と組み合わせて確認できます.

  • リスク3はCryptoBottomの効果を検証する.

  • リスク4は,多額や空白の利益の評価を要する.

最適化の方向

  1. ノロ波帯に異なるパラメータの影響をテストする.

  2. ノロ波帯の代替として,他の突破指標を試してみてください.

  3. 損失を抑える戦略の評価

  4. テストは多すぎたり空っぽだけだったりします.

  5. CryptoBottomのパラメータを最適化する

要約する

この戦略は,Noro波帯によってトレンドの方向を判断し,突破シグナルと組み合わせて取引の機会を生成する.CryptoBottomは,購入効果を高める.パラメータ最適化とストップ・ロスは,この戦略をさらに完善することができる.

ストラテジーソースコード
/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.2", shorttitle = "NoroBands str 1.2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Use Color or bar")
usecb = input(true, "Use CryptoBottom")
needbb = input(true, defval = false, title = "Show Bands")
needbg = input(true, defval = false, title = "Show Background")
src = close

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
lencb = abs(close - mac)
sma = sma(lencb, 100)
max = max(open, close)
min = min(open, close)
//dn = close > open and len > sma * 3 and max > max[1] and fastrsi > 90 ? 1 : 0

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) ? 1 : 0 
up2 = close < open and lencb > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //CryptoBottom

longCondition = up == 1 or (up2 == 1 and usecb == true)
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)