フィボナッチリトレースメント逆転戦略

作者: リン・ハーンチャオチャン, 日時: 2023-12-07 15:15:26
タグ:

img

概要

フィボナッチリトレースメントリバースメント戦略は,フィボナッチリトレースメントレベルと相対強度指数 (RSI) 指標に基づいた定量的な取引戦略である.この戦略は,フィボナッチチャネル理論と過剰購入/過剰販売指標を組み合わせて,短期サイクルで利益を得るために主要なトレンドに対してリバーストレードを行う.

戦略の論理

戦略はまず0.618 フィボナッチレベルをベースに 2つの重要な価格ゾーンを計算します. 0.618倍高点と 0.618倍低点です.価格がこれらのエリアに近づくと,逆転が起こる可能性があります.

さらに,この戦略は,過剰購入/過剰販売条件を決定するためにRSI指標も使用する.RSIが30以下では過剰販売状態を示し,RSIが70以上では過剰購入状態を示唆する.これらは潜在的な価格逆転も意味する.

この2つの条件を組み合わせると,購入信号は,0.618倍低点以下で,RSIが30以下になると,購入信号は,0.618倍高点以下で,RSIが70を超えると,販売信号が起動します.

購入信号で戦略は市場価格でロングになります.販売信号で市場価格でショートになります.また,価格が一定の割合で有利に動くと (利益を取ること) または一定の割合で不利に動くと (ストップ損失) ポジションが閉鎖されるように,利益とストップ損失レベルが設定されています.

利点

この戦略は,トレンドと逆転のシナリオを組み合わせ,主要なトレンドを考慮し,短期的なリターセーションから利益を得ています.主な利点は次のとおりです.

  1. フィボナッチレベルには固有のサポート/レジスタンス属性があり,効果的な価格ゾーン指標として機能します.
  2. RSIの買い過ぎ/売り過ぎ状態は 転換点の可能性を示唆しています
  3. 長い/短い信号がはっきりして 逆転の可能性を捉えています
  4. 利益/ストップ損失をコントロールするリスク

リスク

認識すべきいくつかのリスクがあります.

  1. 短期的な反転にもかかわらず,大きなトレンド逆転が起こらない場合,損失が発生することがあります.より大きなタイムフレーム分析は,これを避けるのに役立ちます.
  2. 逆転が起こる前にストップ・ロスは起動する.より広いストップ・ロスは役立つかもしれない.
  3. 逆転は長期にわたって続く可能性があり,十分な資本支援が必要である.

最適化

戦略は以下によってさらに最適化できます.

  1. フィボナッチゾーンの範囲やRSIの過剰購入/過剰販売線などのキーパラメータをテストし調整するために,より多くの歴史的なデータを収集します.

  2. より強い信号を生成するためにより多くの指標を組み込む ろうそくのパターン,ボリュームの変化など

  3. 異なる取引手段の特徴に応じてパラメータや規則を調整する.

  4. リアルタイムで価格を追跡する ダイナミックストップロスのメカニズムを追加します

結論

フィボナッチリトレースメントリバースメント戦略は,リスクをコントロールしながら短期的に利益を得るためにトレンドとリバースメントシナリオをバランスします.さらなる最適化はより大きな収益につながる可能性があります.


/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("FBS Trade", overlay=true)

// Fibonacci seviyeleri
fibonacciLevels = input(0.618, title="Fibonacci Düzeltme Seviyesi")

// RSI ayarları
rsiLength = input(14, title="RSI Periyodu")
overboughtLevel = input(70, title="RSI Satış Sinyali Seviyesi")
oversoldLevel = input(30, title="RSI Alış Sinyali Seviyesi")

// Take Profit ve Stop Loss yüzdesi
takeProfitPercent = input(1, title="Take Profit Yüzdesi") / 100
stopLossPercent = input(1, title="Stop Loss Yüzdesi") / 100

// Fibonacci seviyelerini hesapla
highFibo = high * (1 + fibonacciLevels)
lowFibo = low * (1 - fibonacciLevels)

// RSI hesaplama
rsiValue = ta.rsi(close, rsiLength)

// Alış ve satış koşulları
buyCondition = close > lowFibo and rsiValue < 30
sellCondition = close < highFibo and rsiValue > overboughtLevel

// Take Profit ve Stop Loss seviyeleri
takeProfitLong = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLong = strategy.position_avg_price * (1 - stopLossPercent)

takeProfitShort = strategy.position_avg_price * (1 - takeProfitPercent)
stopLossShort = strategy.position_avg_price * (1 + stopLossPercent)

// Alış ve satış işlemleri
if (buyCondition)
    strategy.entry("Buy", strategy.long)
if (sellCondition)
    strategy.entry("Sell", strategy.short)

// Take Profit ve Stop Loss seviyeleri
if (strategy.position_size > 0)
    strategy.exit("Take Profit/Close Buy", from_entry="Buy", limit=takeProfitLong, stop=stopLossLong)
if (strategy.position_size < 0)
    strategy.exit("Take Profit/Close Sell", from_entry="Sell", limit=takeProfitShort, stop=stopLossShort)

// Sadece mumları ve buy/sell işlemlerini göster
plot(close, color=color.black, title="Close")

// Destek ve direnç bölgeleri
supportLevel = input(27, title="Fibonacci Destek Seviyesi")
resistanceLevel = input(200, title="Direnç Seviyesi")

hline(supportLevel, "Fibonacci Destek Seviyesi", color=color.green)
hline(resistanceLevel, "Direnç Seviyesi", color=color.red)

// Trend çizgileri
var line trendLine = na
if (ta.crossover(close, highFibo))
    trendLine := line.new(bar_index[1], highFibo[1], bar_index, highFibo, color=color.green, width=2)
if (ta.crossunder(close, lowFibo))
    trendLine := line.new(bar_index[1], lowFibo[1], bar_index, lowFibo, color=color.red, width=2)

// RSI ve Fibo'yu grafiğe çizme
hline(overboughtLevel, "RSI Satış Sinyali", color=color.red, linestyle=hline.style_dashed)
hline(oversoldLevel, "RSI Alış Sinyali", color=color.green, linestyle=hline.style_dashed)
plot(rsiValue, color=color.purple, title="RSI")

// 15 dakikalıkta 3 mumda bir alarm
is15MinBar = ta.change(time('15'), 1)
if (is15MinBar % 3 == 0)
    alert("15 dakikalıkta 3 mum geçti.")


もっと