
この戦略は,フィボナッチ逆転レベルに基づくトレンド追跡戦略である.この戦略は,主に,前日取引の最高価格と最低価格を計算する重要なフィボナッチ逆転レベルを利用し,開場価格の位置と時間ウィンドウを組み合わせて,複数の入場条件を設定し,異なる条件に合わせて,相応のストップ・ロスの位置を設定し,その結果,トレンドの把握とリスクの制御を実現する.
戦略は,まず6つの重要なフィボナッチ・リトレイレベルを計算します: 0.23.6%,38.2%,50%,61.8%,および100%. オープニング価格がこれらのレベルに対する位置に応じて,入場条件を3つの状況に分けます: 1) オープニング価格が23.6%-50%の間; 2) オープニング価格が61.8%で,指定された時間ウィンドウで; 3) オープニング価格が23.6%以下で,前日の低点より低い.
この戦略は,フィボナッチの逆転レベル,時間ウィンドウ,複数の条件判断を組み合わせて,より完全な取引システムを構築している.戦略の優点は,論理的明瞭性,リスクの制御であるが,依然として市場の状況に応じて最適化および改善が必要である.トレンド判断,ダイナミックなストップ・ロス,取引量分析などの側面の最適化を追加することにより,戦略の安定性と収益性をさらに向上させることができる.
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Fibonacci Retracement Strategy", overlay=true)
// Get the high and low of the previous day
previousHigh = request.security(syminfo.tickerid, "D", high[1])
previousLow = request.security(syminfo.tickerid, "D", low[1])
// Fibonacci levels for the previous day (from high to low)
fib0 = previousHigh
fib236 = previousHigh - (previousHigh - previousLow) * 0.236
fib382 = previousHigh - (previousHigh - previousLow) * 0.382
fib50 = previousHigh - (previousHigh - previousLow) * 0.5
fib618 = previousHigh - (previousHigh - previousLow) * 0.618
fib1 = previousHigh - (previousHigh - previousLow) * 1
// Current open price (for the current day)
openPrice = open
// Time for 9:15 AM check
timeStart = timestamp(year, month, dayofmonth, 9, 15)
timeClose = timestamp(year, month, dayofmonth, 9, 30) // Time window to allow for opening range
// Entry Conditions
buyCondition1 = openPrice >= fib236 and openPrice <= fib50
buyCondition2 = openPrice == fib618 and time >= timeStart and time <= timeClose
buyCondition3 = openPrice < fib236 and openPrice < previousLow
// Stop Loss based on conditions
stopLoss1 = fib618
stopLoss2 = fib618 - (fib618 - fib1) / 2
stopLoss3 = fib382
// Plot Fibonacci levels with calculated values
plot(fib0, color=color.green, linewidth=1, title="Fib 0")
plot(fib236, color=color.red, linewidth=1, title="Fib 0.236")
plot(fib382, color=color.blue, linewidth=1, title="Fib 0.382")
plot(fib50, color=color.yellow, linewidth=1, title="Fib 0.5")
plot(fib618, color=color.purple, linewidth=1, title="Fib 0.618")
plot(fib1, color=color.orange, linewidth=1, title="Fib 1")
// Plot labels for Fibonacci levels with actual values
label.new(x=bar_index, y=fib0, text="Fib 0: " + str.tostring(fib0), style=label.style_label_right, color=color.green, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib236, text="Fib 0.236: " + str.tostring(fib236), style=label.style_label_right, color=color.red, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib382, text="Fib 0.382: " + str.tostring(fib382), style=label.style_label_right, color=color.blue, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib50, text="Fib 0.5: " + str.tostring(fib50), style=label.style_label_right, color=color.yellow, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib618, text="Fib 0.618: " + str.tostring(fib618), style=label.style_label_right, color=color.purple, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
label.new(x=bar_index, y=fib1, text="Fib 1: " + str.tostring(fib1), style=label.style_label_right, color=color.orange, textcolor=color.white, size=size.small, yloc=yloc.abovebar)
// Entry conditions and strategy execution
if (buyCondition1)
strategy.entry("Buy", strategy.long, stop=stopLoss1)
label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)
if (buyCondition2)
strategy.entry("Buy", strategy.long, stop=stopLoss2)
label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)
if (buyCondition3)
strategy.entry("Buy", strategy.long, stop=stopLoss3)
label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small)
// Show exit signals and labels
if (buyCondition1)
strategy.exit("Exit", from_entry="Buy", stop=stopLoss1)
label.new(bar_index, high, "EXIT", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)
if (buyCondition2)
strategy.exit("Exit", from_entry="Buy", stop=stopLoss2)
label.new(bar_index, high, "EXIT", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)
if (buyCondition3)
strategy.exit("Exit", from_entry="Buy", stop=stopLoss3)
label.new(bar_index, high, "EXIT", color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small)