【问题标题】:Converting Pine Script Into Study?将 Pine 脚本转换为研究?
【发布时间】:2019-10-05 22:47:46
【问题描述】:

我正在尝试将 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")

任何帮助将不胜感激。

【问题讨论】:

    标签: pine-script


    【解决方案1】:

    您的问题源于这样一个事实,即当您使用 strategy.*() 参数(例如 loss=trail_offset= 等)时,Pine 无法自动将策略的代理模拟器逻辑转移到研究中。

    你有两个选择:

    1. 如果您的最终目标是生成警报以将订单提供给第三方订单执行应用程序,并且如果您的策略恰好使用固定的交易管理参数(您的情况似乎如此),那么您可以能够通过脚本生成的警报消息将这些参数转移到第三方的订单语法中,从而将交易管理的这一部分委托给第三方应用程序。

    2. 在 Pine 中手动对您的所有交易管理进行编码,使其在研究和策略模式下均有效,并且仅依赖于 strategy.*() 调用来让您的策略使用简单、通用的市场订单执行没有您当前使用的交易管理strategy.*() 参数。一旦你实现了这一点,在学习模式和策略模式之间进行转换就是一个简单的问题,即注释/取消注释几行在学习和策略脚本模式之间不兼容的代码。

      PineCoders Backtesting & Trading Engine 就是一个很好的例子:https://www.tradingview.com/script/dYqL95JB-Backtesting-Trading-Engine-PineCoders/

      一个更简单的混合代码示例,可以轻松在策略和研究模式之间转换,但只包含基本的交易管理逻辑是这样的:https://www.tradingview.com/script/pjZKWnHl-Volatility-System-by-Wilder-LucF/

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

    【讨论】:

      猜你喜欢
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 2021-06-30
      • 2021-11-07
      相关资源
      最近更新 更多