Cette stratégie est une stratégie de détention à long terme basée sur la détermination de la direction de la tendance avec des lignes moyennes mobiles simples et la formation de signaux de percée avec des lignes de résistance et de soutien.
Cette stratégie utilise des moyennes mobiles simples pour déterminer la direction globale de la tendance, puis utilise les percées de points clés pour générer des signaux de trading, ce qui est une stratégie de rupture typique.
Les risques peuvent être réduits en optimisant les paramètres par le biais du trading en direct et en incorporant des stratégies de stop loss/take profit.
Dans l'ensemble, cette stratégie est une stratégie de rupture typique qui repose sur l'optimisation des paramètres et la liquidité, adaptée aux traders de tendance.
/*backtest start: 2023-02-14 00:00:00 end: 2024-02-20 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © CheatCode1 //@version=5 strategy("Quantitative Trend Strategy- Uptrend long", 'Steady Uptrend Strategy', overlay=true, initial_capital = 1500, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.01, default_qty_type = strategy.percent_of_equity) length = input.int(20, minval=1) src = input(close, title="Source") basis = ta.sma(src, length) offset = input.int(0, "Offset", minval = -500, maxval = 500) plot(basis, "Basis", color=#FF6D00, offset = offset) inp1 = input.int(46, 'LookbackLeft') inp2 = input.int(32, 'LookbackRight') l1 = ta.pivothigh(close, inp1, inp2) S1 = ta.pivotlow(close, inp1, inp2) // plot(l1, 'Pivothigh', color.red, 1) // // plot(S1, 'Pivot Low', color.red) l1V = ta.valuewhen(l1, close, 0) S1V = ta.valuewhen(S1, close, 0) Plotl1 = not na(l1) ? l1V : na PlotS1 = not na(S1) ? S1V : na plot(Plotl1, 'Resistance', color.green, 1, plot.style_stepline, true) plot(PlotS1, 'Support', color.red, 1, plot.style_stepline, true) Priceforlong = close > l1V ? true : na Priceforshort = close < S1V ? true : na plotshape(Priceforlong ? high : na, 'p', shape.arrowup, location.abovebar, color.green, size = size.small) plotshape(Priceforshort ? low : na, 's', shape.arrowdown, location.belowbar, color.red, size = size.small) vol = volume volma = ta.sma(vol, 20) Plotl1C = ta.valuewhen(na(Plotl1), l1V, 0) PlotS1C = ta.valuewhen(na(PlotS1), S1V, 0) //Strategy Execution volc = volume > volma Lc1 = Priceforlong Sc1 = Priceforshort sL = Plotl1 < PlotS1 ? close : na sS = PlotS1 > Plotl1 ? close : na if Lc1 strategy.entry('Long', strategy.long) // if Sc1 and C2 // strategy.entry('Short', strategy.short) if Priceforshort strategy.cancel('Long') if Priceforlong strategy.cancel('Short') // Stp1 = ta.crossover(k, d) // Ltp1 = ta.crossunder(k, d) // Ltp = d > 70 ? Ltp1 : na // Stp = d < 30 ? Stp1 : na if strategy.openprofit >= 0 and sL strategy.close('Long') if strategy.openprofit >= 0 and sS strategy.close('Short') takeP = input.float(2, title='Take Profit') / 100 stopL = input.float(1.75, title='Stop Loss') / 100 // // Pre Directionality Stop_L = strategy.position_avg_price * (1 - stopL) Stop_S = strategy.position_avg_price * (1 + stopL) Take_S= strategy.position_avg_price * (1 - takeP) Take_L = strategy.position_avg_price * (1 + takeP) // sL = Plotl1 < PlotS1 ? close : na // sS = PlotS1 < Plotl1 ? close : na // //Post Excecution if strategy.position_size > 0 and not (Lc1) strategy.exit("Close Long", stop = Stop_L, limit = Take_L) if strategy.position_size < 0 and not (Sc1) strategy.exit("Close Short", stop = Stop_S, limit = Take_S)