ボリンガー・フィボナッチ・グリッド・トラッキング・トレンド戦略

作者: リン・ハーンチャオチャン, 日付: 2023-12-13 17:12:38
タグ:

img

概要

この戦略は,ATRとフィボナッチリトレースメントをベースとした価格チャネルをグリッドとして描くボリンジャーバンド指標を使用します. 全体のトレンド方向を決定するためにダブルEMAラインと組み合わせ,トレンド追跡仲介を達成するためにトレンド方向のボリンジャー価格帯で選択的にストップロスのグリッドを設定します.

戦略原則

  1. 価格波帯を構成するために ATRと4フィボナッチリトレースメントラインから構築されたボリンジャー帯の中間線と上下のレールを使用します.

  2. 急速EMA線と遅いSMA線は,全体的なトレンド方向を決定するために二重移動平均を形成する. 遅い線を突破する高速線は牛市場であり,その逆は熊市場である.

  3. オス市場では,ボリンガーバンドの下部レールの近くで価格を選んで,チャネルの下部を突破してロングポジションを開く.熊市場では,ショートだけを選んで,ボリンガーバンド上部レールの近くで価格を選んで,チャネル上部を突破してショートポジションを開く.

  4. ストップ・ロスの条件を設定する:大きな逆転バーが表示されたときに,現在の方向位置を終了する.

利点分析

  1. メガレベルのトレンドを決定するために,二重移動平均を使用し,反トレンド取引を避ける.

  2. ボリンジャー ATR チャネルグリッドは,ポジションを成功裏に開設する確率を増やすために複数の開設価格を設定します.

  3. フィボナッチ回転波帯は 価格変動を設定し 異なるバンドで異なる数のポジションで 資本分散を達成します

  4. リアルタイムのストップ損失条件は,迅速なストップ損失を容易にし,利益のリトレースを軽減します.

リスク分析

  1. メガレベルトレンドを判断する際に誤りがある場合,逆の損失を引き起こす可能性があります.移動平均のパラメータを適切に調整するか,補助判断のための他の指標を追加してください.

  2. 波動性が大きすぎる場合,価格はグリッドエリアを直接突破し,ポジションを開くことができません. 波帯パラメータを調整して取引機会を増やす.

  3. ストップロスの条件は主観的で,認識基準はトレーダーによって異なる場合があります.ストップロスの条件をテストし最適化することが推奨されます.

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

  1. 動向平均の二重傾向判断の補助分析のためのAPO指標を追加する.

  2. 市場変動指標を使用して,ボリンガー波帯パラメータを最適化し,動的市場の変化により良く適応します.

  3. ストップ損失幅を小さくし,エラーを減らすためにストップ損失条件を設定する別の方法を追加します.

概要

この戦略の概要は明確で,ボリンジャーATRチャネルとダブル移動平均を組み合わせて戦略取引信号の包括的な判断を達成し,誤判のリスクを最大限に削減する.この戦略の利点は明白で,実際の取引に適用することができます.しかし,パラメータ設定やストップ損失条件などの詳細で最適化する余地があります.継続的な最適化により,この戦略の収益性と安定性が増加し続けると考えられています.


