二重移動平均振動ブレイクスルー戦略


作成日: 2024-01-08 14:43:48 最終変更日: 2024-01-08 15:51:13
コピー: 0 クリック数: 570
1
フォロー
1617
フォロワー

二重移動平均振動ブレイクスルー戦略

概要

双均線振動突破戦略は,双均線システムを用いた短線取引戦略である.この戦略は,価格チャネルと二重ブリン帯に基づいて取引シグナルを構築し,急速なRSI指標によって超買い超売りを判断して,入場と出場シグナルを生成する.この戦略は,中短線価格トレンドの突破を捕捉し,利益を上げる目的である.

戦略原則

双均線振動突破策は,20周期の長さの価格チャネルとブリン帯を主要取引指標として使用する.価格チャネルは,最高価格と最低価格の均線で構成され,現在の価格の振動区間を表す.ブリン帯は,価格チャネルの中軸と標準差で構成され,帯状領域は,価格の波動範囲をより直観的に描写する.価格がチャネル上下軌道に近づくと,価格が振動区間を突破して新しいトレンドを形成する可能性を示します.

具体的には,急速RSIが5を下回ると超売り区とみなされ,急速RSIが99を超えると超買い区とみなされる. さらに,K線実体方向,価格革新高 (新低) などの要因を組み合わせて判断し,頭部偽突破の発生を避ける.上記の条件が満たされたときに買入と売却のシグナルが生じる.

戦略的優位性

双均線振動突破策の最大の利点は,中短線価格トレンドの転換点を捕捉して収益を上げることです.単一均線とチャネルと比較して,双重ブリン帯は価格の変動と容量をより直感的に反映します.20日,60日平均線などのより長い周期指標と比較して,価格の変化により迅速に反応し,転換を捕捉する成功率が高くなります.さらに,高速RSI指標と組み合わせることで,偽の突破を効果的にフィルターできます.したがって,この戦略は,利益の確率を最大限に高めることができます.

戦略リスク

二重均線振動突破策には一定のリスクがある.第一に,中短線取引は,それ自体により高い止損リスクを有する.第二に,急速なRSI指標が,超買い超売り判断の効果に,市場情緒の影響を受ける.市場構造的変化が起きたとき,このような補助指標の有効性は低下する.最後に,収盘価格,量,交付量などの他の要因と組み合わせて,意思決定の正確性を向上させることができる.

対策は,適切な停止幅を調整し,上行情で停止損失点を緩和し,下行情で緊縮する.さらに,より多くの補助指標を充分に考慮し,特定の指標または指標に単独依存することを避ける.判断効果が低下したときに,適切なポジション回避リスクを減らす.

戦略最適化の方向性

双均線振動突破策にはさらに最適化できる余地がある。第一,パラメータ最適化。より多くの周期パラメータをテストして,最適なパラメータの組み合わせを見つけることができる。第二,モデル最適化。機械学習モデルの訓練を導入して,超買超売区間をより正確に判断できる。第三,タイムフレーム最適化。日線,60分など,異なるタイムフレームでテストし,最適な適用シナリオを決定する。第四,条件最適化。フィルター信号を判断するより多くの量指標,例えば成交量増幅,トレンド指数DMIなどを追加する。

要約する

双均線振動突破策は,双ブリンベルトシステムを構築して価格の中での短線突破を捕捉する戦略であり,効果的なトレンド追跡策である.この戦略は,成功率が高い,迅速な反応があり,効率的な収益を上げることができる.パラメータ最適化,モデル最適化,時間枠選択などの手段によって,戦略のパフォーマンスをさらに向上させることができる.この戦略は,経験豊富な量化トレーダーによる量化改善および適用に適しています.

ストラテジーソースコード
/*backtest
start: 2023-01-07 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.4", shorttitle = "NoroBands str 1.4", 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 ColorBar")
usecb = input(true, "Use CryptoBottom")
usersi = input(true, "Use RSI")
usemm = input(true, "Use min/max")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
needlo = input(false, defval = false, title = "Show Locomotive")
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)

//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
hd2 = center + distsma * 2
ld2 = center - distsma * 2

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

//Lines
colo = needbb == false ? na : black
plot(hd2, color = colo, linewidth = 1, transp = 0, title = "High band 2")
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")
plot(ld2, color = colo, linewidth = 1, transp = 0, title = "Low band 2")

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

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) and (min < min[1] or usemm == false) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) and (max > max[1] or usemm == false) ? 1 : 0 
up2 = close < open and lencb > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //CryptoBottom
//dn2 = close > open and len > sma * 3 and max > max[1] and fastrsi > 90 ? 1 : 0 //CryptoBottom
up3 = fastrsi < 5 ? 1 : 0
//dn3 = fastrsi > 99 ? 1 : 0

//Locomotive
uploco = trend == 1 and close < open and min < min[1] and close < center ? 1 : 0
plotarrow(needlo == true and uploco == 1 ? 1 : 0, colorup = black, colordown = black, transp = 0)

longCondition = up == 1 or (up2 == 1 and usecb == true) or (up3 == 1 and usersi == 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)