Kịch bản này của Pine được hiển thị trên TV và có thể mở giao dịch, cũng có kết quả kiểm tra lại, không có phản ứng, không có báo cáo sai nhưng cũng không có giao dịch.
// 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)
Những nhà phát minh định lượng - những giấc mơ nhỏXin chào, bạn có thể gửi lại mã và dán theo định dạng: ` ` ` Mã ` ` ` Chú ý là ký hiệu. Không phải biểu tượng. Nếu không, mã không được định dạng và không thể kiểm tra.