Quant Bitcoin Trading Strategy combinant le MACD, le RSI et le FIB

Auteur:ChaoZhang est là., Date: 2023-12-26 17h08:03 Je suis désolé
Les étiquettes:

img

Résumé

La stratégie s'appelle Golden Cross Fibonacci Strategy. Elle combine l'indicateur technique MACD, l'indice de force relative RSI et la théorie de la rétraction/extension de Fibonacci basée sur le ratio doré, réalisant un trading quantitatif pour le bitcoin et d'autres crypto-monnaies.

Principe de stratégie

  1. Indicateur MACD pour les signaux de négociation
  • Définir les périodes EMA de la ligne rapide et de la ligne lente MACD à 15 et 30
  • En passant par le haut comme signe d'achat et en passant par le bas comme signe de vente
  1. RSI filtrant les faux signaux
  • Définir le paramètre RSI à 50 périodes
  • Le RSI aide à filtrer certains faux signaux que le MACD donne.
  1. La théorie de Fibonacci pour le support/résistance
  • Combinez le prix le plus élevé/le plus bas récent sur 38 bougies
  • Calculer le niveau de rétraction/d'extension de 0,5 fibonacci
  • Peut être utilisé comme support et résistance
  1. MA et RSI en termes de survente/surachat
  • Statut de survente/surachat des juges de l'AM de 50 périodes
  • L'ISR aide également à juger
  1. Mécanisme d'ouverture inverse
  • Fournir aux utilisateurs la possibilité d'ouvrir une commande inverse
  • Ajustez la logique longue/courte de façon flexible selon le choix des utilisateurs

Analyse des avantages

Le plus grand avantage est d'opérer 24x7 sans intervention manuelle. En outre, la combinaison de plusieurs indicateurs augmente le taux de gain, en particulier la performance exceptionnelle sur le marché haussier. Les principaux avantages comprennent:

  1. Commerce de quantités entièrement automatisé 24 heures sur 24, 7 jours sur 7 sans intervention manuelle
  2. Signaux de négociation précis du MACD
  3. Le RSI filtre certains faux signaux
  4. La théorie de Fibonacci ajoute plus de référence
  5. Évaluation du statut de survente/surachat
  6. Adaptez les stratégies de manière flexible par ouverture inverse

Analyse des risques

Il existe également certains risques, principalement dus à un énorme renversement de prix qui rend difficile l'effet d'un stop loss.

  1. Arrêtez la perte trop serré pour protéger contre le retour énorme
  2. Risque systémique résultant d'une période de détention trop longue

Les solutions sont les suivantes:

  1. Définir la distance de perte de freinage
  2. Optimiser la période de détention contre un risque trop long

Directions d'optimisation

Principaux aspects de l'optimisation:

  1. Optimiser les paramètres MACD pour une plus grande précision
  2. Optimiser le paramètre RSI pour une meilleure utilisation
  3. Testez plus de périodes de la théorie de Fibonacci
  4. Ajouter plus d'indicateurs de filtre pour réduire encore les faux signaux
  5. Combiner des indicateurs de plus grandes périodes pour l'évolution du marché

Résumé

La stratégie combine plusieurs indicateurs quant pour les signaux commerciaux et réalise le trading crypto entièrement automatique. Amélioration des bénéfices en optimisant les paramètres et en ajoutant plus d'indicateurs d'assistance. Elle réduit considérablement les coûts d'exploitation manuelle pour les utilisateurs. Valeur de recherche approfondie et d'application pour les traders quant.


/*backtest
start: 2023-12-18 00:00:00
end: 2023-12-25 00:00:00
period: 10m
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/
// © onurenginogutcu

//@version=4
strategy("STRATEGY R18-F-BTC", overlay=true, margin_long=100, margin_short=100)

///////////default girişler 1 saatlik btc grafiği için geçerli olmak üzere - stop loss'lar %2.5 - long'da %7.6 , short'ta %8.1

sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT") /////////btc'yi indikatör olarak alıyoruz

lsl = input(title="Long Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
ssl = input(title="Short Stop Loss (%)",
     minval=0.0, step=0.1, defval=2.5) * 0.01
     
longtp = input(title="Long Take Profit (%)",
     minval=0.0, step=0.1, defval=7.6) * 0.01
     
shorttp = input(title="Short Take Profit (%)",
     minval=0.0, step=0.1, defval=7.5) * 0.01
     
capperc = input(title="Capital Percentage to Invest (%)",
     minval=0.0, maxval=100, step=0.1, defval=90) * 0.01
     
choice = input(title="Reverse ?", type=input.bool, defval=false)

symClose = security(sym, "", close)
symHigh = security(sym, "", high)
symLow = security(sym, "", low)

i = ema (symClose , 15) - ema (symClose , 30) ///////// ema close 15 ve 30 inanılmaz iyi sonuç verdi (macd standartı 12 26)
r = ema (i , 9)

sapust = highest (i , 100) * 0.729 //////////0.729 altın oran oldu 09.01.2022
sapalt = lowest (i , 100) * 0.729  //////////0.729 altın oran oldu 09.01.2022

///////////highx = highest (close , 365) * 0.72 fibo belki dahiledilebilir
///////////lowx = lowest (close , 365) * 1.272 fibo belki dahil edilebilir
simRSI = rsi (symClose , 50 ) /////// RSI DAHİL EDİLDİ "50 MUMLUK RSI EN İYİ SONUCU VERİYOR"


//////////////fibonacci seviyesi eklenmesi amacı ile koyuldu fakat en iyi sonuç %50 seviyesinin altı ve üstü (low ve high 38 barlık) en iyi sonuç verdi
fibvar = 38
fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)

///////////////////////////////////////////////////////////// INDICATOR CONDITIONS

longCondition = crossover(i, r) and i < sapalt and symClose < sma (symClose , 50) and simRSI < sma (simRSI , 50) and symClose < fibbottom
shortCondition = crossunder(i, r) and i > sapust and symClose > sma (symClose , 50) and simRSI > sma (simRSI , 50)  and symClose > fibtop

////////////////////////////////////////////////////////////////

///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////stratejilerde kalan capital için strategy.equity kullan (bunun üzerinden işlem yap)


if (choice == false and longCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
   

if (choice == false and shortCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and longCondition)
    strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close ,  when = strategy.position_size == 0)

if (choice == true and shortCondition)
    strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close ,   when = strategy.position_size == 0)
    

if (strategy.position_size > 0)
    strategy.exit("Exit Long", "Long", stop=strategy.position_avg_price*(1 - lsl) , limit=strategy.position_avg_price*(1 + longtp))

if (strategy.position_size < 0)
    strategy.exit("Exit Short", "Short", stop=strategy.position_avg_price*(1 + ssl) , limit=strategy.position_avg_price*(1 - shorttp))


////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)




Plus de