免責聲明:以下內容純屬娛樂 + 教學用途!這不是金融建議,也不是代碼(AI 或其他)建議。僅用於演示目的!
SMA 雲的提示
扮演一名資深 TradingView Pine Script v5 開發者。
創建一個名爲:的疊加指標
“技術指標編程 4.0 — SMA 雲設置”
目的
構建一個不重繪的、多時間框架指標,用於提供趨勢背景並對潛在信號進行篩選/確認。不得執行交易,也不得提供金融建議。
框架
該指標使用三個分析層:
1. 8小時結構
- 在 8 小時週期上確定更廣泛的市場結構。
- 將其歸類爲看漲、看跌或中性。
- 在一個小型儀表板中顯示當前分類。
2. 1小時 SMA 雲層
- 在1小時週期上計算一個快速和一個慢速簡單移動平均線。
- 讓兩個 SMA 長度都可配置。
- 默認值:[插入快速 SMA] 和 [插入慢速 SMA]。
- 在均線之間填充區域:
• 當快速 SMA 高於慢速 SMA 時爲綠色。
• 當快速 SMA 低於慢速 SMA 時爲紅色。
• 當關系不明確時使用中性灰色。
- 1小時雲層是主要的趨勢方向過濾器。
3. 15分鐘觸發與 IMACD 確認
- 在15分鐘週期上計算入場觸發。
- 僅在 IMACD 動量爲正時確認看漲觸發。
- 僅在 IMACD 動量爲負時確認看跌觸發。
- 使用以下 IMACD 規範:[插入準確的 IMACD 公式和設置]。
- 爲已確認的看漲觸發繪製綠色向上三角形。
- 爲已確認的看跌觸發繪製紅色向下三角形。
信號層級
看漲資格要求:
- 可接受的看漲或中性 8 小時結構。
- 看漲 1 小時 SMA 雲層。
- 看漲 15 分鐘觸發。
- 正向 IMACD 確認。
看跌資格要求是完全相反的條件。
技術要求
- 使用 request.security() 並設置 barmerge.lookahead_off。
- 僅在已確認收盤蠟燭上評估信號。
- 不要重繪歷史信號。
- 不要使用未來數據。
- 允許通過輸入更改三個時間框架和所有計算長度。
- 包含用於顯示或隱藏雲層、結構標籤、觸發標記和儀表板的開關。
- 爲已確認的看漲和看跌資格添加 alertcondition() 規則。
- 保持圖表視覺簡潔。
- 不要包含自動訂單、表現聲明、盈虧或投資建議。
- 清晰註釋代碼,並解釋每個時間框架如何貢獻結果。
在編寫代碼之前,請先識別任何缺失的計算規則或參數。不要發明專有設置。請先向我詢問缺失的值。
收到這些值後,請提供:
1. 完整的 Pine Script v5 代碼。
2. 簡潔說明邏輯。
3. 用於測試指標不重繪的檢查清單。
代碼(複製與粘貼)
//@version=6
indicator("John Wick v 4.0", overlay=true)
//==================================================
// MACD 輸入
//==================================================
fastLength = input.int(12, "MACD 快速長度")
slowLength = input.int(26, "MACD 慢速長度")
signalLength = input.int(9, "MACD 信號長度")
atrLength = input.int(14, "ATR 長度")
showExits = input.bool(true)
showCrosses = input.bool(true)
minProfitATR = input.float(0.30)
//==================================================
// MACD 核心
//==================================================
fastMA = ta.ema(close, fastLength)
slowMA = ta.ema(close, slowLength)
macdLine = fastMA - slowMA
signalLine = ta.ema(macdLine, signalLength)
hist = macdLine - signalLine
//==================================================
// 交叉事件
//==================================================
bullCross = ta.crossover(macdLine, signalLine)
bearCross = ta.crossunder(macdLine, signalLine)
//==================================================
// 標記間距
//==================================================
atrValue = ta.atr(atrLength)
dotOffset = atrValue * 0.28
triOffset = atrValue * 0.70
longExitY = high + dotOffset
shortExitY = low - dotOffset
triBullY = low - triOffset
triBearY = high + triOffset
//==================================================
// 交易狀態引擎
//==================================================
var int activeDir = 0
var float entryPrice = na
var float bestHist = na
var bool partialTaken = false
if bullCross
activeDir := 1
entryPrice := close
bestHist := hist
partialTaken := false
if bearCross
activeDir := -1
entryPrice := close
bestHist := hist
partialTaken := false
if activeDir == 1
bestHist := na(bestHist) ? hist : math.max(bestHist, hist)
if activeDir == -1
bestHist := na(bestHist) ? hist : math.min(bestHist, hist)
//==================================================
// 平倉邏輯
//==================================================
longInProfit =
activeDir == 1
and not na(entryPrice)
and high >= entryPrice + atrValue * minProfitATR
shortInProfit =
activeDir == -1
and not na(entryPrice)
and low <= entryPrice - atrValue * minProfitATR
多頭動量衰減 =
activeDir == 1
and bestHist > 0
and hist < hist[1]
shortMomentumFade =
activeDir == -1
and bestHist < 0
and hist > hist[1]
yellowLongExit =
showExits
and activeDir == 1
and not partialTaken
and longInProfit
and longMomentumFade
yellowShortExit =
showExits
and activeDir == -1
and not partialTaken
and shortInProfit
and shortMomentumFade
if yellowLongExit or yellowShortExit
partialTaken := true
redLongExit =
showExits
and activeDir == 1
and partialTaken
and bearCross
redShortExit =
showExits
and activeDir == -1
and partialTaken
and bullCross
if redLongExit or redShortExit
activeDir := 0
entryPrice := na
bestHist := na
partialTaken := false
//==================================================
// EMA 堆疊(5 層雲)
//==================================================
ema5 = ta.ema(close, 5)
ema9 = ta.ema(close, 9)
ema12 = ta.ema(close, 12)
ema26 = ta.ema(close, 26)
ema50 = ta.ema(close, 50)
//==================================================
// 繪製 EMA(細線 / 低飽和)
//==================================================
p5 = plot(ema5, color=color.new(color.aqua, 20), linewidth=1)
p9 = plot(ema9, color=color.new(color.blue, 20), linewidth=1)
p12 = plot(ema12, color=color.new(color.gray, 20), linewidth=1)
p26 = plot(ema26, color=color.new(color.orange,20), linewidth=1)
p50 = plot(ema50, color=color.new(color.red, 20), linewidth=1)
//==================================================
// 雲層
//==================================================
// 5–9 快速反應
fill(p5, p9, color=color.new(color.aqua, 80))
// 9–12 動量
fill(p9, p12, color=color.new(color.blue, 82))
// 12–26 結構
fill(p12, p26, color=color.new(color.gray, 84))
// 26–50 趨勢
fill(p26, p50, color=color.new(color.orange, 86))
//==================================================
// 平倉圓點
//==================================================
plotshape(
yellowLongExit ? longExitY : na,
style=shape.circle,
location=location.absolute,
color=color.new(color.yellow, 20),
size=size.tiny
)
plotshape(
yellowShortExit ? shortExitY : na,
style=shape.circle,
location=location.absolute,
color=color.new(color.yellow, 20),
size=size.tiny
)
plotshape(
redLongExit ? longExitY : na,
style=shape.circle,
location=location.absolute,
color=color.red,
size=size.tiny
)
plotshape(
redShortExit ? shortExitY : na,
style=shape.circle,
location=location.absolute,
color=color.red,
size=size.tiny
)
//==================================================
// 入場三角形
//==================================================
plotshape(
showCrosses and bullCross ? triBullY : na,
style=shape.triangleup,
location=location.absolute,
color=color.lime,
size=size.small
)
plotshape(
showCrosses and bearCross ? triBearY : na,
style=shape.triangledown,
location=location.absolute,
color=color.red,
size=size.small
)
ATR 提示與代碼
提示
扮演一名資深 TradingView Pine Script v5 開發者。
創建一個名爲以下內容的疊加指標:
“技術指標編碼 5.2 — 平均真實波幅”
目的
構建一個使用遞增式 ATR 跟蹤水平的、可適應波動性的趨勢方向指標。該指標用於教育分析,不得執行交易或做出表現聲明。
核心設置
- ATR 週期:10
- ATR 乘數:1.9
- 計算來源:收盤價
- 使 ATR 週期、乘數和來源可配置。
計算
1. 計算10個週期的平均真實波幅。
2. 計算跟蹤距離:
trailingDistance = 1.9 × ATR(10)
3. 創建一個會隨價格遞增上移的遞歸跟蹤水平:
- 只要價格保持在前一個跟蹤水平之上,該水平可以上移但絕不下移。
- 只要價格保持在前一個跟蹤水平下方,該水平可以下移但絕不上漲。
- 當價格突破跟蹤水平時,改變編碼方向。
方向邏輯
- 當收盤價上穿跟蹤水平時,將方向改爲看漲。
- 當收盤價跌破跟蹤水平時,將方向改爲看跌。
- 僅在方向變化時生成信號。
- 不要在每根蠟燭上生成重複信號。
視覺輸出
- 繪製 ATR 跟蹤水平。
- 當編碼方向爲看漲時使用綠色。
- 當編碼方向爲看跌時使用紅色。
- 在看漲方向變化時繪製一個綠色向上三角形。
- 在看跌方向變化時繪製一個紅色向下三角形。
- 可選地根據當前方向爲蠟燭上色。
EMA 雲層
- 添加一個12週期和26週期的指數移動平均線雲。
- 當 EMA 12 高於 EMA 26 時,將雲層填充爲綠色。
- 當 EMA 12 低於 EMA 26 時,將其填充爲紅色。
- 將 EMA 雲層視爲動量背景;它不得改變 ATR 方向變化計算。
- 添加一個用於隱藏 EMA 雲層的輸入。
技術要求
- 使用已確認的收盤價。
- 不要重繪。
- 不要使用未來信息或前瞻。
- 通過遞歸變量邏輯保留跟蹤水平。
- 爲看漲和看跌方向變化添加 alertcondition() 規則。
- 包含標記、蠟燭顏色、跟蹤水平和 EMA 雲層的開關。
- 不要創建策略訂單、結果表、盈虧計算或財務建議。
- 清晰組織並註釋代碼。
提供:
1. 完整的 Pine Script v5 代碼。
2. ATR 和遞增式上移機制的通俗解釋。
3. 生成每個標記的條件說明。
4. 一個簡短的不重繪驗證檢查清單。
代碼
//@version=6
indicator("JW V5.2", overlay=true)
// ── 輸入 ──────────────────────────────────────────
atrPeriod = input.int(10, "ATR 週期")
keyValue = input.float(1.9, "關鍵值 / ATR 乘數", step=0.1)
warnZoneATR = input.float(0.25, "警告區間 (x ATR)", step=0.05)
cloudSmooth = input.int(3, "雲層平滑度", minval=1, tooltip="僅平滑繪製帶狀區域——不會影響信號時機")
src = close
// ── ATR 跟蹤止損核心 — 原始數據,驅動一切真實邏輯 ──
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR
var float trailStop = 0.0
trailStop := src > nz(trailStop[1], 0) and src[1] > nz(trailStop[1], 0) ? math.max(nz(trailStop[1]), src - nLoss) :
src < nz(trailStop[1], 0) and src[1] < nz(trailStop[1], 0) ? math.min(nz(trailStop[1]), src + nLoss) :
src > nz(trailStop[1], 0) ? src - nLoss : src + nLoss
var int pos = 0
pos := src[1] < nz(trailStop[1], 0) and src > nz(trailStop[1], 0) ? 1 :
src[1] > nz(trailStop[1], 0) and src < nz(trailStop[1], 0) ? -1 : nz(pos[1], 0)
trendColor = pos == 1 ? color.new(color.green, 0) : pos == -1 ? color.new(color.red, 0) : color.gray
// ── 雲層 — 爲流暢性而進行視覺平滑,僅作外觀用途 ──
plotSrc = ta.ema(src, cloudSmooth)
plotStop = ta.ema(trailStop, cloudSmooth)
pricePlot = plot(plotSrc, title="Price (smoothed)", color=trendColor, linewidth=1)
stopPlot = plot(plotStop, title="跟蹤止損(平滑)", color=trendColor, linewidth=1)
fill(pricePlot, stopPlot, color=color.new(trendColor, 75), title="趨勢雲")
// ── 信號 — 由原始數值驅動,不受平滑影響 ──
buySignal = pos == 1 and pos[1] == -1
sellSignal = pos == -1 and pos[1] == 1
plotshape(buySignal, title="Buy", text="buy", style=shape.triangleup, location=location.belowbar, color=color.green, textcolor=color.white, size=size.small)
plotshape(sellSignal, title="Sell", text="sell", style=shape.triangledown, location=location.abovebar, color=color.red, textcolor=color.white, size=size.small)
alertcondition(buySignal, "買入信號", "ATR 跟蹤翻轉爲看漲")
alertcondition(sellSignal, "賣出信號", "ATR 跟蹤翻轉爲看跌")
// ── 翻轉接近度 — 原始缺口,與信號數學相同 ──
gapATR = pos == 1 ? (src - trailStop) / xATR : (trailStop - src) / xATR
pctToFlip = math.max(0, math.min(100, 100 * (1 - gapATR / keyValue)))
dirText = pos == 1 ? "LONG" : pos == -1 ? "SHORT" : "FLAT"
nearFlip = gapATR <= warnZoneATR
labelColor = nearFlip ? color.new(color.orange, 0) : trendColor
labelText = dirText + " — " + str.tostring(gapATR, "#.##") + " ATR 纔會翻轉 (" + str.tostring(pctToFlip, "#") + "%)"
var label proximityLabel = na
if barstate.islast
label.delete(proximityLabel)
proximityLabel := label.new(bar_index + 2, src, labelText, style=label.style_label_left, color=labelColor, textcolor=color.white, size=size.normal)

