Stratégie de croisement long-short basée sur l'oscillateur de volume


Date de création: 2023-12-12 11:19:04 Dernière modification: 2023-12-12 11:19:04
Copier: 0 Nombre de clics: 855
1
Suivre
1621
Abonnés

Stratégie de croisement long-short basée sur l’oscillateur de volume

Aperçu

La stratégie est basée sur la croisée des moyennes mobiles à long terme du volume des transactions. Elle utilise les EMA de différentes périodes pour calculer la tendance à long terme du volume des transactions et construit un indicateur de choc à partir de sa différence.

Principe de stratégie

L’indicateur central de la stratégie est l’indicateur de volatilité du volume de transactions (Volume Oscillator). Il reflète la tendance des variations du volume de transactions par la différence de la moyenne mobile de l’indice de volume de transactions à long terme. La formule de calcul est la suivante:

Volume Oscillator = (ShortEMA - LongEMA) / LongEMA * 100

Parmi ceux-ci, ShortEMA et LongEMA représentent respectivement les moyennes mobiles indicielles à court et à long terme. Lorsque ShortEMA traverse LongEMA, l’indicateur est positif, ce qui signifie que le volume de transactions est en expansion; lorsque ShortEMA traverse LongEMA, l’indicateur est négatif, ce qui signifie que le volume de transactions est en contraction.

Après avoir calculé l’indicateur d’oscillation, la stratégie utilise son croisement avec l’axe zéro pour générer un signal de transaction. Lorsque l’indicateur est inversé négativement, c’est-à-dire en passant par l’axe zéro, faites plus; lorsque l’indicateur est inversé négativement, c’est-à-dire en passant par l’axe zéro, faites moins.

En outre, la stratégie peut être combinée avec le précédent haut et bas pour juger de la direction de l’opération spécifique. C’est-à-dire que lorsque l’indicateur passe sur l’axe zéro, si le précédent haut est supérieur à la valeur absolue du précédent bas, regardez plus; au contraire, regardez à l’envers.

Avantages stratégiques

Cette stratégie présente les avantages suivants:

  1. L’utilisation du volume de transactions comme indicateur de base permet de déterminer efficacement les intentions des acteurs du marché et présente une grande utilité.

  2. La combinaison des EMA à court et à long terme permet de capturer à la fois les tendances à moyen et à long terme et la dynamique à court terme.

  3. Les signaux de transaction formés par la croisée de l’indicateur et de l’axe zéro sont simples, clairs et faciles à juger.

  4. En ajoutant les hauts et les bas de la précédente période pour déterminer la direction à prendre, il est possible d’exploiter efficacement le volume des transactions.

  5. La stratégie est claire, les paramètres sont flexibles et l’adaptation est forte.

Risque stratégique

Cette stratégie comporte également des risques à prendre en compte:

  1. L’indicateur de volume des transactions est vulnérable aux fausses ruptures du marché et peut générer de faux signaux. Des arrêts de perte peuvent être mis en place pour contrôler le risque.

  2. Dans des conditions de choc, le croisement des volumes peut être fréquent et nécessite une confirmation raisonnable de la rotation des indicateurs.

  3. Les hauts et les bas précédents ne reflètent que la dernière expansion et ne permettent pas de déterminer sa durabilité.

  4. Les paramètres pour les différentes variétés et périodes doivent être optimisés individuellement et ne sont pas assez universels.

  5. L’indicateur de volume de transactions réagit lentement aux transactions programmées à haute fréquence et peut manquer le meilleur moment d’entrée.

Orientation de l’optimisation de la stratégie

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

  1. Ajouter des conditions de filtrage pour éviter les faux signaux, comme la confirmation de l’ajout d’un indicateur de prix.

  2. Optimisation des paramètres cycliques des EMA à long terme pour les rendre plus adaptés aux caractéristiques des différentes variétés.

  3. Réglez le paramètre de cycle sur le plus haut et le plus bas de la période précédente.

  4. La zone de basculement de l’indicateur doit être définie comme une zone intermédiaire pour éviter les échanges fréquents.

  5. Il est important d’augmenter les stratégies de stop-loss et de contrôler les pertes individuelles.

  6. En combinaison avec d’autres indicateurs techniques tels que l’indicateur de prix VRP.

  7. Optimiser automatiquement les paramètres à l’aide de l’apprentissage automatique.

Résumer

Dans l’ensemble, la stratégie de croisement de longues et courtes lignes basée sur l’indicateur de volatilité du volume des transactions exploite pleinement les caractéristiques du retournement du volume des transactions, est plus judicieuse et a une bonne détectivité au début du développement de la tendance. En combinaison avec les hauts et les bas précédents pour déterminer la direction spécifique, les décisions de négociation sont plus précises.

Code source de la stratégie
/*backtest
start: 2022-12-05 00:00:00
end: 2023-03-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("SB_Volume_oscillator_Prev_high_low", overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

shortlen = input(5, minval=1)
longlen = input(10, minval=1)
short = ema(volume, shortlen)
long = ema(volume, longlen)
osc = 100 * (short - long) / long
//hline(0, title="Zero")
//plot(osc)
zero=input(0.0)

low_val=input(0.0)
high_val=input(0.0)
prev_high_val=input(0.0)
prev_low_val=input(0.0)
where=input(0)
where:=nz(where[1])
low_val:=nz(low_val[1])
high_val:=nz(high_val[1])
prev_high_val:=nz(prev_high_val[1])
prev_low_val:=nz(prev_low_val[1])
if(crossover(osc,zero))
    high_val:=osc
    where:=1
    prev_low_val:=low_val
    low_val:=osc

if(crossunder(osc,zero))
    low_val:=osc
    where:=-1
    prev_high_val:=high_val
    high_val:=osc

if(where==1)
    if(high_val<osc)
        high_val:=osc
        
if(where==-1)
    if(low_val>osc)
        low_val:=osc


if (crossover(osc,zero))
    if(prev_high_val<=abs(prev_low_val))
        strategy.entry("My Long Entry Id", strategy.long)
    if(prev_high_val>abs(prev_low_val))
        strategy.entry("My Short Entry Id", strategy.short)

if (crossunder(osc,zero))
    if(prev_high_val<=abs(prev_low_val))
        strategy.entry("My Long Entry Id", strategy.long)
    if(prev_high_val>abs(prev_low_val))
        strategy.entry("My Short Entry Id", strategy.short)