Un nuage à travers la lune et deux étoiles pour attirer l'argent


Date de création: 2023-11-28 16:12:09 Dernière modification: 2023-11-28 16:12:09
Copier: 1 Nombre de clics: 610
1
Suivre
1619
Abonnés

Un nuage à travers la lune et deux étoiles pour attirer l’argent

Aperçu

La stratégie d’extraction de deux étoiles à travers un nuage est une stratégie de trading quantitative combinant un filtrage de nuage et de gamme de l’indicateur d’analyse technique du marché. Cette stratégie utilise un indicateur de nuage pour déterminer la tendance du marché et les supports et résistances importants, ainsi que la forme de la ligne K pour générer un signal de trading. En même temps, le filtrage de gamme est utilisé pour contrôler la fréquence des transactions et les risques.

Principe de stratégie

La stratégie est basée sur un indicateur de nuage et une forme de ligne K pour juger de la tendance du marché. Un indicateur de nuage contient des lignes de basculement, des lignes de référence et des lignes de nuage, dont la relation croisée permet de juger de la tendance du marché; et les lignes de nuage peuvent servir de points de support et de résistance. La stratégie ajuste la sensibilité d’une ligne de nuage en définissant différentes combinaisons de paramètres.

En outre, la stratégie a un filtre de plage de dates qui permet de ne négocier que dans la plage de dates indiquée, ce qui permet de contrôler la fréquence de négociation de la stratégie. En outre, le paramètre de stop-loss peut également réduire le risque, l’option de stop-loss arrêtera la perte lorsque le prix se déplace dans une direction défavorable.

Analyse des avantages

  • Les paramètres de l’indicateur peuvent être ajustés pour déterminer la tendance du marché à l’aide d’un indicateur cloud
  • Identification de la forme de la ligne K, signal de transaction clair
  • Réglez le filtrage de la plage de dates pour contrôler la fréquence des transactions
  • Réglage de l’arrêt des pertes pour réduire les risques

Analyse des risques

  • Les indicateurs de la nuée sont en retard et risquent de manquer une tendance à la mutation rapide
  • Le filtrage de la plage de dates peut laisser passer certaines opportunités de transaction
  • Un mauvais arrêt de perte peut augmenter les pertes

Il est possible d’améliorer et de contrôler le risque en ajustant les paramètres de l’indicateur de nuage, en optimisant la gamme de dates et en modifiant les points de rupture.

Direction d’optimisation

  • Vous pouvez tester différentes combinaisons de paramètres pour sélectionner la meilleure configuration de l’indicateur One Cloud.
  • Le problème du retard de l’indicateur “un nuage” peut être résolu en combinant d’autres indicateurs.
  • Une plage de dates optimisée peut être réglée par rétroaction
  • On peut définir un arrêt de glissement dynamique conditionnel

Résumer

L’utilisation de l’indicateur de la nuée, de l’identification de la ligne K, du filtrage de la gamme et d’autres méthodes pour déterminer la tendance du marché permet de mieux saisir la direction de la tendance. Les meilleurs effets de la stratégie peuvent être obtenus par des moyens tels que l’ajustement des paramètres et le contrôle du risque.

Code source de la stratégie
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title="Ichimoku Kumo Twist Strategy (Presets)", shorttitle="Kumo Twist Strategy", overlay=true)

xlowest_(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := min(x, v)
    x

xlowest(src, len) =>
    na(src[len]) ? xlowest_(src, len) : lowest(src, len)

xhighest_(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := max(x, v)
    x

xhighest(src, len) =>
    na(src[len]) ? xhighest_(src, len) : highest(src, len)

dropn(src, n) =>
    na(src[n]) ? na : src

ichiConversionPeriods(presets) =>
    if presets == "Cpt 20 60 120 30"
        20
    else
        if presets == "Cpt 10 30 60 30"
            10
        else
            if presets == "Std 18 52 104 26"
                18
            else
                9

ichiBasePeriods(presets) =>
    if presets == "Cpt 20 60 120 30"
        60
    else
        if presets == "Cpt 10 30 60 30"
            30
        else
            if presets == "Std 18 52 104 26"
                52
            else
                26

ichiLaggingSpan2Periods(presets) =>
    if presets == "Cpt 20 60 120 30"
        120
    else
        if presets == "Cpt 10 30 60 30"
            60
        else
            if presets == "Std 18 52 104 26"
                104
            else
                52

ichiDisplacement(presets) =>
    if presets == "Cpt 20 60 120 30"
        30
    else
        if presets == "Cpt 10 30 60 30"
            30
        else
            if presets == "Std 18 52 104 26"
                26
            else
                26

scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear")
presets = input(title="Presets", options=["Cpt 20 60 120 30", "Cpt 10 30 60 30", "Std 18 52 104 26", "Std 9 26 52 26"], defval="Cpt 20 60 120 30")
dropCandles = input(1, minval=0, title="Drop first N candles")
showClouds = input(false, "Show Clouds")
stoploss = input(true, title="Stop Loss")

conversionPeriods = ichiConversionPeriods(presets)
basePeriods = ichiBasePeriods(presets)
laggingSpan2Periods = ichiLaggingSpan2Periods(presets)
displacement = ichiDisplacement(presets)
logScaling = scaling == "Log"

lows = dropn(low, dropCandles)
highs = dropn(high, dropCandles)

lowsp = logScaling ? log(lows) : lows
highsp = logScaling ? log(highs) : highs

donchian(len) =>
    avg(xlowest(lowsp, len), xhighest(highsp, len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

// === BACKTEST RANGE ===
FromMonth = input(defval = 10, title = "From Month", minval = 1)
FromDay   = input(defval = 3, title = "From Day", minval = 1)
FromYear  = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

golong = crossover(leadLine1, leadLine2)
goshort = crossunder(leadLine1, leadLine2)

strategy.entry("Buy", strategy.long, when=(golong and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.entry("Sell", strategy.short, when=(goshort and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

conversionLinep = logScaling ? exp(conversionLine) : conversionLine
baseLinep = logScaling ? exp(baseLine) : baseLine
leadLine1p = logScaling ? exp(leadLine1) : leadLine1
leadLine2p = logScaling ? exp(leadLine2) : leadLine2

plot(showClouds ? conversionLinep : na, color=#0496ff, title="Conversion Line")
plot(showClouds ? baseLinep : na, color=#991515, title="Base Line")

p1 = plot(showClouds ? leadLine1p : na, offset = displacement, color=green, title="Lead 1")
p2 = plot(showClouds ? leadLine2p : na, offset = displacement, color=red, title="Lead 2")
fill(p1, p2, color = showClouds ? (leadLine1p > leadLine2p ? green : red) : na)