Positionsmanagementstrategie basierend auf der Kapitalkurve


Erstellungsdatum: 2024-01-16 15:06:39 zuletzt geändert: 2024-01-16 15:06:39
Kopie: 1 Klicks: 738
1
konzentrieren Sie sich auf
1617
Anhänger

Positionsmanagementstrategie basierend auf der Kapitalkurve

Strategieübersicht

Der Kern der Strategie besteht darin, die Positionsgröße dynamisch an die Entwicklung der Kapitalkurve anzupassen, die Position zu erhöhen, wenn sie gewinnbringend ist, und die Position zu verringern, wenn sie verliert, um das Gesamtrisiko zu kontrollieren. Die Strategie kombiniert gleichzeitig den Chande-Dynamik-Indikator, den SuperTrend-Indikator und den Dynamik-Indikator, um Handelssignale zu erkennen.

Strategieprinzip

Die Strategie verwendet zwei Möglichkeiten, um zu bestimmen, ob die Kapitalkurve in einer Abwärtstrend ist: 1) Berechnung eines schnellen und eines langsamen einfachen gleitenden Durchschnitts der Kapitalkurve, der als abwärts beurteilt wird, wenn der schnelle SMA niedriger als der langsame SMA ist; 2) Berechnung eines einfachen gleitenden Durchschnitts der Kapitalkurve im Vergleich zu ihrer eigenen längeren Periode, der als abwärts beurteilt wird, wenn die Kapitalkurve unter diesem gleitenden Durchschnitt liegt.

Wenn die Kapitalkurve nach unten verlegt wird, werden die Positionen je nach Einstellung um einen bestimmten Prozentsatz reduziert oder erhöht. Wenn beispielsweise eine Reduzierung um 50% festgelegt wird, werden die ursprünglichen 10% der Positionen auf 5% reduziert. Die Strategie erweitert die Positionsgröße bei Gewinn und reduziert die Positionsgröße bei Verlust, um das Gesamtrisiko zu kontrollieren.

Strategische Vorteile

  • Die Kapitalkurve wird genutzt, um die Gesamtschadenlage des Systems zu beurteilen, und die dynamische Anpassung der Positionen hilft, das Risiko zu kontrollieren
  • Die Eintrittswahrscheinlichkeit erhöht sich durch die Kombination mehrerer Kennzahlen
  • Anpassbare Parameter für die Anpassung der Positionen an unterschiedliche Risikopräferenzen

Strategisches Risiko

  • Wenn die Position größer wird, werden auch die Verluste größer.
  • Fehlgeleitete Parameter können dazu führen, dass Positionsanpassungen zu radikal sind.
  • Positionsmanagement kann Systemrisiken nicht vollständig vermeiden

Optimierung

  • Testen Sie die Wirkung von Anpassungsparametern für verschiedene Positionen
  • Versuchen Sie es mit einer anderen Kombination von Indikatoren
  • Optimierung der Zulassungsbedingungen und Erhöhung der Gewinnquote

Zusammenfassen

Diese Strategie ist klar, nutzt die Kapitalkurve Dynamik Positionsanpassung, kann die Risiken wirksam zu kontrollieren, lohnt sich weiter zu testen und zu optimieren. Die Parameter-Setting und Stop-Loss-Strategie muss auch berücksichtigt werden, um die Risiken von radikalen Operationen zu vermeiden.

Strategiequellcode
/*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))