如何解决Pine Script Multi Time Frame - 我的策略是重绘,我不知道为什么
我以为我了解如何避免重新绘制,但我仍然看到图表上的交易没有与警报对齐,反之亦然。
我的脚本从 60m 图表中获取数据以在 15m 图表上进行交易。我正在访问 60m(至少 4 个柱线)的历史数据,如果 barstate.isconfirmed
,我只输入 15m 的交易。我看到交易触发警报然后消失,或者从未触发警报的交易回溯性显示。
据我所知,我编写了我的脚本,因此未来的数据不应影响历史决策,但显然有些事情正在发生。我不知所措
//@version=4
strategy(title="60-15 ETH/USD",precision=2,default_qty_type=strategy.cash,initial_capital=100.0,currency="USD",commission_type=strategy.commission.percent,commission_value=0.1)
// get input
i_length = input(group="Stochastic",title="Stochastic Length",minval=1,defval=15)
i_k = input(group="Stochastic",title="Stochastic %K",defval=2)
i_d = input(group="Stochastic",title="Stochastic %D",defval=10)
i_trailingStop = input(group="Trade Settings",title="Trailing Stop?",type=input.bool,defval=true) // should stop loss be dynamic,based on most recent high,or static,based on entry price?
i_stopPercent = input(group="Trade Settings",title="Stop Percent",type=input.float,defval=0.05,maxval=1.0,minval=0.001) // how much (percentage) can price fall before exiting the trade
i_takeProfit = input(group="Trade Settings",title="Take Profit",defval=0.06,minval=0.001) // how much (percentage) can price rise before exiting the trade
i_sellThreshold = input(group="Trade Settings",title="Sell Threshold",defval=75.0,maxval=100,minval=0.0) // when stochastic %D crosses under this value,exit the trade
i_buyThreshold = input(group="Trade Settings",title="Buy Threshold",defval=40.0,minval=0.0) // stochastic %D must be below this value to enter a trade
// declare order variables
var recentHigh = 0.0 // the highest high while in a trade
var stop = 0.0 // the price that will trigger as stop loss
var entryPrice = 0.0 // the price when the trade was entered
// build stochastic
sto = stoch(close,high,low,i_length)
K = sma(sto,i_k)
D = sma(K,i_d)
// get stochastic trend
stoch_upTrend = D > D[1]
// get stochastic trend for 60 minute
stoch_60 = security(syminfo.tickerid,"60",D)
stoch_60_upTrend = (stoch_60[4] >= stoch_60[8])
// entry
if (D < i_buyThreshold) and stoch_upTrend and stoch_60_upTrend and barstate.isconfirmed and strategy.position_size == 0
recentHigh := close
entryPrice := close
stop := (close * (1-i_stopPercent))
strategy.entry(id="60-15-Long",long=strategy.long,comment='buy')
// update recent high,trailing stop
if close > recentHigh
recentHigh := close
stop := i_trailingStop ? (recentHigh * i_stopPercent) : stop
// exit
strategy.exit(id="60-15-Long",stop=stop,comment='sell-stop')
if close > (entryPrice * (1+i_takeProfit)) and barstate.isconfirmed
strategy.close(id="60-15-Long",comment='sell-profit')
if crossunder(D,i_sellThreshold) and barstate.isconfirmed
strategy.close(id="60-15-Long",comment='sell-trend')
// plot
plot(K,title="%K",color=color.blue,linewidth=1)
plot(D,title="%D",color=color.orange,linewidth=1)
plot(stoch_60,title="Hourly Stochastic (D)",color= stoch_60_upTrend ? color.green : color.red,style=plot.style_stepline)
upperBand = hline(i_sellThreshold,title="Upper Limit",linestyle=hline.style_dashed)
middleBand = hline(50,title="Midline",linestyle=hline.style_dotted)
lowerBand = hline(i_buyThreshold,title="Lower Limit",linestyle=hline.style_dashed)
fill(lowerBand,upperBand,color=color.purple,transp=75)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。