Quantitative Kryptowährungs-Handelsstrategie basierend auf dynamischem DCA

DCA TP SO (Safety Orders) API OHLC4 HL2 HL3 ROI
Erstellungsdatum: 2025-02-19 16:59:45 zuletzt geändert: 2025-02-27 17:56:06
Kopie: 1 Klicks: 462
2
konzentrieren Sie sich auf
319
Anhänger

Quantitative Kryptowährungs-Handelsstrategie basierend auf dynamischem DCA Quantitative Kryptowährungs-Handelsstrategie basierend auf dynamischem DCA

Überblick

Es handelt sich um eine speziell für den Kryptowährungsmarkt konzipierte quantitative Handelsstrategie, die die hohen Volatilitätsmerkmale des Kryptowährungsmarktes ausnutzt, indem sie durch intelligente Kostenmittel (DCA) bei Preisrückgängen dynamisch gehandelt wird. Die Strategie läuft auf einem 15-Minuten-Zeitrahmen und kann effektiv auf die schnellen Schwankungen des Kryptowährungsmarktes reagieren und gleichzeitig die Risiken von Überhändlungen vermeiden.

Strategieprinzip

Die Strategie besteht aus vier zentralen Modulen:

  1. Intelligentes Einstiegssystem: Erste Positionen auf Basis des OHLC4-Wert-Gewährtes, angepasst an die hohe Volatilität des Krypto-Marktes
  2. Dynamische Rückstellungsmechanismen: Triggerung von Sicherheitsaufträgen bei Preiserhöhungen, die mit zunehmender Tiefe verstärkt werden, um Marktschwankungen zu nutzen
  3. Risikomanagementsystem: Optimierung des Risikos-Gewinn-Verhältnisses durch pyramidenhafte Anlagerungen und flexible Leverage-Anpassungen
  4. Schnelle Stop-Controls: Stop-Mechanismen, die auf die schnell schwankenden Eigenschaften des Kryptowährungsmarktes zugeschnitten sind, einschließlich der Optimierung der Gebühren

Strategische Vorteile

  1. Marktadaptivität: Speziell optimiert für die hohen Volatilitäten des Kryptowährungsmarktes
  2. Risikodistribution: Senkung des Risikos von Kryptowährungsunfällen durch dynamische Lagerung
  3. Arbitrageeffizienz: Nutzung von Preisschwankungen auf dem Kryptowährungsmarkt
  4. Automatisierte Ausführung: API-Zugriff für mehrere gängige Krypto-Börsen
  5. Kapital-Effizienz: Erhöhung der Kapital-Effizienz von Kryptowährungsgeschäften durch intelligente Leverage-Verwaltung

Strategisches Risiko

  1. Marktrisiken: Extreme Schwankungen im Kryptowährungsmarkt könnten zu einem größeren Rückzug führen
  2. Liquiditätsrisiko: Einige kleinere Kryptowährungen könnten mit mangelnder Liquidität konfrontiert sein
  3. Leverage-Risiko: Die hohe Volatilität des Krypto-Marktes erhöht das Risiko von Leverage-Handel
  4. Technische Risiken: Abhängigkeit von der Stabilität der Börsen-API und der Qualität der Netzwerkverbindung
  5. Regulierungsrisiken: Änderungen an der Kryptowährungspolitik könnten die Umsetzung beeinträchtigen

Richtung der Strategieoptimierung

  1. Anpassung an die Volatilität: Einführung eines speziellen Volatilitätsindikators für den Kryptowährungsmarkt, um die Parameter dynamisch anzupassen
  2. Multi-Currency Synergy: Entwicklung einer interaktiven Multi-Currency-Trading-Logik, um die Risiken einer einzigen Währung zu verteilen
  3. Market Sentiment Filter: Integrierte Stimmungsindikatoren für den Krypto-Markt und optimierte Einstiegsmomente
  4. Optimierung der Transaktionskosten: Senkung der Kosten durch intelligente Routing- und Börsenoptionen
  5. Risiko-Vorwarnmechanismen: Aufbau eines Vorwarnsystems, das auf ungewöhnlichen Marktschwankungen basiert

Zusammenfassen

Die Strategie bietet eine umfassende automatisierte Lösung für den Handel mit Kryptowährungen durch innovative DCA-Methoden und dynamische Risikomanagement. Obwohl die Kryptowährungsmärkte mit hohem Risiko verbunden sind, ist die Strategie durch sorgfältig konzipierte Risikokontrollmechanismen und Optimierung der Marktadaptivität in der Lage, in den meisten Marktumgebungen Stabilität zu bewahren.

