//@版本=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)
คำจำกัดสิทธิ์ความรับผิดชอบ
ข้อมูลและบทความไม่ได้มีวัตถุประสงค์เพื่อก่อให้เกิดกิจกรรมทางการเงิน, การลงทุน, การซื้อขาย, ข้อเสนอแนะ หรือคำแนะนำประเภทอื่น ๆ ที่ให้หรือรับรองโดย TradingView อ่านเพิ่มเติมใน ข้อกำหนดการใช้งาน
คำจำกัดสิทธิ์ความรับผิดชอบ
ข้อมูลและบทความไม่ได้มีวัตถุประสงค์เพื่อก่อให้เกิดกิจกรรมทางการเงิน, การลงทุน, การซื้อขาย, ข้อเสนอแนะ หรือคำแนะนำประเภทอื่น ๆ ที่ให้หรือรับรองโดย TradingView อ่านเพิ่มเติมใน ข้อกำหนดการใช้งาน
