Stratégie de gestion de position basée sur la courbe de capital


Date de création: 2024-01-16 15:06:39 Dernière modification: 2024-01-16 15:06:39
Copier: 1 Nombre de clics: 738
1
Suivre
1617
Abonnés

Stratégie de gestion de position basée sur la courbe de capital

Aperçu de la stratégie

L’idée centrale de cette stratégie est d’ajuster dynamiquement la taille de la position en fonction de l’évolution de la courbe des capitaux, d’augmenter la position en cas de profit et de réduire la position en cas de perte, afin de contrôler le risque global. La stratégie combine à la fois l’indicateur de dynamique Chande, l’indicateur SuperTrend et l’indicateur de dynamique pour identifier les signaux de négociation.

Principe de stratégie

La stratégie utilise deux méthodes pour déterminer si la courbe des capitaux est en baisse: 1) calculer les moyennes mobiles simples rapides et lentes de la courbe des capitaux, jugées baisses si la SMA rapide est inférieure à la SMA lente; 2) calculer la courbe des capitaux avec la moyenne mobile simple de sa propre période plus longue, jugée baissée si la courbe des capitaux est inférieure à cette moyenne mobile.

Lorsque la courbe des capitaux est jugée à la baisse, la position est réduite ou augmentée en fonction de la configuration. Par exemple, si une réduction de 50% est définie, la position de 10% est réduite à 5%. La stratégie permet d’augmenter la taille de la position en cas de profit et de réduire la taille de la position en cas de perte pour contrôler le risque global.

Avantages stratégiques

  • L’utilisation de la courbe de capitaux pour juger de la perte globale du système, l’ajustement dynamique des positions aide à contrôler les risques
  • La combinaison de plusieurs indicateurs peut améliorer la probabilité de gagner
  • Paramètres personnalisables pour ajuster la position en fonction des préférences de risque

Risque stratégique

  • Les positions augmentent et les pertes aussi
  • Une mauvaise configuration des paramètres peut entraîner des ajustements de position trop radicaux
  • La gestion des positions ne peut pas éviter complètement le risque systémique

Optimiser les idées

  • Tester l’efficacité des paramètres d’ajustement de différentes positions
  • Essayez d’autres combinaisons d’indicateurs pour déterminer la courbe des fonds
  • Optimiser les conditions d’admission et améliorer le taux de réussite

Résumer

Cette stratégie est clairement conçue, utilise la courbe des capitaux pour ajuster les positions dynamiquement, permet de contrôler efficacement les risques et mérite d’être testée et optimisée. La stratégie de paramétrage et de stop-loss doit également être bien pensée pour éviter les risques liés aux opérations radicales.

Code source de la stratégie
/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © shardison
//@version=5

//EXPLANATION
//"Trading the equity curve" as a risk management method is the 
//process of acting on trade signals depending on whether a system’s performance
//is indicating the strategy is in a profitable or losing phase.
//The point of managing equity curve is to minimize risk in trading when the equity curve is  in a downtrend. 
//This strategy has two modes to determine the equity curve downtrend:
//By creating two simple moving averages of a portfolio's equity curve - a short-term
//and a longer-term one - and acting on their crossings. If the fast SMA is below
//the slow SMA, equity downtrend is detected (smafastequity < smaslowequity).
//The second method is by using the crossings of equity itself with the longer-period SMA (equity < smasloweequity).
//When "Reduce size by %" is active, the position size will be reduced by a specified percentage
//if the equity is "under water" according to a selected rule. If you're a risk seeker, select "Increase size by %"
//- for some robust systems, it could help overcome their small drawdowns quicker.

strategy("Use Trading the Equity Curve Postion Sizing", shorttitle="TEC", default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital = 100000)