Strategiequellcode
/*backtest
start: 2020-08-29 15:00:00
end: 2025-02-18 17:22:45
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/

//@version=5
strategy('Autotrade.it DCA', overlay=true, pyramiding=999, default_qty_type=strategy.cash, initial_capital=10000, commission_value=0.02)

// Date Ranges
from_month = 1
from_day = 1
from_year = 2021
to_month = 1
to_day = 1
to_year = 9999
start = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)  // backtest finish window
window = time >= start and time <= finish ? true : false  // create function "within window of time"

source_type = 'OHLC4'
source_function(type) =>
    if type == 'Close'
        close
    else if type == 'Open'
        open
    else if type == 'High'
        high
    else if type == 'Low'
        low
    else if type == 'HL2'
        hl2
    else if type == 'HL3'
        hlc3
    else if type == 'OHLC4'
        ohlc4
    else if type == 'Median Body'
        (open + close) / 2
    else if type == 'Weighted Close'
        (high + low + 2 * close) / 4
    else if type == 'Trend Biased'
        close > open ? (high + close) / 2 : (low + close) / 2
    else if type == 'Trend Biased Extreme'
        close > open ? high : low
truncate(number, decimals) =>
    factor = math.pow(10, decimals)
    int(number * factor) / factor
// Strategy Inputs
price_deviation = input.float(1.0, title='Price deviation to open safety orders (%)', minval=0.0) / 100
take_profit = 1.0 / 100
base_order = 10.0
safe_order = 10.0
safe_order_volume_scale = 1.1
safe_order_step_scale = 1.1
max_safe_order = 30

var current_so = 0
var initial_order = 0.0
var previous_high_value = 0.0
var original_ttp_value = 0.0
// Calculate our key levels
take_profit_level = strategy.position_avg_price * (1 + take_profit)
startTrade = input.int(defval=1, title='Trade Start')
margin = input.float(title='Margin', defval=1, step=1, tooltip='USDT')
leverage = input.int(title='Leverage', defval=50, tooltip='it only used on futures trade')
multi = 1.125
var float multiplier = 1
symbol = str.replace_all(syminfo.ticker, '.P', '')
var float totalMargin = 0.0
var bool isTrade =false
var float totalPrice = 0.0
var int totalTrade = 0
var float totalQtys = 0
var float sellPrice = 0
var float sellQty = 0


// // First Position
if strategy.position_size == 0 and window and source_function(source_type) > 0 and previous_high_value == 0.0
    strategy.entry('No Position', strategy.long, qty=base_order / source_function(source_type))
    initial_order := source_function(source_type)
    current_so := 1
    previous_high_value := 0.0
    original_ttp_value := 0
    original_ttp_value

threshold = 0.0
if safe_order_step_scale == 1.0
    threshold := initial_order - initial_order * price_deviation * safe_order_step_scale * current_so
    threshold
else
    threshold := initial_order - initial_order * ((price_deviation * math.pow(safe_order_step_scale, current_so) - price_deviation) / (safe_order_step_scale - 1))
    threshold

// Average Down
if current_so > 0 and source_function(source_type) <= threshold and current_so <= max_safe_order and previous_high_value == 0.0
    if(startTrade<=current_so)
        margin := math.round(margin * multiplier * 100) / 100
        multiplier *= multi
        totalMargin += margin
        avePrice = (totalPrice/totalTrade)
        qty = margin*leverage/close
        isTrade := true
        totalPrice+=close
        totalTrade+=1
        totalQtys+=qty
        alert('{"category": "linear", "mode": 3, "tradeMode": 0, "symbol": "' + str.tostring(symbol) + '", "leverage": "' + str.tostring(leverage) + '", "side": "Buy", "orderType": "Market", "marketUnit": "quoteCoin", "qty": "' + str.tostring(margin) + '", "reduceOnly": false, "positionIdx": 1 }')
        strategy.entry('Trade # ' + str.tostring(current_so) +"---Margin: $" + str.tostring(margin), direction=strategy.long, qty=safe_order * math.pow(safe_order_volume_scale, current_so - 1) / source_function(source_type))
    else
        strategy.entry('Trade # ' + str.tostring(current_so) +" No position", direction=strategy.long, qty=safe_order * math.pow(safe_order_volume_scale, current_so - 1) / source_function(source_type))
    current_so += 1
    current_so


// Take Profit!
if take_profit_level <= source_function(source_type) and strategy.position_size > 0 or previous_high_value > 0.0
    if(isTrade)
        avePrice = totalMargin * leverage / totalQtys * 1.002  // Include fee directly
        percentGain = math.round((close - avePrice) / avePrice * 100 * 100) / 100
        gain = math.round(percentGain * leverage * totalMargin / 100 * 100) / 100
        isTrade := false
        sellPrice := avePrice*0.95
        sellQty := totalMargin * leverage/sellPrice
        loop = current_so-1
        testQty = sellQty/loop
        strategy.close_all(comment= "Take Profit: $" + str.tostring(gain))
        alert('{"category": "linear", "mode": 3, "tradeMode": 0, "symbol": "' + str.tostring(symbol) + '", "leverage": "' + str.tostring(testQty) + '", "side": "Sell", "orderType": "Market", "marketUnit": "baseCoin", "qty": "' + str.tostring(sellQty) + '", "reduceOnly": true, "positionIdx": 1, "loop": "' + str.tostring(loop) + '" }')
                    
    else
        strategy.close_all(comment='No Position')
    current_so := 0
    previous_high_value := 0
    original_ttp_value := 0
    multiplier:=1
    totalMargin:=0.0
    totalPrice:=0
    totalTrade:=0
    totalQtys:=0