Pine script 条件(假定)已满足,但预期操作(plotchar)未';不会发生
我正在尝试创建一个筛选程序。它从绘图开始: (a) 两条红色的水平直线,表示回望期的最高点和最低点。Pine script 条件(假定)已满足,但预期操作(plotchar)未';不会发生,pine-script,algorithmic-trading,trading,Pine Script,Algorithmic Trading,Trading,我正在尝试创建一个筛选程序。它从绘图开始: (a) 两条红色的水平直线,表示回望期的最高点和最低点。 (b) 两条蓝色的水平直线,表示该范围内25%和75%的点 请检查屏幕截图 我的问题是:当以下四个条件都满足时,它应该标记(plotchar),但它不工作 (1) 在这段时间的前半段,high至少有一次处于上限。 (2) 在该期间的前半段,low至少有一次处于较低的范围内。 (3) 在该期间的后半段,high至少有一次处于上限。 (4) 在这段时间的后半段,低交叉在较低的范围线下 除非我遗漏了什
(b) 两条蓝色的水平直线,表示该范围内25%和75%的点 请检查屏幕截图 我的问题是:当以下四个条件都满足时,它应该标记(plotchar),但它不工作 (1) 在这段时间的前半段,high至少有一次处于上限。
(2) 在该期间的前半段,low至少有一次处于较低的范围内。
(3) 在该期间的后半段,high至少有一次处于上限。
(4) 在这段时间的后半段,低交叉在较低的范围线下 除非我遗漏了什么,否则所有这四个条件都在屏幕截图中得到了满足,因此它应该用烛光| 4 |绘制(当低交叉点位于低范围线之下时),但没有绘制任何内容 任何帮助都将不胜感激 下面是代码的相关部分,但如果您希望检查和/或重复使用
lookBack = input(title="Lookback", type=input.integer, defval=24, minval=2)
range = input(title="Upper & Lower Range", type=input.integer, defval=4, minval=10)
// INDICATORS & VARIABLES
highestHigh = highest(high, lookBack)
lowestLow = lowest(low, lookBack)
xAxisStartsAt = bar_index[lookBack]
xAxisFinishesAt = bar_index
upperLimit = highestHigh
lowerLimit = lowestLow
upperRange = ((highestHigh - lowestLow)/range) + lowestLow
lowerRange = highestHigh - ((highestHigh - lowestLow)/range)
HighAboveUpperRange = high > upperRange
LowBelowLowerRange = low < lowerRange
occurrencesAboveTotal = sum(HighAboveUpperRange ? 1 : 0, lookBack)
occurrencesAboveSecondHalf = sum(HighAboveUpperRange ? 1 : 0, lookBack/2)
occurrencesAboveFirstHalf = occurrencesAboveTotal - occurrencesAboveSecondHalf
occurrencesBelowTotal = sum(LowBelowLowerRange ? 1 : 0, lookBack)
occurrencesBelowSecondHalf = sum(LowBelowLowerRange ? 1 : 0, lookBack/2)
occurrencesBelowFirstHalf = occurrencesBelowTotal - occurrencesBelowSecondHalf
// STRATEGY
triggerA = occurrencesAboveFirstHalf >= 1 ? true : false
triggerB = occurrencesAboveSecondHalf >= 1 ? true : false
triggerC = occurrencesBelowFirstHalf >= 1 ? true : false
triggerD = crossunder(low, lowerRange)
condition = triggerA and triggerB and triggerC and triggerD
// PAINTBRUSH
plotchar(condition)
lookBack=input(title=“lookBack”,type=input.integer,deffal=24,minval=2)
范围=输入(title=“上限和下限”,type=input.integer,deffal=4,minval=10)
//指标和变量
highestHigh=最高(高,回望)
lowestLow=最低(低,回望)
xAxisStartsAt=条形图索引[回望]
XaxiFinisheSat=条形图索引
上限=最高值
lowerLimit=LowerLow
上限=((最高上限-最低下限)/范围)+最低下限
lowerRange=最高位-((最高位-最低位)/范围)
HighOverUpperRange=高>上限
LowBelowRange=低<低排列
occurrencesAboveTotal=总和(高于上限?1:0,回望)
发生率SABoveSecondHalf=总和(高于上限?1:0,回望/2)
发生率超过上半部分=发生率超过总数-发生率超过下半部分
发生率BelowTotal=总和(LowBelowRowerRange?1:0,回望)
发生率belowSecondhalf=总和(LowBelowLowerRange?1:0,回望/2)
Occurrencessbelowfirsthalf=OccurrencessbelowTotal-OccurrencessbelowSecondhalf
//策略
triggerA=发生率高于上半部分>=1?对:错
triggerB=发生率超过二分之一>=1?对:错
triggerC=发生率belowfirsthalf>=1?对:错
triggerD=交叉(低、低排列)
条件=triggerA和triggerB以及triggerC和triggerD
//画笔
plotchar(条件)
更新
在第二个和第三个屏幕截图中,绘制了星星(plotchar),但没有绘制它们预期的位置(在较低的蓝线/较低的范围(条件4)下进行低交叉时预期)
在您的脚本中,确定范围的公式混淆了,因此
upperRange = ((highestHigh - lowestLow)/range) + lowestLow
lowerRange = highestHigh - ((highestHigh - lowestLow)/range)
但应该是这样的
lowerRange = ((highestHigh - lowestLow)/range) + lowestLow
upperRange = highestHigh - ((highestHigh - lowestLow)/range)
将调试行添加到脚本中,您将看到许多有用的信息
plot(lowerRange,color=color.red)
plot(upperRange,color=color.green)
plot(low, color=color.black)
我不确定,但在我看来,crossunder(low,lowerRange)
这不是您要测试的条件。
祝你好运。谢谢!你解决了它!关于如何策划调试,这是一个很好的提示,我一直在努力用Pine调试我的问题(我对它很陌生)。我真的很想检查某个价格在该周期的下半段何时进入较低的范围,因此,在下半段的较低交叉时,在较低的安排下。这有意义吗?干杯!:-)检查这种情况是有意义的。我只是想提醒你注意一个事实,
lowerRange!=下排列线
lowerRange下的低交叉和不同条形下的交叉lowerRangeLine。