Stratégie de suivi des oscillations à court terme


Date de création: 2024-01-18 16:29:34 Dernière modification: 2024-01-18 16:29:34
Copier: 0 Nombre de clics: 377
1
Suivre
1238
Abonnés

Stratégie de suivi des oscillations à court terme

Aperçu

La stratégie utilise les variations des prix les plus élevés et les plus bas de la ligne K pour déterminer la direction et l’intensité des chocs du marché, en combinaison avec la ligne moyenne pour déterminer la tendance globale et réaliser des opérations de ligne courte. Elle s’applique principalement aux variétés où les chocs sont plus évidents.

Principe de stratégie

La stratégie commence par déterminer la variation du prix le plus élevé et le prix le plus bas de la ligne K par rapport à la ligne K précédente. Si le prix le plus élevé augmente, il est noté 1, si le prix le plus bas baisse, il est noté 1, sinon il est noté 0. Ensuite, il calcule respectivement la moyenne des variations du prix le plus élevé et du prix le plus bas au cours d’une certaine période, pour déterminer la direction et la force des oscillations du marché.

En même temps, la stratégie enregistre les prix les plus élevés et les plus bas de la période la plus récente. Lorsqu’une courbe moyenne détermine un renversement de tendance, la combinaison des prix enregistrés détermine les niveaux de prix critiques, formant des niveaux de stop loss et de stop loss.

La direction d’entrée est déterminée par la ligne moyenne, les lots sont achetés au-dessus du rail supérieur et les lots vides sont vendus au-dessous du rail inférieur. Les niveaux d’arrêt et d’arrêt de perte sont formés par le jugement des niveaux de prix critiques.

Analyse des avantages

Le plus grand avantage de cette stratégie est d’exploiter pleinement les caractéristiques de choc de la courte ligne pour gagner de l’argent. En déterminant le niveau de prix critique, un arrêt de perte est formé, ce qui permet à la stratégie de fonctionner selon des règles claires.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. Il n’y a pas de profit dans une entreprise qui n’a pas de bouleversement.

  2. Le prix dépassant le seuil de résistance entraîne des pertes inutiles. La marge de résistance peut être allégée de manière appropriée.

  3. Il est possible de mal évaluer les tendances, de rater des événements ou d’effectuer des opérations inverses. Il est possible d’ajuster le paramètre de la ligne moyenne de manière appropriée.

Direction d’optimisation

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

  1. Adaptation des cycles de moyenne ligne aux caractéristiques des différentes variétés.

  2. Optimiser le périmètre de l’arrêt-arrêt pour équilibrer les gains et les pertes.

  3. Il faut ajouter d’autres indicateurs de jugement pour éviter les erreurs.

  4. Augmentation du stop-loss automatique et contrôle des pertes maximales.

Résumer

Cette stratégie est généralement une stratégie qui exploite les caractéristiques de la courte ligne de choc. Utilisez pleinement la petite gamme de cours pour obtenir des bénéfices. En même temps, contrôlez strictement les risques et arrêtez les pertes en temps opportun lorsque la tendance est défavorable.

Code source de la stratégie
/*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()