Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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 试图将复杂的策略转换为警报_Pine Script - Fatal编程技术网

Pine script 试图将复杂的策略转换为警报

Pine script 试图将复杂的策略转换为警报,pine-script,Pine Script,我正在尝试将此策略转换为警报,以便通过警报自动化具有3个社区的策略 我试图将策略转换为研究,但由于条件包括研究中不允许的strategy.closetrades,因此出现错误。我不知道如何用另一种方法来做 strategy(shorttitle = "Squeeze MOM", title="Squeeze Momentum on Reversal Strategy", overlay=false) len = input(title="Length", type=integer, defva

我正在尝试将此策略转换为警报,以便通过警报自动化具有3个社区的策略

我试图将策略转换为研究,但由于条件包括研究中不允许的strategy.closetrades,因此出现错误。我不知道如何用另一种方法来做

strategy(shorttitle = "Squeeze MOM", title="Squeeze Momentum on Reversal Strategy", overlay=false)

len = input(title="Length", type=integer, defval=14)
th = input(title="threshold", type=integer, defval=20)

TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0


SmoothedTrueRange = nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

length = input(30, title="BB Length")
mult = input(3.0,title="BB MultFactor")
lengthKC=input(30, title="KC Length")
multKC = input(1.0, title="KC MultFactor")
strength = input(0.0018, title="Reversal Strength")

useTrueRange = input(true, title="Use TrueRange (KC)", type=bool)

// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = ema(source, lengthKC)
range = atr(length)
rangema = ema(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) or (upperBB > upperKC)

highest = highest(high, lengthKC)
lowest = lowest(low, lengthKC)
lastsma = ema(close,lengthKC)

valin = linreg(source  -  avg(avg(highest, lowest), lastsma), lengthKC,0)

bcolor = iff( valin > 0, iff( valin > nz(valin[1]), lime, green), iff( valin < nz(valin[1]), red, maroon))
scolor = sqzOn ? black : gray 
plot(valin, color=bcolor, style=histogram, linewidth=4)
plot(0, color=scolor, style=circles, linewidth=2)

longcondition = valin > strength and valin > nz(valin[1])  and DIPlus > DIMinus and DX > 15 and strategy.closedtrades < 1000  and (sqzOn[1] or sqzOn[2]or sqzOn[3] or sqzOn[4]) // line become maroon
shortcondition = valin < strength and valin < nz(valin[1]) and DIPlus < DIMinus and DX > 15 and strategy.closedtrades < 1000 and (sqzOn[1] or sqzOn[2]or sqzOn[3] or sqzOn[4]) // line become green
exitlong = valin < nz(valin[1]) and strategy.closedtrades < 1000
exitshort = valin > nz(valin[1]) and strategy.closedtrades < 1000

if(longcondition)
    strategy.entry("BUY", strategy.long, qty = (strategy.equity/(close*1.01)))
strategy.exit("BUY TO COV", "BUY", trail_price = strategy.position_avg_price, trail_offset = (.8*range*100))
strategy.close("BUY", when = exitlong)
if(shortcondition)
    strategy.entry("SELL", strategy.short, qty = (strategy.equity/(close*1.01)))
strategy.exit("SELL TO COV", "SELL", trail_price = strategy.position_avg_price, trail_offset = (.8*range*100))
strategy.close("SELL", when = exitshort)
策略(shorttitle=“挤压妈妈”,title=“反转策略上的挤压动量”,overlay=false)
len=输入(title=“Length”,type=整数,deffal=14)
th=输入(title=“threshold”,type=integer,deffal=20)
TrueRange=最大值(最大值(高-低,绝对值(高nz)(接近[1])),绝对值(低nz)(接近[1]))
方向移动Plus=高nz(高[1])>nz(低[1])-低?最大值(高nz(高[1]),0:0
方向移动负=nz(低[1])-低>高nz(高[1])?最大值(新西兰(低[1])-低,0):0
SmoothdTrueRange=nz(SmoothdTrueRange[1])-(nz(SmoothdTrueRange[1])/len)+TrueRange
SmoothdDirectionalMovementPlus=nz(SmoothdDirectionalMovementPlus[1])-(nz(SmoothdDirectionalMovementPlus[1])/len)+方向移动Plus
SmoothdDirectionalMovement负号=nz(SmoothdDirectionalMovement负号[1])-(nz(SmoothdDirectionalMovement负号[1])/len)+方向移动负号
DIPlus=平滑方向移动加上/平滑真实范围*100
DIMinus=平滑的方向移动减去/平滑的真实范围*100
DX=abs(双倍体)/(双倍体+双倍体)*100
ADX=sma(DX,len)
长度=输入(30,title=“BB长度”)
mult=输入(3.0,title=“BB MultFactor”)
lengthKC=输入(30,title=“KC长度”)
multKC=输入(1.0,title=“KC MultFactor”)
强度=输入(0.0018,title=“反转强度”)
UseTureRange=input(true,title=“Use TrueRange(KC)”,type=bool)
//计算BB
来源=关闭
基础=sma(来源、长度)
dev=multKC*stdev(源,长度)
upperBB=基准+偏差
lowerBB=基础-开发
//计算KC
ma=ema(来源,长度C)
范围=atr(长度)
范围MA=ema(范围,长度C)
上限kc=ma+量程ma*multKC
lowerKC=毫安-量程毫安*multKC
sqzOn=(lowerBB>lowerKC)和(upperBBupperKC)
最高=最高(高,长)
最低=最低(低,长)
lastsma=ema(闭合,长度C)
valin=linreg(来源-平均值(平均值(最高、最低)、lastsma)、lengthKC、0)
b颜色=iff(valin>0,iff(valin>nz(valin[1]),石灰,绿色),iff(valinstrength和valin>nz(valin[1])和DIPlus>DIMinus和DX>15和strategy.closedtrades<1000和(sqzOn[1]或sqzOn[2]或sqzOn[3]或sqzOn[4])//线条变成褐红色
shortcondition=valin15和strategy.closedtrades<1000和(sqzOn[1]或sqzOn[2]或sqzOn[3]或sqzOn[4])//线变绿
exitlong=valinnz(valin[1])和strategy.closedtrades<1000
如果(长期条件)
策略.分录(“买入”,策略.多头,数量=(策略.权益/(收盘价*1.01)))
策略.退出(“向COV购买”,“购买”,跟踪价格=策略.位置平均价格,跟踪偏移=(.8*范围*100))
策略关闭(“购买”,当=退出时)
if(短条件)
策略.分录(“卖出”,策略.空头,数量=(策略.权益/(收盘价*1.01)))
策略.退出(“出售给COV”,“出售”,跟踪价格=策略.定位平均价格,跟踪偏移=(.8*范围*100))
策略关闭(“卖出”,当=退出时)

您可以使用两个变量,一个作为买入信号,一个作为卖出信号

这是Tradingview上的默认策略示例:

//@version=4
strategy("My Strategy", overlay=true)

longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)
您可以将其转换为指示器,如下所示:

//@version=4
study("My Script", overlay=true)

var isLong = false
var isShort = false

buySignal = not isLong and crossover(sma(close, 14), sma(close, 28))        // only buy if we are not already long
sellSignal = not isShort and crossunder(sma(close, 14), sma(close, 28))     // only sell if we are not already short

if (buySignal)
    isLong := true
    isShort := false

if (sellSignal)
    isLong := false
    isShort := true

alertcondition(condition=buySignal, title="BUY", message="BUY")
alertcondition(condition=sellSignal, title="SELL", message="SELL")

plotshape(series=buySignal, text="BUY", style=shape.triangleup, color=color.green, location=location.belowbar, size=size.small)
plotshape(series=sellSignal, text="SELL", style=shape.triangledown, color=color.red, location=location.abovebar, size=size.small)
注意:您需要按照说明手动设置警报


谢谢您的帮助,但问题是将“我的条件”中包含的strategy.closedtrades属性转换为“研究”属性