이 전략은 MACD, RSI 및 스토카스틱 지표를 사용하여 가격 동력 방향을 결정하고 동력 브레이크오웃 지점에서 긴 또는 짧은 엔트리를 만드는 전략입니다. 트렌드를 판단하기 위해 여러 지표를 결합함으로써 단일 지표의 잘못된 신호 비율을 줄이고 중장기 가격 트렌드를 효과적으로 파악 할 수 있습니다.
이 전략은 가격의 트렌드 방향을 결정하기 위해 MACD, RSI 및 스토카스틱 지표를 사용합니다. MACD의 DIFF 라인이 DEAL 라인의 위를 넘을 때, RSI는 50보다 높고, STOCH의 빠른 라인이 50보다 높을 때, 상승 추세 형성으로 판단되며, 따라서 모든 자본이 하루의 최고 가격으로 다음날의 개장 가격에 길게 갈 것입니다. 반대로, MACD의 DIFF 라인이 DEAL 라인의 아래를 넘을 때, RSI는 50 미만이며, STOCH의 빠른 라인은 또한 50 미만일 때, 하락 추세 형성으로 판단되며, 따라서 다음 날 자본의 모든 범위와 함께 하루의 최저 가격으로 오픈 가격에 단축 할 것입니다. 수익 및 손실은 지난 7 일 동안의 가격 변동에 따라 계산되며, 이익/손실 비율은 사용자 정의 할 수 있습니다.
포지션에 진입한 후 세 가지 지표 중 어느 하나에서 반전 신호가 발생하면 트렌드가 반전되어 현재 포지션을 종료해야한다는 것을 의미합니다. 또한 2020년 3월 전체 달을 건너뛰는 특별한 시간 조건 필터를 설정하여 극심한 시장 영향을 피합니다.
개선 방향:
전체적으로 이것은 전형적인 트렌드 다음 전략이다. 트렌드 엔트리를 결정하기 위해 여러 지표를 사용하며, 트렌드 엔딩을 판단하기 위해 역전 신호를 사용하며, 트렌드 추적 및 역전 메커니즘을 결합한다. 그러나 전략 자체는 또한 모든 전략 매개 변수를 최적화하고 개선하기 위해 많은 백테스팅이 필요한 잘못된 매개 변수 설정과 지연 문제를 가지고 있다.
요약하자면, 이 전략의 논리는 명확하며, 사용된 지표도 전형적이다. 최적화와 위험 통제의 일부 세부 사항에서 잘 수행되며, 실제 세계에서 적용 가능한 양 전략이 될 수 있다. 그러나 전략의 수익/부수 비율을 전문적인 수준으로 끌어올리기 위해 추가 테스트와 최적화를 필요로하는 완벽함에서 여전히 몇 가지 격차가 있다. 지속적인 최적화와 업데이트로, 이 전략은 장기적으로 추적할 가치가 있는 전략이 될 수 있다.
/*backtest start: 2023-10-07 00:00:00 end: 2023-11-06 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=4 // Backtest the power x strategy. The power x strategy is develop by Markus Heitkoetter and Rockwell Trading. // This script shows the return for a given stock for with the defined date range with a fixed captial of $10,000 strategy("PowerX Test", overlay=true, initial_capital=10000) // ####################### Start of User Inputs ####################### // From Date Inputs fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2019, title = "From Year", minval = 1970) // To Date Inputs toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2021, title = "To Year", minval = 1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true // Risk/Reward Inputs riskFactor = input(defval = 1.5, title = "risk", minval = 1) rewardFactor = input(defval = 3.0, title = "reward", minval = 1) // Days to ignore due to specail market conditon (ie. covid-19 market crash) // Calculate start/end skip date and time condition startSkipDate = timestamp(2020, 3, 1, 00, 00) finishSkipDate = timestamp(2020, 3, 31, 00, 00) time_cond_skip = time >= startSkipDate and time <= finishSkipDate // Long and Short Inputs hasLong = input(defval = true, title = "test long") hasShort = input(defval = true, title = "test short") // ####################### End of User Inputs ####################### // ####################### Start of Indicators ####################### [macdLine, signalLine, histLine] = macd(close, 12, 26, 9) rsiLine = rsi(close, 7) stochLine = sma(sma(stoch(close, high, low, 14),3),3) signal = macdLine > signalLine and rsiLine > 50 and stochLine > 50 ? "buy" : macdLine <= signalLine and rsiLine <= 50 and stochLine <= 50 ? "sell" : "none" // Average daily range for 7 days thishigh = security(syminfo.tickerid, 'D', high) thislow = security(syminfo.tickerid, 'D', low) length = 7 adr = (sma(thishigh,length)-sma(thislow,length)) plotchar(adr, "ADR", "") // ####################### End of Indicators ####################### strategy.initial_capital = 50000 // First day the stock changed momentum. long = signal == "buy" and signal[1] != "buy" and hasLong short = signal == "sell" and signal[1] != "sell" and hasShort sideway = signal == "none" and signal[1] != "none" if (time_cond and not time_cond_skip) // ####################### Start of Long Entry ####################### // Calculate how many shares to buy based on captial qty = round(strategy.initial_capital / high) // Note: TradingView uses a broker emulator when running strategies. Order are only filled on the next bar. // Enter long on the day after first green bar strategy.entry("Long entry", strategy.long, qty = qty, stop = high, when = long) strategy.cancel("Long entry", when = not long) // TODO: Improve the crazy if statments... // Handle the case where first green hgih is reached after 2nd green, up to 11 days after if (not long and signal == "buy" and strategy.opentrades == 0) // reach first green high 11 days after first green if (signal[11] != "buy" and signal[10] == "buy" and signal[9] == "buy" and signal[8] == "buy" and signal[7] == "buy" and signal[6] == "buy" and signal[5] == "buy" and signal[4] == "buy" and signal[3] == "buy" and signal[2] == "buy" and signal[1] == "buy" and high[1] < high[9] and high[2] < high[9] and high [3] < high[9] and high [4] < high[9] and high [5] < high[9] and high[6] < high[9] and high[7] < high[9] and high[8] < high[9]) strategy.entry("Long entry", strategy.long, qty = strategy.initial_capital / high[10], stop = high[10]) // reach first green high 10 days after first green if (signal[10] != "buy" and signal[9] == "buy" and signal[8] == "buy" and signal[7] == "buy" and signal[6] == "buy" and signal[5] == "buy" and signal[4] == "buy" and signal[3] == "buy" and signal[2] == "buy" and signal[1] == "buy" and high[1] < high[8] and high[2] < high[8] and high [3] < high[8] and high [4] < high[8] and high [5] < high[8] and high[6] < high[8] and high[7] < high[8]) strategy.entry("Long entry", strategy.long, qty = strategy.initial_capital / high[9], stop = high[9]) // reach first green high 9 days after first green if (signal[9] != "buy" and signal[8] == "buy" and signal[7] == "buy" and signal[6] == "buy" and signal[5] == "buy" and signal[4] == "buy" and signal[3] == "buy" and signal[2] == "buy" and signal[1] == "buy" and high[1] < high[7] and high[2] < high[7] and high [3] < high[7] and high [4] < high[7] and high [5] < high[7] and high[6] < high[7]) strategy.entry("Long entry", strategy.long, qty = strategy.initial_capital / high[8], stop = high[8]) // reach first green high 8 days after first green if (signal[8] != "buy" and signal[7] == "buy" and signal[6] == "buy" and signal[5] == "buy" and signal[4] == "buy" and signal[3] == "buy" and signal[2] == "buy" and signal[1] == "buy" and high[1] < high[6] and high[2] < high[6] and high [3] < high[6] and high [4] < high[6] and high [5] < high[6]) strategy.entry("Long entry", strategy.long, qty = strategy.initial_capital / high[7], stop = high[7]) // reach first green high 7 days after first green if (signal[7] != "buy" and signal[6] == "buy" and signal[5] == "buy" and signal[4] == "buy" and signal[3] == "buy" and signal[2] == "buy" and signal[1] == "buy" and high[1] < high[6] and high[2] < high[6] and high [3] < high[6] and high [4] < high[6] and high [5] < high[6]) strategy.entry("Long entry", strategy.long, qty = strategy.initial_capital / high[6], stop = high[6]) // reach first green high 6 days after first green if (signal[6] != "buy" and signal[5] == "buy" and signal[4] == "buy" and signal[3] == "buy" and signal[2] == "buy" and signal[1] == "buy" and high[1] < high[5] and high[2] < high[5] and high [3] < high[5] and high [4] < high[5]) strategy.entry("Long entry", strategy.long, qty = strategy.initial_capital / high[5], stop = high[5]) // reach first green high 5 days after first green if (signal[5] != "buy" and signal[4] == "buy" and signal[3] == "buy" and signal[2] == "buy" and signal[1] == "buy" and high[1] < high[4] and high[2] < high[4] and high [3] < high[4]) strategy.entry("Long entry", strategy.long, qty = strategy.initial_capital / high[4], stop = high[4]) // reach first green high 4 days after first green if (signal[4] != "buy" and signal[3] == "buy" and signal[2] == "buy" and signal[1] == "buy" and high[1] < high[3] and high[2] < high[3]) strategy.entry("Long entry", strategy.long, qty = strategy.initial_capital / high[3], stop = high[3]) // reach first green high 3 days after first green if (signal[3] != "buy" and signal[2] == "buy" and signal[1] == "buy" and high[1] < high[2]) strategy.entry("Long entry", strategy.long, qty = strategy.initial_capital / high[2], stop = high[2]) // reach first green high 2 days after first green if (signal[2] != "buy" and signal[1] == "buy") strategy.entry("Long entry", strategy.long, qty = strategy.initial_capital / high[1], stop = high[1]) // Exit when stopped out or hitted profit target // Bracket order for entry 1 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] != "buy") long_stop_level = strategy.position_avg_price - (adr[1] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[1] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 2 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] == "buy" and signal[3] != "buy") long_stop_level = strategy.position_avg_price - (adr[2] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[2] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 3 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] == "buy" and signal[3] == "buy" and signal[4] != "buy") long_stop_level = strategy.position_avg_price - (adr[3] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[3] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 4 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] == "buy" and signal[3] == "buy" and signal[4] == "buy" and signal[5] != "buy") long_stop_level = strategy.position_avg_price - (adr[4] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[4] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 5 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] == "buy" and signal[3] == "buy" and signal[4] == "buy" and signal[5] == "buy" and signal[6] != "buy") long_stop_level = strategy.position_avg_price - (adr[5] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[5] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 6 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] == "buy" and signal[3] == "buy" and signal[4] == "buy" and signal[5] == "buy" and signal[6] == "buy" and signal[7] != "buy") long_stop_level = strategy.position_avg_price - (adr[6] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[6] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 7 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] == "buy" and signal[3] == "buy" and signal[4] == "buy" and signal[5] == "buy" and signal[6] == "buy" and signal[7] == "buy" and signal[8] != "buy") long_stop_level = strategy.position_avg_price - (adr[7] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[7] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 8 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] == "buy" and signal[3] == "buy" and signal[4] == "buy" and signal[5] == "buy" and signal[6] == "buy" and signal[7] == "buy" and signal[8] == "buy" and signal[9] != "buy") long_stop_level = strategy.position_avg_price - (adr[8] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[8] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 9 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] == "buy" and signal[3] == "buy" and signal[4] == "buy" and signal[5] == "buy" and signal[6] == "buy" and signal[7] == "buy" and signal[8] == "buy" and signal[9] == "buy" and signal[10] != "buy") long_stop_level = strategy.position_avg_price - (adr[9] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[9] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 10 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] == "buy" and signal[3] == "buy" and signal[4] == "buy" and signal[5] == "buy" and signal[6] == "buy" and signal[7] == "buy" and signal[8] == "buy" and signal[9] == "buy" and signal[10] == "buy" and signal[11] != "buy") long_stop_level = strategy.position_avg_price - (adr[10] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[10] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 11 day after 1st green if (signal == "buy" and signal[1] == "buy" and signal[2] == "buy" and signal[3] == "buy" and signal[4] == "buy" and signal[5] == "buy" and signal[6] == "buy" and signal[7] == "buy" and signal[8] == "buy" and signal[9] == "buy" and signal[10] == "buy" and signal[11] == "buy" and signal[12] != "buy") long_stop_level = strategy.position_avg_price - (adr[11] * riskFactor) long_profit_level = strategy.position_avg_price + (adr[11] * rewardFactor) strategy.exit("TP/SL", "Long entry", stop=long_stop_level, limit=long_profit_level) // ####################### End of Long Entry ####################### // ####################### Start of Short Entry ####################### // Enter short on the day after first red bar qty_short = strategy.initial_capital / low strategy.entry("Short entry", strategy.short, qty = qty_short, stop = low, when = short) strategy.cancel("Short entry", when = not short) // TODO: Improve the crazy if statments... // Handle the case where first red low is reached after 2nd red, up to 11 days after if (not short and signal == "sell" and strategy.opentrades == 0) // reach first red low 11 days after if (signal[11] != "sell" and signal[10] == "sell" and signal[9] == "sell" and signal[8] == "sell" and signal[7] == "sell" and signal[6] == "sell" and signal[5] == "sell" and signal[4] == "sell" and signal[3] == "sell" and signal[2] == "sell" and signal[1] == "sell" and low[1] > low[10] and low[2] > low[10] and low[3] > low[10] and low[4] > low[10] and low[5] > low[10] and low[6] > low[10] and low[7] > low[10] and low[8] > low[10] and low[9] > low[10]) strategy.entry("Short entry", strategy.short, qty = strategy.initial_capital / low[10], stop = low[10]) // reach first red low 10 days after if (signal[10] != "sell" and signal[9] == "sell" and signal[8] == "sell" and signal[7] == "sell" and signal[6] == "sell" and signal[5] == "sell" and signal[4] == "sell" and signal[3] == "sell" and signal[2] == "sell" and signal[1] == "sell" and low[1] > low[9] and low[2] > low[9] and low[3] > low[9] and low[4] > low[9] and low[5] > low[9] and low[6] > low[9] and low[7] > low[9] and low[8] > low[9]) strategy.entry("Short entry", strategy.short, qty = strategy.initial_capital / low[9], stop = low[9]) // reach first red low 9 days after if (signal[9] != "sell" and signal[8] == "sell" and signal[7] == "sell" and signal[6] == "sell" and signal[5] == "sell" and signal[4] == "sell" and signal[3] == "sell" and signal[2] == "sell" and signal[1] == "sell" and low[1] > low[8] and low[2] > low[8] and low[3] > low[8] and low[4] > low[8] and low[5] > low[8] and low[6] > low[8] and low[7] > low[8]) strategy.entry("Short entry", strategy.short, qty = strategy.initial_capital / low[8], stop = low[8]) // reach first red low 8 days after if (signal[8] != "sell" and signal[7] == "sell" and signal[6] == "sell" and signal[5] == "sell" and signal[4] == "sell" and signal[3] == "sell" and signal[2] == "sell" and signal[1] == "sell" and low[1] > low[7] and low[2] > low[7] and low[3] > low[7] and low[4] > low[7] and low[5] > low[7] and low[6] > low[7]) strategy.entry("Short entry", strategy.short, qty = strategy.initial_capital / low[7], stop = low[7]) // reach first red low 7 days after if (signal[7] != "sell" and signal[6] == "sell" and signal[5] == "sell" and signal[4] == "sell" and signal[3] == "sell" and signal[2] == "sell" and signal[1] == "sell" and low[1] > low[6] and low[2] > low[6] and low[3] > low[6] and low[4] > low[6] and low[5] > low[6]) strategy.entry("Short entry", strategy.short, qty = strategy.initial_capital / low[6], stop = low[6]) // reach first red low 6 days after if (signal[6] != "sell" and signal[5] == "sell" and signal[4] == "sell" and signal[3] == "sell" and signal[2] == "sell" and signal[1] == "sell" and low[1] > low[5] and low[2] > low[5] and low[3] > low[5] and low[4] > low[5]) strategy.entry("Short entry", strategy.short, qty = strategy.initial_capital / low[5], stop = low[5]) // reach first red low 5 days after if (signal[5] != "sell" and signal[4] == "sell" and signal[3] == "sell" and signal[2] == "sell" and signal[1] == "sell" and low[1] > low[4] and low[2] > low[4] and low[3] > low[4]) strategy.entry("Short entry", strategy.short, qty = strategy.initial_capital / low[4], stop = low[4]) // reach first red low 4 days after if (signal[4] != "sell" and signal[3] == "sell" and signal[2] == "sell" and signal[1] == "sell" and low[1] > low[3] and low[2] > low[3]) strategy.entry("Short entry", strategy.short, qty = strategy.initial_capital / low[3], stop = low[3]) // reach first red low 3 days after if (signal[3] != "sell" and signal[2] == "sell" and signal[1] == "sell" and low[1] > low[2]) strategy.entry("Short entry", strategy.short, qty = strategy.initial_capital / low[2], stop = low[2]) // reach first red low 2 days after if (signal[2] != "sell" and signal[1] == "sell") strategy.entry("Short entry", strategy.short, qty = strategy.initial_capital / low[1], stop = low[1]) // Exit when stop out or profit target is hit // Bracket order for entry 1 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] != "sell") long_stop_level = strategy.position_avg_price + (adr[1] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[1] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 2 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] == "sell" and signal[3] != "sell") long_stop_level = strategy.position_avg_price + (adr[2] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[2] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 3 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] == "sell" and signal[3] == "sell" and signal[4] != "sell") long_stop_level = strategy.position_avg_price + (adr[3] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[3] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 4 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] == "sell" and signal[3] == "sell" and signal[4] == "sell" and signal[5] != "sell") long_stop_level = strategy.position_avg_price + (adr[4] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[4] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 5 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] == "sell" and signal[3] == "sell" and signal[4] == "sell" and signal[5] == "sell" and signal[6] != "sell") long_stop_level = strategy.position_avg_price + (adr[5] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[5] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 6 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] == "sell" and signal[3] == "sell" and signal[4] == "sell" and signal[5] == "sell" and signal[6] == "sell" and signal[7] != "sell") long_stop_level = strategy.position_avg_price + (adr[6] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[6] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 7 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] == "sell" and signal[3] == "sell" and signal[4] == "sell" and signal[5] == "sell" and signal[6] == "sell" and signal[7] == "sell" and signal[8] != "sell") long_stop_level = strategy.position_avg_price + (adr[7] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[7] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 8 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] == "sell" and signal[3] == "sell" and signal[4] == "sell" and signal[5] == "sell" and signal[6] == "sell" and signal[7] == "sell" and signal[8] == "sell" and signal[9] != "sell") long_stop_level = strategy.position_avg_price + (adr[8] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[8] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 9 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] == "sell" and signal[3] == "sell" and signal[4] == "sell" and signal[5] == "sell" and signal[6] == "sell" and signal[7] == "sell" and signal[8] == "sell" and signal[9] == "sell" and signal[10] != "sell") long_stop_level = strategy.position_avg_price + (adr[9] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[9] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 10 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] == "sell" and signal[3] == "sell" and signal[4] == "sell" and signal[5] == "sell" and signal[6] == "sell" and signal[7] == "sell" and signal[8] == "sell" and signal[9] == "sell" and signal[10] == "sell" and signal[11] != "sell") long_stop_level = strategy.position_avg_price + (adr[10] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[10] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // Bracket order for entry 11 day after 1st red if (signal == "sell" and signal[1] == "sell" and signal[2] == "sell" and signal[3] == "sell" and signal[4] == "sell" and signal[5] == "sell" and signal[6] == "sell" and signal[7] == "sell" and signal[8] == "sell" and signal[9] == "sell" and signal[10] == "sell" and signal[11] == "sell" and signal[12] != "sell") long_stop_level = strategy.position_avg_price + (adr[11] * riskFactor) long_profit_level = strategy.position_avg_price - (adr[11] * rewardFactor) strategy.exit("TP/SL", "Short entry", stop=long_stop_level, limit=long_profit_level) // ####################### End of Short Entry ####################### // Enxit the day after the trend is lost if (time_cond and sideway) strategy.close("Long entry") strategy.close("Short entry") // Close any open order out side of date range if (not time_cond) strategy.close_all() if (time_cond_skip) strategy.close_all()