[英]What is the cause of the "No Data" error when backtesting in Trading View a strategy written in Pine Script?
[英]What is the cause of the “No Data” error when backtesting in Trading View a strategy written in Pine Script?
我已經制定了一個策略,如果價格穿過 5 個分形(頂部和底部)中間平均線,則進入多頭,當價格穿過 5 個頂部分形平均線以下時,多頭收盤。
該策略在價格低於中間平均線時做空,當價格穿過 5 個底部分形平均線時做空。
我目前收到無數據錯誤。 有人可以幫我破譯我的代碼的問題嗎?
strategy(title="Fractal Breakout Strategy", shorttitle="Fractal Breakout Long", overlay=true)
LookBack = input(title="Periods", defval=5, minval=1, maxval=10, type=input.integer)
th = high[2]>high[1] and high[2]>high and high[2]>high[3] and high[2]>high[4] ? -1 : 0
bl = low[2]<low[1] and low[2]<low and low[2]<low[3] and low[2]<low[4] ? 1 : 0
tot = th + bl
pl = abs(tot)>=1 ? 1 : 0
// plotarrow(pl==1 ? tot : na,colorup=green,colordown=red,offset=-2,maxheight=10)
lowline = (valuewhen(tot==1, low[2], 0) + (LookBack>1 ? valuewhen(tot==1, low[2], 1) : 0) + (LookBack>2 ? valuewhen(tot==1, low[2], 2) : 0) + (LookBack>3 ? valuewhen(tot==1, low[2], 3) : 0) + (LookBack>4 ? valuewhen(tot==1, low[2], 4) : 0) + (LookBack>5 ? valuewhen(tot==1, low[2], 5) : 0) + (LookBack>6 ? valuewhen(tot==1, low[2], 6) : 0) + (LookBack>7 ? valuewhen(tot==1, low[2], 7) : 0) + (LookBack>8 ? valuewhen(tot==1, low[2], 8) : 0) + (LookBack>9 ? valuewhen(tot==1, low[2], 9) : 0) /LookBack)
highline = (valuewhen(tot==-1, high[2], 0) + (LookBack>1 ? valuewhen(tot==-1, high[2], 1) : 0) + (LookBack>2 ? valuewhen(tot==-1, high[2], 2) : 0) + (LookBack>3 ? valuewhen(tot==-1, high[2], 3) : 0) + (LookBack>4 ? valuewhen(tot==-1, high[2], 4) : 0) + (LookBack>5 ? valuewhen(tot==-1, high[2], 5) : 0) + (LookBack>6 ? valuewhen(tot==-1, high[2], 6) : 0) + (LookBack>7 ? valuewhen(tot==-1, high[2], 7) : 0) + (LookBack>8 ? valuewhen(tot==-1, high[2], 8) : 0) + (LookBack>9 ? valuewhen(tot==-1, high[2], 9) : 0))/LookBack
MidLine = (highline+lowline)/2
// Risk management
inpTakeProfit = input(defval = 1000, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 200, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na
Long = crossover(close, MidLine)
LongClose = crossunder(close, highline)
if (Long)
strategy.entry(id="Long Entry", long=true, when=Long)
strategy.close(id="Long Entry", when=LongClose)
short = crossunder(close, MidLine)
shortclose = crossover(close, lowline)
if (short)
strategy.entry(id="Short Entry", long=false, when=short)
strategy.close(id="short Entry", when=shortclose)
// === STRATEGY RISK MANAGEMENT EXECUTION ===
strategy.exit("LongClose", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("shortclose", from_entry = "short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
嘗試創建另一個專用於退出的“if”參數。
前:
if (short)
strategy.entry(id="Short Entry", long=false, when=short) ///Pay attention, you typed two times "short" condition, one into if and the other into strategy.entry.
strategy.close(id="short Entry", when=shortclose)
后:
if (short)
strategy.entry("Short Entry",strategy.short)
if shortclose
strategy.close("short Entry")
你沒有得到任何數據,因為你說“如果空頭和平倉”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.