
この戦略は,ブリン帯,RSI指数,および200期移動平均を用いてトレンドの方向を総合的に識別し,トレンドの方向が適当であるときに,ブリン帯の上下軌道近くで反転取引を行い,利益を得る.
まず,200期移動平均線を使用して,概ねトレンドの方向を判断し,価格が上昇すると多頭トレンドと定義され,価格が低下すると空頭トレンドと定義されます. 次に,多頭トレンドのとき,RSIが oversold と Bollinger Bands の下位に近づくと,買入操作を実行します. 空頭トレンドのとき,RSIが bought と Bollinger Bands の上位に近づくと,売出操作を実行します. 最後に,ATR指数を使用して,ストップロスを設定し,ストップロスの2倍の利潤を目標にします.
この戦略の最大の利点は,複数の指標を組み合わせてトレンドの方向と取引のタイミングを判断することにある.第一に,200日移動平均は,大きなトレンドの方向を効果的に判断する.第二に,ブリン帯は,価格が反転する可能性のある地域を示すことができる.最後に,RSI指標は,価格が反転する可能性のあるタイミングを示す.複数の指標の使用は,単一の指標判断の誤りのリスクを回避する.
この戦略の主なリスクは,大傾向判断誤りと反転信号の誤出である.大傾向判断誤りであれば,継続的な損失を引き起こす可能性が高い.反転信号の誤出である場合,止損が引き起こされる確率は比較的大きい.さらに,反転htrading自体は高いリスクを持ち,慎重に操作する必要がある.
上記のリスクを回避するために,移動平均のパラメータを適切に調整するか,または判断の正確性を高めるために確認するために他の指標を追加することを推奨する.また,停止損失の幅を適切に緩和して,停止損失を過度に容易に誘発することを避けるように推奨する.
この戦略の最適化余地は大きく,以下のいくつかの方面から始めることができる:第一に,移動平均のパラメータを調整し,大トレンドの判断の正確性を最適化する.第二に,ブリン帯のパラメータを調整するか,カルマン通路を追加して,価格逆転区域の判断の効果を高める.第三に,MACDなどの他の指標を逆転確認のために追加し,誤った信号を減らす.第四に,実際のストップダメージが誘発される確率を減らすために,ストップダメージ比率の設定を最適化する.
この戦略は,ブリン帯,RSI指標と移動平均を総合的に使ってトレンドと取引のタイミングを判断し,優れた効果を達成した.しかし,安定した収益性を高めるためにパラメータ設定とリスク管理をさらに最適化する必要がある.全体的に,この戦略の考え方は明確で,実行しやすいであり,さらなる研究と適用に値する.
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Gab EMA + rsi + bb", overlay=true)
// Custom RSI
RSIlength = input(3, minval=1 , title="lookback length of RSI")
RSIOverBought = input(70, title="RSI OB")
RSIOverSold = input(30, title="RSI OS")
RSIprice = close
vrsi = rsi(RSIprice, RSIlength)
//Bollinger Bands
BBlength = input(20, minval=1,title="Bollinger Period Length")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Bands Standard Deviation")
BBbasis = sma(close, BBlength)
BBdev = BBmult * stdev(close, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
//EMA
emaLength=input(200)
//Set TP and SL values
sl_short = high + (syminfo.mintick * 5 * 10)
tp_short = low - (syminfo.mintick * 10 * 10)
sl_long = low - (syminfo.mintick * 5 * 10)
tp_long = high + (syminfo.mintick * 10 * 10)
//Strategy Entry and Exit
strategy.entry("sell", strategy.short, when = low < ema(low, emaLength) and vrsi < RSIOverSold and low < BBlower and barstate.isconfirmed)
strategy.exit("closeshort", from_entry="sell", limit=tp_short, stop=sl_short, when=strategy.position_size != 0)
strategy.entry("buy", strategy.long, when = high > ema(high, emaLength) and vrsi > RSIOverBought and high > BBupper and barstate.isconfirmed)
strategy.exit("closelong", from_entry="buy", limit=tp_long, stop=sl_long, when=strategy.position_size != 0)