
この戦略は,ブリン帯量化取引戦略である.ブリン帯通路の改善に基づく指数と株式取引戦略である.この戦略は,ブリン帯パラメータを調整して,長ポジションと短いポジションの同時最適化を可能にし,その結果,下落市場の両方で利益を得ることができる.
この戦略の核心論理はブリン帯通路に基づいている.ブリン帯は中軌道,上軌道,下軌道で構成され,中軌はn日の閉盘価格の移動平均であり,上下軌道は中軌道上下偏差である.価格が上軌道に近づくと,市場が過熱し,空頭チャンスが形成される可能性があることを代表する.価格が下軌道に近づくと,市場が過小評価され,多頭チャンスが形成される可能性があることを代表する.
この策略は,2つのブリン帯を使用し,ブリン帯1は多行に,ブリン帯2は空行に適用されます.ブリン帯1のパラメータは長さ25で,偏差は2.9倍,ブリン帯2のパラメータも長さ36で,偏差は3.2倍に最適化されています. 閉盘価格の上部でブリン帯1を下回転したとき,多行シグナルが生成されます. 閉盘価格下部でブリン帯2を下回転したとき,空行シグナルが生成されます.
この戦略は,従来型のブリンベルト戦略と比べると,以下の利点があります.
多空間の双方向取引が実現.双方向のシナリオにも適用され,市場の異なる段階の取引機会を捉えることができる.
パラメータは最適化されている. 2組のブリン帯のパラメータは細かくテストされ,取引信号を効果的に発信することができる.
リスクはコントロールできる.移動式ストップ方式を採用し,一方的なリスクを効果的にコントロールできる.
この戦略にはいくつかの潜在的なリスクがあります.
ブリン・ベルト・チャネルは,市場が急激に波動すると,機能しなくなる可能性があります.
ストップ・損失は被套リスクである.移動ストップは被套され,損失を拡大する可能性がある.適切な緩解または早期のストップ・損失を回避することができる.
取引頻度が高いリスク.パラメータ設定が過度に敏感で,取引頻度が高まり取引コストが増加する可能性があります.
この戦略をさらに改善する余地があります.
他の指標のフィルタリング信号と組み合わせて,ブリン带の失効時に誤取引を避ける.例えば,K線形状,取引量など.
動的にパラメータを調整して,ブリン帯を異なる周期の市場特性に適したものにする.例えば,自適応ブリン帯を採用する.
ストップを最適化し,トラッキングストップまたは指数移動ストップなどを採用し,リスクを効果的に制御する.
機械学習アルゴリズムと組み合わせたパラメータの自動最適化.
この戦略 overallは,二重ブリン帯通路に基づいて,パラメータ最適化により,長短二国間取引の最適化を実現している.従来のブリン帯戦略に比べて,多重空調,リスク管理の優位性があり,市場の異なる段階の機会を捕捉するのに適用され,一定の実用的な価値がある.しかし,ブリン帯の効果が低下し,損失を止めてしまうなども存在している.関連製品化に先立つには,さらなる最適化と検証が必要である.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © exlux99
//@version=4
strategy("BB NDX strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick = true, commission_type = strategy.commission.percent, commission_value = 0.01)
source = close
length = input(25, minval=1, title="Length BB long")
mult = input(2.9, minval=0.001, maxval=50, step=0.1, title="MULT BB long")
length2 = input(36, minval=1, title="Length BB short")
mult2 = input(3.2, minval=0.001, maxval=50, step=0.1, title="MULT BB short")
basis = sma(source, length)
dev = mult * stdev(source, length)
dev2 = mult2 * stdev(source, length2)
upper = basis + dev2
lower = basis - dev
buyEntry = crossover(source, lower)
sellEntry = crossunder(source, upper)
longEntry=input(true)
shortEntry=input(true)
g(v, p) => round(v * (pow(10, p))) / pow(10, p)
risk = input(100)
leverage = input(1.0, step = 0.5)
c = g((strategy.equity * leverage / open) * (risk / 100), 4)
tplong=input(0.065, step=0.005, title="Take profit % for long")
sllong=input(0.04, step=0.005, title="Stop loss % for long")
tpshort=input(0.025, step=0.005, title="Take profit % for short")
slshort=input(0.04, step=0.005, title="Stop loss % for short")
if(longEntry)
strategy.entry("long",1,c,when=buyEntry)
strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT', alert_message = 'closeshort')
strategy.close("long",when=sellEntry)
if(shortEntry)
strategy.entry("short",0,c,when=sellEntry)
strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT', alert_message = 'closeshort')
strategy.close("short",when=buyEntry)