/*backtest
start: 2023-11-12 00:00:00
end: 2023-12-12 00:00:00
period: 1h
basePeriod: 15m
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/
// © Aayonga

//@version=5
strategy("fib trend grid@Aa", overlay=true,initial_capital=2000, default_qty_type=strategy.fixed, default_qty_value=1)

//回测时间
useDateFilter=input.bool(true,title = "启用回测时间范围限定(backtest)", group = "回测范围(backtest)")
backtesStarDate=input(timestamp("1 Jan 2015"),title = "开始时间(Start)", group = "回测范围(backtest)")
backtestEndDate=input(timestamp("1 Jan 2040"),title = "结束时间(finish)",group = "回测范围(backtest)")
inTradeWindow=true


//入场位 entry
bolllen=input.int(defval=20,minval=1,title="布林长度,(boll length)",group = "入场位(entry)")
sma=ta.sma(close,bolllen)
avg=ta.atr(bolllen)
fib1=input(defval=1.236,title="Fib 1",group = "入场位(entry)")
fib2=input(defval=2.382,title="Fib 2",group = "入场位(entry)")
fib3=input(defval=3.618,title="fib 3",group = "入场位(entry)")
fib4=input(defval=4.236,title="Fib 4",group = "入场位(entry)")
r1=avg*fib1
r2=avg*fib2
r3=avg*fib3
r4=avg*fib4
top4=sma+r4
top3=sma+r3
top2=sma+r2
top1=sma+r1
bott1=sma-r1
bott2=sma-r2
bott3=sma-r3
bott4=sma-r4



//趋势 trend

t4=plot(top4,title="卖 (sell)4",color=color.rgb(244, 9, 9))
t3=plot(top3,title = "卖(sell) 3",color=color.rgb(211, 8, 8))
t2=plot(top2,title="卖 (sell)2",color=color.rgb(146, 13, 13))
t1=plot(top1,title="卖(sell) 1",color=color.rgb(100, 3, 3))

b1=plot(bott1,title="买(buy)1",color=color.rgb(4, 81, 40))
b2=plot(bott2,title="买(buy)2",color=color.rgb(15, 117, 46))
b3=plot(bott3,title = "买(buy)3",color =color.rgb(8, 176, 42) )
b4=plot(bott4,title="买(buy)4",color=color.rgb(15, 226, 103))
plot(sma,style=plot.style_cross,title="SMA",color=color.rgb(47, 16, 225))

//趋势
LengthF=input(defval = 25,title = "快线长度(fastlength)")
LengthS=input(defval=200,title = "慢线长度(slowlength)")
emaF=ta.ema(close,LengthF)
smaS=ta.sma(close,LengthS)
longTrend=emaF>smaS
longb=ta.crossover(emaF,smaS)
bgcolor(longb ? color.new(color.green,40):na,title = "多头强势(bull trend)")
shortTrend=smaS>emaF
shortb=ta.crossunder(emaF,smaS)
bgcolor(shortb ? color.new(#951313, 40):na,title = "空头强势(bear trend)")

//pinbar
bullPinBar = ((close > open) and ((open - low) > 0.6* (high - low))) or ((close < open) and ((close - low) > 0.9 * (high - low)))
//plotshape(bullPinBar  , text ="pinbar", textcolor=color.rgb(9, 168, 144),location=location.belowbar, color=color.rgb(29, 103, 67), size=size.tiny)
bearPinBar = ((close > open) and ((high - close) > 0.7 * (high - low))) or ((close < open) and ((high - open) > 0.7 * (high - low)))
//plotshape(bearPinBar  , text ="pinbar", textcolor=color.rgb(219, 12, 12),location=location.abovebar, color=color.rgb(146, 7, 7), size=size.tiny)

buy1=ta.crossunder(close,bott1) and longTrend and close>ta.ema(close,100)
buy2=ta.crossunder(close,bott2) and longTrend and close>ta.ema(close,80)
buy3=ta.crossunder(close,bott3) and longTrend and close>ta.ema(close,80)
buy4=ta.crossunder(close,bott4) and longTrend and close>ta.ema(close,80)
buyclose=bearPinBar or ta.crossunder(close,smaS)




if buy2 or buy3 or buy4 or buy1 and inTradeWindow
    strategy.order("多(buy)",strategy.long)

if buyclose  and inTradeWindow
    strategy.close("多(buy)")

sell1=ta.crossover(close,top1) and shortTrend and close<ta.ema(close,200)
sell2=ta.crossover(close,top2) and shortTrend and close<ta.ema(close,200)
sell3=ta.crossover(close,top3) and shortTrend and close<ta.ema(close,200)
sell4=ta.crossover(close,top4) and shortTrend and close<ta.ema(close,200)
sellclose=bullPinBar or ta.crossover(close,ta.sma(close,220))

if  sell1 or sell2 or sell3 or sell4 and inTradeWindow
    strategy.order("空(sell)",strategy.short)

if sellclose  and inTradeWindow
    strategy.close("空(sell)")
     

もっと