//TRADING THE EQUITY CURVE INPUTS
useTEC           = input.bool(true, title="Use Trading the Equity Curve Position Sizing")
defulttraderule  = useTEC ? false: true
initialsize      = input.float(defval=10.0, title="Initial % Equity")
slowequitylength = input.int(25, title="Slow SMA Period")
fastequitylength = input.int(9, title="Fast SMA Period")
seedequity = 100000 * .10
if strategy.equity == 0
    seedequity
else
    strategy.equity
slowequityseed   = strategy.equity > seedequity ? strategy.equity : seedequity
fastequityseed   = strategy.equity > seedequity ? strategy.equity : seedequity
smaslowequity    = ta.sma(slowequityseed, slowequitylength)
smafastequity    = ta.sma(fastequityseed, fastequitylength)
equitycalc       = input.bool(true, title="Use Fast/Slow Avg", tooltip="Fast Equity Avg is below Slow---otherwise if unchecked uses Slow Equity Avg below Equity")
sizeadjstring    = input.string("Reduce size by (%)", title="Position Size Adjustment", options=["Reduce size by (%)","Increase size by (%)"])
sizeadjint       = input.int(50, title="Increase/Decrease % Equity by:")
equitydowntrendavgs = smafastequity < smaslowequity
slowequitylessequity = strategy.equity < smaslowequity

equitymethod = equitycalc ? equitydowntrendavgs : slowequitylessequity

if sizeadjstring == ("Reduce size by (%)")
    sizeadjdown = initialsize * (1 - (sizeadjint/100))
else
    sizeadjup = initialsize * (1 + (sizeadjint/100))
c = close
qty = 100000 * (initialsize / 100) / c
if useTEC and equitymethod
    if sizeadjstring == "Reduce size by (%)"
        qty := (strategy.equity * (initialsize / 100) * (1 - (sizeadjint/100))) / c
    else
        qty := (strategy.equity * (initialsize / 100) * (1 + (sizeadjint/100))) / c
    
//EXAMPLE TRADING STRATEGY INPUTS
CMO_Length = input.int(defval=9, minval=1, title='Chande Momentum Length')
CMO_Signal = input.int(defval=10, minval=1, title='Chande Momentum Signal')

chandeMO = ta.cmo(close, CMO_Length)
cmosignal = ta.sma(chandeMO, CMO_Signal)

SuperTrend_atrPeriod = input.int(10, "SuperTrend ATR Length")
SuperTrend_Factor = input.float(3.0, "SuperTrend Factor", step = 0.01)
Momentum_Length = input.int(12, "Momentum Length")
price = close

mom0 = ta.mom(price, Momentum_Length)
mom1 = ta.mom( mom0, 1)
[supertrend, direction] = ta.supertrend(SuperTrend_Factor, SuperTrend_atrPeriod)
stupind = (direction < 0 ? supertrend : na)
stdownind = (direction < 0? na : supertrend)

//TRADING CONDITIONS
longConditiondefault = ta.crossover(chandeMO, cmosignal) and (mom0 > 0 and mom1 > 0 and close > stupind) and defulttraderule
if (longConditiondefault)
    strategy.entry("DefLong", strategy.long, qty=qty)

shortConditiondefault = ta.crossunder(chandeMO, cmosignal) and (mom0 < 0 and mom1 < 0 and close < stdownind) and defulttraderule
if (shortConditiondefault)
    strategy.entry("DefShort", strategy.short, qty=qty)
    
longCondition = ta.crossover(chandeMO, cmosignal) and (mom0 > 0 and mom1 > 0 and close > stupind) and useTEC
if (longCondition)
    strategy.entry("AdjLong", strategy.long, qty = qty)

shortCondition = ta.crossunder(chandeMO, cmosignal) and (mom0 < 0 and mom1 < 0 and close < stdownind) and useTEC
if (shortCondition)
    strategy.entry("AdjShort", strategy.short, qty = qty)
plot(strategy.equity)
plot(smaslowequity, color=color.new(color.red, 0))
plot(smafastequity, color=color.new(color.green, 0))