Pine script 研究错误消息:输入订单的数量必须是有效的,输入值为-834444.22394394

Pine script 研究错误消息:输入订单的数量必须是有效的,输入值为-834444.22394394,pine-script,algorithmic-trading,Pine Script,Algorithmic Trading,大家好,这里是我们的社区 需要有关此错误消息的帮助。我不明白我的初始资本被设置为1000,我的进入值怎么可能是负值。请参阅下面的详细信息 strategy(" STOCH RSI Call-outs Multi-resolution", overlay=true, pyramiding=2, commission_type=strategy.commission.percent, commission_value=0.07, default_qty_type=strategy

大家好,这里是我们的社区

需要有关此错误消息的帮助。我不明白我的初始资本被设置为1000,我的进入值怎么可能是负值。请参阅下面的详细信息

strategy(" STOCH RSI Call-outs Multi-resolution", overlay=true, pyramiding=2, commission_type=strategy.commission.percent, commission_value=0.07, default_qty_type=strategy.cash, initial_capital=100, slippage=2, precision=0)

// Risk management
multiplier = input(3.5, "SL Mutiplier", minval=1, step=0.1)
ATR_period = input(6,"ATR period", minval=1, step=1)
RiskPercent = input(0.06, title="Max Risk Percent", type=input.float, minval=0.01, step=0.01)

// Strategy
long_signal = crossover(k,d) and crossover(k2,d2) and crossover(k3,d3) 
entry_long = long_signal
entry_price_long =valuewhen(entry_long,close,0)
SL_floating_long = entry_price_long - multiplier*Atr(ATR_period)
exit_long = close < SL_floating_long 
exit_long2 = crossunder(k,d) and crossunder(k2,d2) and crossunder(k3,d3)
DrawDwn= input(30,title="Max Drawdow Percentage",minval=1,step=0.1)
strategy.risk.max_drawdown(value=DrawDwn, type=strategy.percent_of_equity)
MaxPositionRisk =  strategy.equity * RiskPercent
size = MaxPositionRisk

//Back test period
timeInRange() =>
    time > timestamp(syminfo.timezone,fromYear, fromMonth, fromDay, 00, 00) and time < timestamp(syminfo.timezone, toYear, toMonth, toDay, 23, 59) ? true : false

if timeInRange()
    strategy.entry("long",long=true,qty=size, comment="Insert Enter Long Comment",when=entry_long)
    strategy.exit("TP1","long", qty_percent=long_tp1_qty, limit=long_take_level_1)//, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
    strategy.exit("TP2", qty_percent=long_tp2_qty, limit=long_take_level_2) //, trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
    strategy.close(id="long", when=exit_long, comment="Exit Long")
    strategy.close(id="long",when=exit_long2,comment="")
策略(“STOCH RSI调用多分辨率”,叠加=true,聚合=2,佣金类型=strategy.commission.percent,佣金值=0.07,默认数量类型=strategy.cash,初始资本=100,滑移=2,精度=0)
//风险管理
乘法器=输入(3.5,“SL乘法器”,最小值=1,步长=0.1)
ATR_周期=输入(6,“ATR周期”,最小值=1,步长=1)
风险百分比=输入(0.06,title=“最大风险百分比”,type=input.float,minval=0.01,step=0.01)
//策略
长_信号=交叉(k,d)和交叉(k2,d2)以及交叉(k3,d3)
入口长=长信号
分录\价格\长=值何时(分录\长,结束,0)
SL_floating_long=输入价格_long-乘数*Atr(Atr_期间)
退出长=关闭
时间>时间戳(syminfo.timezone,fromYear,fromMonth,fromDay,00,00)和时间<时间戳(syminfo.timezone,toYear,toMonth,toDay,23,59)?对:错
如果timeInRange()
策略条目(“long”,long=true,qty=size,comment=“Insert Enter long comment”,when=entry\u long)
策略.退出(“TP1”,“长”,数量百分比=长,数量,限制=长,获取水平/,跟踪点=入口价格长*跟踪长/符号信息.mintick,跟踪偏移=入口价格长*跟踪长/符号信息.mintick)
策略.退出(“TP2”,数量百分比=长时间TP2,限制=长时间获取级别2)/,跟踪点=进入价格长时间*跟踪长时间/syminfo.mintick,跟踪偏移量=进入价格长时间*跟踪长时间/syminfo.mintick)
策略关闭(id=“long”,when=exit\u long,comment=“exit long”)
策略.关闭(id=“long”,when=exit_long2,comment=”“)

您是否确认该条目导致了此错误?long_tp1_数量在哪里计算?在脚本底部添加:
plotchar(size,'size','')
plotchar(long_tp1_数量,'tp1','')
plotchar(long_tp2_数量,'tp2','')
然后注释掉策略部分并检查数据窗口中的这些值。@bajaco感谢您的帮助。这是下面缺少的部分。与此同时,我将按照刚才所说的那样画它。干杯//多头获利和止损多头获利输入(2,title='多头获利1%,步长=0.1)/100多头获利输入(10,title='多头获利1%,步长=1)多头获利输入(5,title='多头获利2%,步长=0.1)/100多头获利输入(50,title='多头获利2%,步长=1)long_take_level_1=strategy.position_avg_price*(1+long_tp1_inp)long_take_level_2=strategy.position_avg_price*(1+long_tp2_inp)@hajaco我已经按照建议绘制了变量,它不返回任何值,那么在计算该值时存在某种问题。如果用于创建该值的值在某个点为na,则可能会导致该值。独立绘制用于创建变量的所有变量。