//@版本=5
策略("SPY 200SMA +4% 進入-3% 退出策略",
覆蓋=真,
default_qty_type=strategy.percent_of_equity,
預設數量值=100)
// === 輸入 ===
smaLength = input.int(200, title="SMA 週期", minval=1)
EntryThreshold = input.float(0.04, title="進入閾值 (%)", step=0.01)
exitThreshold = input.float(0.03, title="退出閾值 (%)", step=0.01)
startYear = input.int(1995, "開始年份")
startMonth = input.int(1, "開始月份")
startDay = input.int(1, "開始日")
// === 時間過濾器 ===
開始時間 = 時間戳(開始年份, 開始月份, 開始日期, 0, 0)
isAfterStart = 時間 >= 開始時間
// === 計算 ===
sma200 = ta.sma(關閉, smaLength)
上限閾值 = sma200 * (1 + 條目閾值)
下閾值 = sma200 * (1 - 退出閾值)
// === 策略邏輯 ===
EnterLong = 關閉 > upperThreshold
exitLong = 關閉 < lowerThreshold
如果是在開始之後
如果 EnterLong 且strategy.position_size == 0
strategy.entry("買入",strategy.long)
如果 exitLong 且 Strategy.position_size > 0
策略.close("買入")
// === 繪圖 ===
p_sma = 圖(sma200, title="200 SMA", color=color.rgb(255, 0, 242))
p_upper = 圖(upperThreshold, title="進入閾值 (+4%)", color=color.rgb(0, 200, 0))
p_lower = 圖(lowerThreshold, title="退出閾值 (-3%)", color=color.rgb(255, 0, 0))
fill(p_sma, p_upper, color=color.new(color.green, 80), title="入口區")
// === 進入/退出標籤 ===
prevOpentrades = nz(strategy.opentrades[1], 0)
newOpen = Strategy.opentrades > prevOpentrades
newClose = Strategy.opentrades < prevOpentrades
// 標籤的偏移量
買Y = 最低價 * 0.97
賣出Y = 最高價 * 1.03
如果新開
label.new(x=bar_index, y=buyY, text="BUY", xloc=xloc.bar_index, yloc=yloc.price, color=color.lime, style=label.style_label_up, textcolor=color.black, size=size.large)
如果是新的關閉
label.new(x=bar_index, y=sellY, text="SELL", xloc=xloc.bar_index, yloc=yloc.price, color=color.red, style=label.style_label_down, textcolor=color.white, size=size.large)
策略("SPY 200SMA +4% 進入-3% 退出策略",
覆蓋=真,
default_qty_type=strategy.percent_of_equity,
預設數量值=100)
// === 輸入 ===
smaLength = input.int(200, title="SMA 週期", minval=1)
EntryThreshold = input.float(0.04, title="進入閾值 (%)", step=0.01)
exitThreshold = input.float(0.03, title="退出閾值 (%)", step=0.01)
startYear = input.int(1995, "開始年份")
startMonth = input.int(1, "開始月份")
startDay = input.int(1, "開始日")
// === 時間過濾器 ===
開始時間 = 時間戳(開始年份, 開始月份, 開始日期, 0, 0)
isAfterStart = 時間 >= 開始時間
// === 計算 ===
sma200 = ta.sma(關閉, smaLength)
上限閾值 = sma200 * (1 + 條目閾值)
下閾值 = sma200 * (1 - 退出閾值)
// === 策略邏輯 ===
EnterLong = 關閉 > upperThreshold
exitLong = 關閉 < lowerThreshold
如果是在開始之後
如果 EnterLong 且strategy.position_size == 0
strategy.entry("買入",strategy.long)
如果 exitLong 且 Strategy.position_size > 0
策略.close("買入")
// === 繪圖 ===
p_sma = 圖(sma200, title="200 SMA", color=color.rgb(255, 0, 242))
p_upper = 圖(upperThreshold, title="進入閾值 (+4%)", color=color.rgb(0, 200, 0))
p_lower = 圖(lowerThreshold, title="退出閾值 (-3%)", color=color.rgb(255, 0, 0))
fill(p_sma, p_upper, color=color.new(color.green, 80), title="入口區")
// === 進入/退出標籤 ===
prevOpentrades = nz(strategy.opentrades[1], 0)
newOpen = Strategy.opentrades > prevOpentrades
newClose = Strategy.opentrades < prevOpentrades
// 標籤的偏移量
買Y = 最低價 * 0.97
賣出Y = 最高價 * 1.03
如果新開
label.new(x=bar_index, y=buyY, text="BUY", xloc=xloc.bar_index, yloc=yloc.price, color=color.lime, style=label.style_label_up, textcolor=color.black, size=size.large)
如果是新的關閉
label.new(x=bar_index, y=sellY, text="SELL", xloc=xloc.bar_index, yloc=yloc.price, color=color.red, style=label.style_label_down, textcolor=color.white, size=size.large)
Pernyataan Penyangkalan
Informasi dan publikasi ini tidak dimaksudkan, dan bukan merupakan, saran atau rekomendasi keuangan, investasi, trading, atau jenis lainnya yang diberikan atau didukung oleh TradingView. Baca selengkapnya di Ketentuan Penggunaan.
Pernyataan Penyangkalan
Informasi dan publikasi ini tidak dimaksudkan, dan bukan merupakan, saran atau rekomendasi keuangan, investasi, trading, atau jenis lainnya yang diberikan atau didukung oleh TradingView. Baca selengkapnya di Ketentuan Penggunaan.
