Stratégie à court terme de suivi des oscillations

Auteur:ChaoZhang est là., Date: 2024-01-18 16h29 et 34 min
Les étiquettes:

img

Résumé

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.

Principe de stratégie

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.

Analyse des avantages

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.

Analyse des risques

Les principaux risques auxquels cette stratégie est confrontée sont les suivants:

  1. Aucun profit si le marché ne fluctue pas.

  2. Les pertes inutiles causées par la rupture du niveau de stop loss.

  3. Un mauvais jugement de la tendance peut faire manquer des opportunités ou faire des opérations dans la direction opposée.

Directions d'optimisation

Cette stratégie peut être optimisée dans les aspects suivants:

  1. Ajustez le cycle de la moyenne mobile pour l'adapter aux caractéristiques des différentes variétés.

  2. Optimiser l'intervalle de stop profit et de stop loss pour équilibrer les bénéfices et les pertes.

  3. Ajoutez d'autres indicateurs de jugement pour éviter les opérations erronées.

  4. Ajouter un stop-loss automatique pour contrôler la perte maximale.

Résumé

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()

Plus de