Pinescript (торговый обзор) Стоп-лосс не срабатывает при тестировании на истории - PullRequest
0 голосов
/ 25 января 2020

У меня есть стратегия, которая должна продаваться при достижении 1 условия или при достижении SL, но мои тесты на спине показывают, что торговля продолжается, даже если SL достигнут.

//@version=4
strategy(title="Extreme highs and lows", calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.1,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Backtest Input
FromYear = input(2015, "Backtest Start Year")
FromMonth = input(1, "Backtest Start Month")
FromDay = input(1, "Backtest Start Day")
ToYear = input(2999, "Backtest End Year")
ToMonth = input(1, "Backtest End Month")
ToDay = input(1, "Backtest End Day")

// Backtest Setting
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false 


// Input options
hiLen = input(title="High Length", type=input.integer, defval=20)
loLen = input(title="Low Length", type=input.integer, defval=20)

// SL input
SL =  input(defval=2.0, title='Stop Loss %', type=input.float)

// Stop loss setting
StopLossLong = strategy.position_avg_price * (1 - SL/100)
StopLossShort = strategy.position_avg_price * (1 + SL/100)

// Calculate values
hiHighs = highest(high, hiLen)[1]
loLows = lowest(low, loLen)[2]

// Plot values on the chart
plot(series=hiHighs, color=color.green, linewidth=2)
plot(series=loLows, color=color.red, linewidth=2)

// Highlight new highs and lows with
// a coloured background
bgColour = high > hiHighs ? color.teal : low < loLows ? color.maroon : na

bgcolor(color=bgColour, transp=90)

//Trade condition
long= close > hiHighs
short= close < loLows
// StopLoss Long Signal
SLLongCondition = crossunder(close, StopLossLong)
// StopLoss Short Signal
SLShortCondition = crossover(close, StopLossShort)

// Strategy
strategy.entry("long", strategy.long, when = long and window())
strategy.close("long", when = short or SLLonCondition and window())
strategy.close("long", when = SLLongCondition and window())

// Plot Stoploss
conditionLong = barssince(long)
plot(conditionLong ? StopLossLong : na, color=color.red, style=plot.style_linebr, linewidth=2)

Я пробовал без этого Строка также: Strategy.close ("long", когда = SLLongCondition и window ())

...