Cette stratégie intègre une stratégie de moyenne mobile, des graphiques de nuages Ichimoku et des indicateurs techniques du canal Keltner pour atteindre le suivi de tendance et le trading de percée, ce qui convient au trading algorithmique à haute fréquence.
Cette stratégie intègre les graphiques de nuage Ichimoku, les canaux Keltner et les stratégies moyennes mobiles avec plusieurs indicateurs techniques pour atteindre un suivi des tendances et un trading de percée efficace. Par rapport à un seul indicateur, le jugement de cette stratégie est plus complet et précis, évitant certains faux signaux.
/*backtest start: 2023-11-19 00:00:00 end: 2023-12-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Author: Persio Flexa // Description: Ichimoku Clouds with Keltner Channel, perfect for margin trading strategy("Ichimoku Keltner Strategy", overlay=true) // -- Keltner ------------------------------------------------------------------ source = close useTrueRange = input(true) length = input(18, minval=1) mult = input(1.8) ma = sma(source, length) range = useTrueRange ? tr : high - low rangema = sma(range, length) upper = ma + rangema * mult lower = ma - rangema * mult plot(ma, title="BASE", color=orange,transp=85) plot(upper, title="UPPER", color=red) plot(lower, title="LOWER", color=green) //crossUpper = crossover(source, upper) //crossLower = crossunder(source, lower) crossUpper = source > upper crossLower = source < lower bprice = 0.0 bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1]) sprice = 0.0 sprice := crossLower ? low -syminfo.mintick : nz(sprice[1]) crossBcond = false crossBcond := crossUpper ? true : na(crossBcond[1]) ? false : crossBcond[1] crossScond = false crossScond := crossLower ? true : na(crossScond[1]) ? false : crossScond[1] cancelBcond = crossBcond and (source < ma or high >= bprice ) cancelScond = crossScond and (source > ma or low <= sprice ) // --------------------------------------------------------------------- // -- Ichimoku ATRlength = input(200, minval=1) ATRMult = input(2.272, minval=1) ATR = rma(tr(true), ATRlength) len = input(26, minval=1, title="EMA Length") src = input(close, title="Source") out = ema(src, len) emaup = out+(ATR*ATRMult) emadw = out-(ATR*ATRMult) conversionPeriods = input(15, minval=1), basePeriods = input(35, minval=1) laggingSpan2Periods = input(52, minval=1), displacement = input(26, minval=1) donchian(len) => avg(lowest(len), highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) p1 = plot(leadLine1, offset = displacement, color=green,transp=85, title="Lead 1") p2 = plot(leadLine2, offset = displacement, color=red,transp=85, title="Lead 2") fill(p1, p2,silver) longCond = crossover(conversionLine, baseLine) shortCond = crossunder(conversionLine, baseLine) // ------------------------------------------------------------------------- if (crossUpper and (conversionLine > baseLine)) strategy.entry("long", strategy.long, stop=bprice, comment="LONG") if (crossLower and (conversionLine < baseLine)) strategy.entry("short", strategy.short, stop=sprice, comment="SHORT") strategy.close("long", when = (shortCond and source < lower)) strategy.close("short", when = (longCond and source > upper))