Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pine script 条件(假定)已满足,但预期操作(plotchar)未';不会发生_Pine Script_Algorithmic Trading_Trading - Fatal编程技术网

Pine script 条件(假定)已满足,但预期操作(plotchar)未';不会发生

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) 在这段时间的后半段,低交叉在较低的范围线下 除非我遗漏了什

我正在尝试创建一个筛选程序。它从绘图开始:

(a) 两条红色的水平直线,表示回望期的最高点和最低点。
(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。