是否有可以在策略中使用的函数而不是 line.new() 或 label.new()?
Is there a function instead of a line.new() or label.new() that can be used in the strategy?
问题1:在研究中,变量fibEntry
和fibProfit
从一开始就给出了奇怪的值。这些值远低于设定的标准。当脚本中的条件为真时,变量就会给出正确的值。
问题 2:在策略中,脚本在 open
柱线值处触发入场,因为 fibEntry
的奇怪值远低于柱线集。每隔一天,脚本会在收盘价处触发 fibProfit
。
问题 3:在策略中,即使条件为真,脚本也会忽略它。
我不能使用绘图,因为我需要这些值作为策略。
我试过:
strategy.entry(id="Long", long=true, when=barstate.isconfirmed and fibEntry)
和
strategy.entry(id="Long", long=true, when=dayofmonth != dayofmonth[1] and fibEntry)
代码如下:
//@version=4
study(title="first baby study",overlay=true)
// Step 1. Highs and lows
pHigh = pivothigh(1,1)
pLow = pivotlow(1,1)
// Step 2. Fibonacci
// Step 2.1 Fibonacci Top
fibTop = 0.00
if pHigh > pHigh[2] or pHigh > pHigh[3] or pHigh > pHigh[4] or pHigh > pHigh[5]
if close[1] > open[1]
fibTop := close[1]
if open[1] > close[1]
fibTop := open[1]
// Step 2.2. Fibonacci Bottom
fibBottom = 0.00
if pLow > pLow[2] or pLow > pLow[3] or pLow > pLow[4] or pLow > pLow[5]
if close[1] > open[1]
fibBottom := open[1]
if open[1] > close[1]
fibBottom := close[1]
// Step 2.3. Fibonacci 0.272 - Entry Levl
var float fibEntry = na
if fibBottom[1]
fibEntry := fibTop - 0.272 * (fibTop - fibBottom[1])
else
if fibBottom[2]
fibEntry := fibTop - 0.272 * (fibTop - fibBottom[2])
else
if fibBottom[3]
fibEntry := fibTop - 0.272 * (fibTop - fibBottom[3])
else
if fibBottom[4]
fibEntry := fibTop - 0.272 * (fibTop - fibBottom[4])
else
if fibBottom[5]
fibEntry := fibTop - 0.272 * (fibTop - fibBottom[5])
// Step 2.4. Fibonacci -0.272 - Take Profit Level
var float fibProfit = na
if fibBottom[1]
fibProfit := (fibTop - fibBottom[1]) * 0.272 + fibTop
else
if fibBottom[2]
fibProfit := (fibTop - fibBottom[2]) * 0.272 + fibTop
else
if fibBottom[3]
fibProfit := (fibTop - fibBottom[3]) * 0.272 + fibTop
else
if fibBottom[4]
fibProfit := (fibTop - fibBottom[4]) * 0.272 + fibTop
else
if fibBottom[5]
fibProfit := (fibTop - fibBottom[5]) * 0.272 + fibTop
// // Step 3. Enter Trade
// strategy.entry(id="Long", long=true, when=fibEntry)
// // Step 4. Take Profit
// strategy.close(id="Long", when=fibProfit)
// Step 5. Plotting
plot(fibEntry, color=#ffe504)
plot(fibProfit, color=#00ff0a)
plot(fibTop, color=color.green, offset=-1)
plot(fibBottom, color=color.red, offset=-1)
plot(pHigh, color=color.green, transp=50,style=plot.style_circles, linewidth=5, offset=-1)
plot(pLow, color=color.red, transp=50, style=plot.style_circles, linewidth=5, offset=-1)
这是我的第一个 study/strategy,希望有人能提供帮助。谢谢
这可能会让您更接近您的目标。我们将变量初始化为 na
并确保它们来自主 if
块,其值为:
// Step 2.1 Fibonacci Top
float fibTop = na
if pHigh > pHigh[2] or pHigh > pHigh[3] or pHigh > pHigh[4] or pHigh > pHigh[5]
if close[1] > open[1]
fibTop := close[1]
else
fibTop := open[1]
// Step 2.2. Fibonacci Bottom
float fibBottom = na
if pLow > pLow[2] or pLow > pLow[3] or pLow > pLow[4] or pLow > pLow[5]
if close[1] > open[1]
fibBottom := open[1]
else
fibBottom := close[1]
问题1:在研究中,变量fibEntry
和fibProfit
从一开始就给出了奇怪的值。这些值远低于设定的标准。当脚本中的条件为真时,变量就会给出正确的值。
问题 2:在策略中,脚本在 open
柱线值处触发入场,因为 fibEntry
的奇怪值远低于柱线集。每隔一天,脚本会在收盘价处触发 fibProfit
。
问题 3:在策略中,即使条件为真,脚本也会忽略它。
我不能使用绘图,因为我需要这些值作为策略。
我试过:
strategy.entry(id="Long", long=true, when=barstate.isconfirmed and fibEntry)
和
strategy.entry(id="Long", long=true, when=dayofmonth != dayofmonth[1] and fibEntry)
代码如下:
//@version=4
study(title="first baby study",overlay=true)
// Step 1. Highs and lows
pHigh = pivothigh(1,1)
pLow = pivotlow(1,1)
// Step 2. Fibonacci
// Step 2.1 Fibonacci Top
fibTop = 0.00
if pHigh > pHigh[2] or pHigh > pHigh[3] or pHigh > pHigh[4] or pHigh > pHigh[5]
if close[1] > open[1]
fibTop := close[1]
if open[1] > close[1]
fibTop := open[1]
// Step 2.2. Fibonacci Bottom
fibBottom = 0.00
if pLow > pLow[2] or pLow > pLow[3] or pLow > pLow[4] or pLow > pLow[5]
if close[1] > open[1]
fibBottom := open[1]
if open[1] > close[1]
fibBottom := close[1]
// Step 2.3. Fibonacci 0.272 - Entry Levl
var float fibEntry = na
if fibBottom[1]
fibEntry := fibTop - 0.272 * (fibTop - fibBottom[1])
else
if fibBottom[2]
fibEntry := fibTop - 0.272 * (fibTop - fibBottom[2])
else
if fibBottom[3]
fibEntry := fibTop - 0.272 * (fibTop - fibBottom[3])
else
if fibBottom[4]
fibEntry := fibTop - 0.272 * (fibTop - fibBottom[4])
else
if fibBottom[5]
fibEntry := fibTop - 0.272 * (fibTop - fibBottom[5])
// Step 2.4. Fibonacci -0.272 - Take Profit Level
var float fibProfit = na
if fibBottom[1]
fibProfit := (fibTop - fibBottom[1]) * 0.272 + fibTop
else
if fibBottom[2]
fibProfit := (fibTop - fibBottom[2]) * 0.272 + fibTop
else
if fibBottom[3]
fibProfit := (fibTop - fibBottom[3]) * 0.272 + fibTop
else
if fibBottom[4]
fibProfit := (fibTop - fibBottom[4]) * 0.272 + fibTop
else
if fibBottom[5]
fibProfit := (fibTop - fibBottom[5]) * 0.272 + fibTop
// // Step 3. Enter Trade
// strategy.entry(id="Long", long=true, when=fibEntry)
// // Step 4. Take Profit
// strategy.close(id="Long", when=fibProfit)
// Step 5. Plotting
plot(fibEntry, color=#ffe504)
plot(fibProfit, color=#00ff0a)
plot(fibTop, color=color.green, offset=-1)
plot(fibBottom, color=color.red, offset=-1)
plot(pHigh, color=color.green, transp=50,style=plot.style_circles, linewidth=5, offset=-1)
plot(pLow, color=color.red, transp=50, style=plot.style_circles, linewidth=5, offset=-1)
这是我的第一个 study/strategy,希望有人能提供帮助。谢谢
这可能会让您更接近您的目标。我们将变量初始化为 na
并确保它们来自主 if
块,其值为:
// Step 2.1 Fibonacci Top
float fibTop = na
if pHigh > pHigh[2] or pHigh > pHigh[3] or pHigh > pHigh[4] or pHigh > pHigh[5]
if close[1] > open[1]
fibTop := close[1]
else
fibTop := open[1]
// Step 2.2. Fibonacci Bottom
float fibBottom = na
if pLow > pLow[2] or pLow > pLow[3] or pLow > pLow[4] or pLow > pLow[5]
if close[1] > open[1]
fibBottom := open[1]
else
fibBottom := close[1]