首页 > 解决方案 > 买入订单执行是当前蜡烛的限价订单,而不是下一个蜡烛

问题描述

有一个问题是在下一个蜡烛上执行买单。我想准确地在当前蜡烛上的线上下订单,也就是标签所在的位置。

//@version=4
strategy("VWAP Pyramiding", overlay = true, precision = 6,
     initial_capital = 100000, currency = currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 16.66, pyramiding = 6,
     commission_type = strategy.commission.percent, commission_value = 0.02)

// —————————— Constants {

// ————— Color constants
var color C_COLOR1      = #42F5E3ff
var color C_COLOR2      = #38C7B8ff
var color C_COLOR3      = #3790BDff
var color C_COLOR4      = #375BBDff
var color C_COLOR5      = #8137BDff
var color C_COLOR6      = #BF2647ff
// }

// —————————— Inputs {

bool    i_showVWAP = input(true, "Show VWAP")

float   i_vwap1 = input(-7.3, "VWAP 1")
bool    i_buy1 = input(true, "Buy line")
bool    i_sell1 = input(false, "Sell line")

float   i_vwap2 = input(-8.7, "VWAP 2")
bool    i_buy2 = input(true, "Buy line")
bool    i_sell2 = input(false, "Sell line")

float   i_vwap3 = input(-10, "VWAP 3")
bool    i_buy3 = input(true, "Buy line")
bool    i_sell3 = input(false, "Sell line")

float   i_vwap4 = input(-4, "VWAP 4")
bool    i_buy4 = input(false, "Buy line")
bool    i_sell4 = input(true, "Sell line")

float   i_vwap5 = input(1, "VWAP 5")
bool    i_buy5 = input(false, "Buy line")
bool    i_sell5 = input(true, "Sell line")

float   i_vwap6 = input(4, "VWAP 6")
bool    i_buy6 = input(false, "Buy line")
bool    i_sell6 = input(true, "Sell line")
// }

// —————————— Functions {

// ————— Function for a repainting/non-repainting version of the HTF data
f_security(_sym, _res, _src, _rep) => security(_sym, _res, _src[not _rep and barstate.isrealtime ? 1 : 0])[_rep or barstate.isrealtime ? 0 : 1]

// ————— Function to check a strategy signal
f_isSignal(_src, _vwapRate, _down) =>
    _condition = _down ? _src < _vwapRate : crossunder(_src, _vwapRate)
    _condition and (barssince(_condition[1]) > 10 or na(barssince(_condition[1])))
// }

// —————————— Calculations {

start = f_security(syminfo.tickerid, "D", time, false)

newSession = iff(start > start[1], 1, 0)

vwapsum = 0.0
volumesum = 0.0
vwapsum := iff(newSession[1], hlc3 * volume, vwapsum[1] + hlc3 * volume)
volumesum := iff(newSession[1], volume, volumesum[1] + volume)
vwap_now = vwapsum / volumesum

vwap1 = vwap_now + vwap_now / 100 * i_vwap1
vwap2 = vwap_now + vwap_now / 100 * i_vwap2
vwap3 = vwap_now + vwap_now / 100 * i_vwap3
vwap4 = vwap_now + vwap_now / 100 * i_vwap4
vwap5 = vwap_now + vwap_now / 100 * i_vwap5
vwap6 = vwap_now + vwap_now / 100 * i_vwap6
// }

// —————————— Plots {

plot(i_showVWAP ? vwap_now : na, title = "VWAP", color = color.white)

plot(vwap1, title = "VWAP 1", color = C_COLOR1, linewidth = 2)
plot(vwap2, title = "VWAP 2", color = C_COLOR2, linewidth = 2)
plot(vwap3, title = "VWAP 3", color = C_COLOR3, linewidth = 2)
plot(vwap4, title = "VWAP 4", color = C_COLOR4, linewidth = 2)
plot(vwap5, title = "VWAP 5", color = C_COLOR5, linewidth = 2)
plot(vwap6, title = "VWAP 6", color = C_COLOR6, linewidth = 2)

tier1Buy = f_isSignal(low, vwap1, true) and i_buy1
tier2Buy = f_isSignal(low, vwap2, true) and i_buy2
tier3Buy = f_isSignal(low, vwap3, true) and i_buy3
tier4Buy = f_isSignal(low, vwap4, true) and i_buy4
tier5Buy = f_isSignal(low, vwap5, true) and i_buy5
tier6Buy = f_isSignal(low, vwap6, true) and i_buy6
tier1Sell = f_isSignal(low, vwap1, false) and i_sell1
tier2Sell = f_isSignal(low, vwap2, false) and i_sell2
tier3Sell = f_isSignal(low, vwap3, false) and i_sell3
tier4Sell = f_isSignal(low, vwap4, false) and i_sell4
tier5Sell = f_isSignal(low, vwap5, false) and i_sell5
tier6Sell = f_isSignal(low, vwap6, false) and i_sell6
    
plotshape(tier1Buy ? vwap1 : na, style = shape.labelup, text = "Buy 1", location = location.absolute, color = color.new(color.green, 0), textcolor = color.new(color.white, 0))
plotshape(tier2Buy ? vwap2 : na, style = shape.labelup, text = "Buy 2", location = location.absolute, color = color.new(color.green, 0), textcolor = color.new(color.white, 0))
plotshape(tier3Buy ? vwap3 : na, style = shape.labelup, text = "Buy 3", location = location.absolute, color = color.new(color.green, 0), textcolor = color.new(color.white, 0))
plotshape(tier4Buy ? vwap1 : na, style = shape.labelup, text = "Buy 4", location = location.absolute, color = color.new(color.green, 0), textcolor = color.new(color.white, 0))
plotshape(tier5Buy ? vwap2 : na, style = shape.labelup, text = "Buy 5", location = location.absolute, color = color.new(color.green, 0), textcolor = color.new(color.white, 0))
plotshape(tier6Buy ? vwap3 : na, style = shape.labelup, text = "Buy 6", location = location.absolute, color = color.new(color.green, 0), textcolor = color.new(color.white, 0))

plotshape(tier1Sell ? vwap1 : na, style = shape.labeldown, text = "Sell 1", location = location.absolute, color = color.new(color.red, 0), textcolor = color.new(color.white, 0))
plotshape(tier2Sell ? vwap2 : na, style = shape.labeldown, text = "Sell 2", location = location.absolute, color = color.new(color.red, 0), textcolor = color.new(color.white, 0))
plotshape(tier3Sell ? vwap3 : na, style = shape.labeldown, text = "Sell 3", location = location.absolute, color = color.new(color.red, 0), textcolor = color.new(color.white, 0))
plotshape(tier4Sell ? vwap4 : na, style = shape.labeldown, text = "Sell 4", location = location.absolute, color = color.new(color.red, 0), textcolor = color.new(color.white, 0))
plotshape(tier5Sell ? vwap5 : na, style = shape.labeldown, text = "Sell 5", location = location.absolute, color = color.new(color.red, 0), textcolor = color.new(color.white, 0))
plotshape(tier6Sell ? vwap6 : na, style = shape.labeldown, text = "Sell 6", location = location.absolute, color = color.new(color.red, 0), textcolor = color.new(color.white, 0))
// }

// —————————— Strategy Logic {

if tier1Buy or tier2Buy or tier3Buy or tier4Buy or tier5Buy or tier6Buy
    strategy.entry("Buy", strategy.long)

if tier1Sell or tier2Sell or tier3Sell or tier4Sell or tier5Sell or tier6Sell
    strategy.close("Buy")
// }

在此处输入图像描述

标签: pine-script

解决方案


推荐阅读