Cette stratégie utilise les variations des prix les plus élevés et les plus bas des lignes K pour juger de la direction et de l'intensité de l'oscillation du marché, et combine la moyenne mobile pour juger de la tendance globale pour mettre en œuvre des opérations à court terme.
Cette stratégie juge d'abord les changements des prix les plus élevés et les plus bas des lignes K par rapport à la ligne K précédente. Si le prix le plus élevé augmente, il est enregistré comme 1. Si le prix le plus bas tombe, il est enregistré comme -1, sinon il est enregistré comme 0.
Dans le même temps, la stratégie enregistre les prix les plus élevés et les plus bas du cycle le plus récent. Lorsque la moyenne mobile détermine un renversement de tendance, combinée avec les prix enregistrés pour déterminer les niveaux de prix clés pour former des niveaux de stop loss et de profit.
La direction d'entrée est déterminée par la moyenne mobile. Allez long au-dessus du rail supérieur et allez court au-dessous du rail inférieur. Les niveaux de stop loss et de take profit sont formés en jugeant les niveaux de prix clés.
L'avantage majeur de cette stratégie est de tirer pleinement parti des caractéristiques des fluctuations à court terme pour réaliser des bénéfices. En déterminant le stop loss et le take profit en fonction des niveaux de prix clés, la stratégie fonctionne selon des règles claires. En même temps, elle combine le jugement de tendance pour filtrer les marchés défavorables et éviter les pertes inutiles.
Les principaux risques auxquels cette stratégie est confrontée sont les suivants:
Aucun profit si le marché ne fluctue pas.
Les pertes inutiles causées par la rupture du niveau de stop loss.
Un mauvais jugement de la tendance peut faire manquer des opportunités ou faire des opérations dans la direction opposée.
Cette stratégie peut être optimisée dans les aspects suivants:
Ajustez le cycle de la moyenne mobile pour l'adapter aux caractéristiques des différentes variétés.
Optimiser l'intervalle de stop profit et de stop loss pour équilibrer les bénéfices et les pertes.
Ajoutez d'autres indicateurs de jugement pour éviter les opérations erronées.
Ajouter un stop-loss automatique pour contrôler la perte maximale.
En général, cette stratégie est celle qui tire parti des fluctuations à court terme. Elle utilise pleinement les petits mouvements de prix pour réaliser des bénéfices. En même temps, elle contrôle strictement les risques et réduit les pertes en temps opportun lorsque la tendance est défavorable. Elle convient aux investisseurs qui recherchent des rendements stables avec une attitude relativement prudente. Avec des ajustements de paramètres appropriés, elle peut obtenir de bons résultats sur les marchés fluctuants.
/*backtest start: 2024-01-16 00:00:00 end: 2024-01-16 22:45:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's ZZ-3 Strategy", shorttitle = "ZZ-3 str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") corr = input(0.0, title = "Correction, %") bars = input(1, minval = 1) revers = input(false, defval = false, title = "revers") showll = input(true, defval = true, title = "Show Levels") showbg = input(false, defval = false, title = "Show Background") showar = input(false, defval = false, title = "Show Arrows") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Levels hbar = 0 hbar := high > high[1] ? 1 : high < high[1] ? -1 : 0 lbar = 0 lbar := low > low[1] ? 1 : low < low[1] ? -1 : 0 uplevel = 0.0 dnlevel = 0.0 hh = highest(high, bars + 1) ll = lowest(low, bars + 1) uplevel := hbar == -1 and sma(hbar, bars)[1] == 1 ? hh + ((hh / 100) * corr) : uplevel[1] dnlevel := lbar == 1 and sma(lbar, bars)[1] == -1 ? ll - ((ll / 100) * corr) : dnlevel[1] //Lines upcol = na upcol := showll == false ? na : uplevel != uplevel[1] ? na : lime plot(uplevel, color = upcol, linewidth = 2) dncol = na dncol := showll == false ? na : dnlevel != dnlevel[1] ? na : red plot(dnlevel, color = dncol, linewidth = 2) //Background size = strategy.position_size trend = 0 trend := size > 0 ? 1 : size < 0 ? -1 : high >= uplevel ? 1 : low <= dnlevel ? -1 : trend[1] col = showbg == false ? na : trend == 1 ? lime : trend == -1 ? red : na bgcolor(col) //Arrows longsignal = false shortsignal = false longsignal := size > size[1] shortsignal := size < size[1] plotarrow(longsignal and showar and needlong ? 1 : na, colorup = blue, colordown = blue, transp = 0) plotarrow(shortsignal and showar and needshort ? -1 : na, colorup = blue, colordown = blue, transp = 0) //Trading lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if uplevel > 0 and dnlevel > 0 and revers == false strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if uplevel > 0 and dnlevel > 0 and revers == true strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnlevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = uplevel, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()