Pine script 将松树脚本转换为学习?

Pine script 将松树脚本转换为学习?,pine-script,Pine Script,我正在尝试将TradingView策略转换为带有警报的研究。我对这个想法比较陌生。我已经创建了图表,以便长条目和短条目显示在图表上,然后我创建了与这些条目对应的警报。但我的问题出现在这里,因为我找不到在哪里创建相应的退出警报 //@version=3 study("Generalized SSL Backtest w/ TSSL", shorttitle="Judgement", overlay=true) lb = input(10, title="Lb", minval=1) maType

我正在尝试将TradingView策略转换为带有警报的研究。我对这个想法比较陌生。我已经创建了图表,以便长条目和短条目显示在图表上,然后我创建了与这些条目对应的警报。但我的问题出现在这里,因为我找不到在哪里创建相应的退出警报

//@version=3
study("Generalized SSL Backtest w/ TSSL", shorttitle="Judgement", overlay=true)

lb = input(10, title="Lb", minval=1)
maType = input(type=string, defval="SMA", title="MA Type", options=["SMA","EMA","HMA","McG","WMA","Tenkan"])

fixedSL = input(title="SL Activation", defval=300)
trailSL = input(title="SL Trigger", defval=1)
fixedTP = input(title="TP Activation", defval=150)
trailTP = input(title="TP Trigger", defval=1)

ma(t,sig,len) =>
    sss=na
    if t =="SMA"
        sss := sma(sig,len)
    if t == "EMA"
        sss := ema(sig,len)
    if t == "HMA"
        sss := hma(sig,len)
    if t == "McG" // Mc Ginley
        sss := mcg(sig,len)
    if t == "Tenkan"
        sss := tenkan(sig,len)
    if t == "WMA"
        sss := wma(sig,len)
    sss

base(mah, mal) =>
    bbb = na
    inChannel = close<mah and close>mal
    belowChannel = close<mah and close<mal
    bbb := inChannel? bbb[1]: belowChannel? -1: 1
    uuu = bbb==1? mal: mah
    ddd = bbb==1? mah: mal
    [uuu, ddd]

maH = ma(maType, high, lb)
maL = ma(maType, low, lb)

[up, dn] = base(maH,maL)

plot(up, title="High MA", color=lime, linewidth=3)
plot(dn, title="Low MA", color=orange, linewidth=3)

long = crossover(dn,up)
short = crossover(up,dn)

// === STRATEGY - LONG POSITION EXECUTION ===
//strategy.entry("Long", strategy.long, when= long and startTimeOk())
//strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP) 
//strategy.exit("Exit", when= short)
// === STRATEGY - SHORT POSITION EXECUTION ===
//strategy.entry("Short", strategy.short, when= short and startTimeOk())
//strategy.exit("Exit", qty_percent = 100, loss=fixedSL, trail_offset=trailTP, trail_points=fixedTP)
//strategy.exit("Exit", when= long) 


plotchar(long, char = "Long", color = green)
plotchar(short, char = "Short", color = red)

alertcondition(long, "ENTRY LONG", "ENTRY LONG")
alertcondition(short, "ENTRY SHORT", "ENTRY SHORT")
/@version=3
研究(“通用SSL回溯测试w/TSSL”,shorttitle=“判断”,overlay=true)
lb=输入(10,title=“lb”,minval=1)
maType=input(type=string,defval=“SMA”,title=“MA type”,options=[“SMA”,“EMA”,“HMA”,“McG”,“WMA”,“Tenkan”])
fixedSL=输入(title=“SL激活”,deffal=300)
trailSL=输入(title=“SL触发器”,defval=1)
fixedTP=输入(title=“TP激活”,deffal=150)
trailTP=输入(title=“TP触发器”,deffal=1)
ma(t,sig,len)=>
sss=na
如果t==“SMA”
sss:=sma(信号,透镜)
如果t==“EMA”
sss:=ema(信号,透镜)
如果t==“HMA”
sss:=hma(sig,len)
如果t==“McG”//Mc Ginley
sss:=mcg(sig,len)
如果t==“Tenkan”
sss:=tenkan(sig,len)
如果t==“WMA”
sss:=wma(信号,透镜)
sss
基准(毫安时,微升)=>
bbb=na
inChannel=closemal

belowChannel=close您的问题源于这样一个事实,即在Pine中,当您使用
strategy.*()
参数,如
loss=
trail\u offset=
等时,无法自动将策略的代理仿真器逻辑转移到研究中

你有两个选择:

  • 如果您的最终目标是生成警报以将订单提供给第三方订单执行应用程序,并且您的策略碰巧使用了固定的交易管理参数(就像您的情况一样)然后,您可以通过脚本生成的警报消息将这些参数转换为第三方的订单语法,从而将交易管理的这一部分委托给第三方应用程序

  • 在Pine中手动编写所有交易管理代码,使其在研究模式和策略模式下工作,并且仅依赖于strategy.*()调用,使您的策略执行简单、通用的市场订单,而不使用您当前使用的任何交易管理strategy.*()参数。一旦你做到了这一点,在学习和策略模式之间的转换就是简单的注释/取消注释几行代码,这些代码在学习和策略脚本模式之间是不兼容的

    这方面的一个很好的例子是PineCoders的回溯测试和交易引擎:

    一个简单的混合代码示例,可以轻松地在策略和研究模式之间转换,但只包含基本的交易管理逻辑,如下所示:

  • 注意:即将发布的警报动态消息功能将允许您使用系列值(变量信息)生成警报。虽然这仍然不允许将代理仿真器逻辑自动转换为研究,但它应该使转换更容易