Type/to search
6
Follow
4
Followers
Тестирование ТВ-скриптов без торговли
Help
Created 2024-07-26 12:13:39  Updated 2024-07-30 16:36:42
 1
 1184

Этот сценарий Pine показывался нормально на телевизоре и мог иметь открытые и закрытые позиции, а также результаты отчета, и для Яо Цзэня на платформе FMZ было выполнено отзыв без реакции, без сообщений об ошибках, но и без сделок

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © SpeculatioEMA + ADX Strategy with Partial Take Profit$0nLab //@version=5 strategy("分仓止盈 ADX+Vegas", pyramiding=5) //--------------------------------------------------5EMA settings---------------------------------------------------- //设置用户设定(set user input) group1 = "EMA1" group2 = "EMA2" group3 = "EMA3" group4 = "EMA4" group5 = "EMA5" enableEMA1 = input.bool(false, "Disable EMA1", tooltip="禁用此条EMA", group=group1) enableEMA2 = input.bool(false, "Disable EMA2", tooltip="禁用此条EMA", group=group2) enableEMA3 = input.bool(false, "Disable EMA3", tooltip="禁用此条EMA", group=group3) enableEMA4 = input.bool(false, "Disable EMA4", tooltip="禁用此条EMA", group=group4) enableEMA5 = input.bool(false, "Disable EMA5", tooltip="禁用此条EMA", group=group5) Length1 = input.int(12, "EMA Length 1", tooltip="请输入恰当的EMA长度", group=group1) Length2 = input.int(144, "EMA Length 2", tooltip="请输入恰当的EMA长度", group=group2) Length3 = input.int(169, "EMA Length 3", tooltip="请输入恰当的EMA长度", group=group3) Length4 = input.int(576, "EMA Length 4", tooltip="请输入恰当的EMA长度", group=group4) Length5 = input.int(676, "EMA Length 5", tooltip="请输入恰当的EMA长度", group=group5) //计算ema值(get ema values) emaValue1 = ta.ema(close, Length1) if enableEMA1 emaValue1 := na emaValue2 = ta.ema(close, Length2) if enableEMA2 emaValue2 := na emaValue3 = ta.ema(close, Length3) if enableEMA3 emaValue3 := na emaValue4 = ta.ema(close, Length4) if enableEMA4 emaValue4 := na emaValue5 = ta.ema(close, Length5) if enableEMA5 emaValue5 := na //绘出(draw onto the chart) plot(emaValue1, "EMA1", color=color.yellow, force_overlay=true) plot(emaValue2, "EMA2", color=color.white, force_overlay=true) plot(emaValue3, "EMA3", color=color.white, force_overlay=true) plot(emaValue4, "EMA4", color=#fb406c, force_overlay=true) plot(emaValue5, "EMA5", color=#fb406c, force_overlay=true) //-----------------------------------------------------------adx settings---------------------------------------------------- len = input(14, "Length") th = input(30, "Threshold") TrueRange = math.max(math.max(high - low, math.abs(high - nz(close[1]))), math.abs(low - nz(close[1]))) high_change = ta.change(high) low_change = ta.change(low) DirectionalMovementPlus = high_change > low_change ? math.max(high_change, 0) : 0 DirectionalMovementMinus = low_change > high_change ? math.max(-low_change, 0) : 0 var SmoothedTrueRange = 0.0 SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1]) / len) + TrueRange var SmoothedDirectionalMovementPlus = 0.0 SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1]) / len) + DirectionalMovementPlus var SmoothedDirectionalMovementMinus = 0.0 SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1]) / len) + DirectionalMovementMinus DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100 DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100 DX = math.abs(DIPlus - DIMinus) / (DIPlus + DIMinus) * 100 ADX = ta.sma(DX, len) plot(ADX, color=color.aqua, title="ADX") hline(th, "Threshold", color=color.white) //----------------------------------------------------------STRATEGY settings--------------------------------------------------------- //vegas过滤器 vegasLong = math.min(emaValue2, emaValue3) > math.max(emaValue4, emaValue5) vegasShort = math.max(emaValue2, emaValue3) < math.min(emaValue4, emaValue5) //蜡烛过滤器 lowDis = math.abs(low - math.max(emaValue2, emaValue3)) highDis = math.abs(math.min(emaValue2, emaValue3) - high) baseDis = math.abs(emaValue2 - emaValue3) longCandle = lowDis <= baseDis shortCandle = highDis <= baseDis //设置储存变量 var float t_target1 = na var float t_target3 = na var float t_stop = na var longTrade = 0 var shortTrade = 0 //设置买入卖出信号 longSignal = vegasLong and longCandle and longTrade <= 1 and not longCandle[1] and ADX > th shortSignal = vegasShort and shortCandle and shortTrade <= 1 and not shortCandle[1] and ADX > th //设置止损点位 rr1 = input.float(1, "Risk Reward 1", tooltip="改变风险回报比 1") rr2 = input.float(2, "Risk Reward 2", tooltip="改变风险回报比 2") longStop = ta.lowest(low, 30) shortStop = ta.highest(high, 30) longDistance = close - longStop shortDistance = shortStop - close longTarget1 = close + (longDistance * rr1) longTarget3 = close + (longDistance * rr2) shortTarget1 = close - (shortDistance * rr1) shortTarget3 = close - (shortDistance * rr2) //设置入场条件 rpt = input.float(1, "Risk Per Trade%", tooltip="设定单笔交易风险(%)") if longSignal and barstate.isconfirmed t_stop := longStop t_target1 := longTarget1 t_target3 := longTarget3 longTrade += 1 shortTrade := 0 positionSize = math.floor((strategy.equity * (rpt / 100)) / (close - t_stop)) strategy.entry(id="Long", direction=strategy.long, qty=positionSize) if shortSignal and barstate.isconfirmed t_stop := shortStop t_target1 := shortTarget1 t_target3 := shortTarget3 longTrade := 0 shortTrade += 1 positionSize = math.floor((strategy.equity * (rpt / 100)) / (t_stop - close)) strategy.entry(id="Short", direction=strategy.short, qty=positionSize) //设置出场条件 if strategy.position_size > 0 strategy.exit("Long Exit 1", "Long", limit=t_target1, stop=t_stop, qty_percent=50) strategy.exit("Long Exit 3", "Long", limit=t_target3, stop=t_stop) if strategy.position_size < 0 strategy.exit("Short Exit 1", "Short", limit=t_target1, stop=t_stop, qty_percent=50) strategy.exit("Short Exit 3", "Short", limit=t_target3, stop=t_stop) plotshape(longSignal, "Long Signal", shape.triangleup, location.abovebar, color.green, force_overlay=true) plotshape(shortSignal, "Short Signal", shape.triangleup, location.abovebar, color.red, force_overlay=true) plot(strategy.position_size != 0 ? t_stop : na, style=plot.style_linebr, force_overlay=true, color=color.red) plot(strategy.position_size != 0 ? t_target1 : na, style=plot.style_linebr, force_overlay=true, color=color.green) plot(strategy.position_size != 0 ? t_target3 : na, style=plot.style_linebr, force_overlay=true, color=color.blue)
Related Recommendations
Comment
All comments (1)

    您好,可以再发一下代码,贴代码格式为:

    ```
    代码
    ```

    注意是符号`
    不是符号'

    否则代码是没格式的,没法测试。

    2 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)