CASHISKING | CASHISKING
CMF, EMA, SMA
Aperçu
La stratégie génère un signal de transaction basé sur l’indicateur de flux de fonds Chaikin (CMF) et l’indice des moyennes mobiles (EMA). On calcule d’abord la valeur du CMF pour la période donnée, puis on utilise deux EMA de périodes différentes pour lisser les données du CMF.
Principe de stratégie
- Chaikin Calcule la valeur du flux de trésorerie de Chaikin (CMF) au cours d’une période donnée. L’indicateur CMF combine les données de prix et de volume de transactions pour mesurer l’intensité des entrées et des sorties de fonds.
- Les données du CMF sont traitées en douceur avec des moyennes mobiles indexées (EMA) de deux périodes différentes. L’EMA rapide est utilisée pour capturer les tendances à court terme et l’EMA lente pour déterminer les tendances à long terme.
- Un signal d’achat est généré lorsque l’EMA rapide est croisée au-dessus de l’EMA lente; un signal de vente est généré lorsque l’EMA rapide est croisée au-dessous de l’EMA lente.
- Après avoir généré un signal de transaction, la stratégie attend la confirmation des deux lignes K pour éviter un faux signal.
- Les conditions d’arrêt et d’arrêt sont définies: le prix d’arrêt est un certain pourcentage du prix d’ouverture de la position et le prix d’arrêt est un certain pourcentage du prix d’ouverture de la position.
Analyse des avantages
- Combinaison des données sur les prix et les volumes de transactions: l’ensemble des indicateurs CMF prend en compte les données sur les prix et les volumes de transactions, ce qui permet de refléter plus complètement les flux de fonds sur le marché et de fournir des signaux de transaction plus fiables.
- Suivi des tendances: en utilisant des EMA de différentes périodes, la stratégie peut capturer à la fois des tendances à court et à long terme et s’adapter à différentes conditions de marché.
- Confirmation du signal: après la génération du signal de transaction, la stratégie attend la confirmation des deux lignes K, ce qui permet de filtrer les faux signaux et d’améliorer le taux de réussite des transactions.
- Contrôle des risques: les conditions de stop-loss et de stop-loss sont définies pour contrôler efficacement les risques d’une transaction individuelle, tout en bloquant les bénéfices déjà réalisés.
Analyse des risques
- Optimisation des paramètres: la performance de la stratégie dépend de la sélection cyclique du CMF et de l’EMA. Des paramètres différents peuvent être nécessaires pour différents environnements de marché, ce qui nécessite une optimisation des paramètres périodique.
- Identification des tendances: les stratégies peuvent générer plus de faux signaux dans les marchés instables ou les points de basculement, ce qui entraîne des transactions fréquentes et des pertes de fonds.
- Points de glissement et coûts de transaction: la fréquence des transactions peut augmenter les points de glissement et les coûts de transaction, affectant les bénéfices globaux de la stratégie.
Direction d’optimisation
- Paramètres d’ajustement dynamique: les paramètres cycliques du CMF et de l’EMA sont ajustés dynamiquement en fonction de l’évolution de l’environnement du marché pour s’adapter à différentes conditions du marché.
- Introduction d’autres indicateurs: combinés à d’autres indicateurs techniques, tels que l’indice de force relative (RSI) et l’amplitude réelle moyenne (ATR), afin d’améliorer la précision de la détection des tendances et la fiabilité du signal.
- Optimiser les arrêts et les arrêts: Adaptez dynamiquement le pourcentage de arrêts et d’arrêts en fonction de la volatilité du marché et des préférences de risque pour mieux contrôler les risques et bloquer les bénéfices.
- Adhésion à la gestion des positions: ajuster dynamiquement la taille des positions en fonction des tendances du marché et de l’intensité des signaux, augmenter les positions lorsque les tendances sont claires et réduire les positions en cas d’incertitude.
Résumer
La stratégie utilise l’indicateur de flux de trésorerie et les moyennes mobiles des indices de Chaikin, combinant des données sur les prix et le volume des transactions, avec le suivi des tendances comme idée principale, tout en définissant des conditions de stop-loss et de stop-loss pour contrôler les risques. L’avantage de la stratégie réside dans la capacité de prendre en compte de multiples facteurs et de capturer des tendances à différentes échelles temporelles, mais il reste encore de la place pour l’optimisation en termes de paramètres et d’identification des tendances.
Code source de la stratégie
/*backtest
start: 2023-06-01 00:00:00
end: 2024-06-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("CASHISKING", overlay=false)
// Kullanıcı girişleri ile parametreler
cmfPeriod = input.int(200, "CMF Periyodu", minval=1)
emaFastPeriod = input.int(80, "Hızlı EMA Periyodu", minval=1)
emaSlowPeriod = input.int(160, "Yavaş EMA Periyodu", minval=1)
stopLossPercent = input.float(3, "Stop Loss Yüzdesi", minval=0.1) / 100
stopGainPercent = input.float(5, "Stop Gain Yüzdesi", minval=0.1) / 100
// CMF hesaplama fonksiyonu
cmfFunc(close, high, low, volume, length) =>
clv = ((close - low) - (high - close)) / (high - low)
valid = not na(clv) and not na(volume) and (high != low)
clv_volume = valid ? clv * volume : na
sum_clv_volume = ta.sma(clv_volume, length)
sum_volume = ta.sma(volume, length)
cmf = sum_volume != 0 ? sum_clv_volume / sum_volume : na
cmf
// CMF değerlerini hesaplama
cmf = cmfFunc(close, high, low, volume, cmfPeriod)
// EMA hesaplamaları
emaFast = ta.ema(cmf, emaFastPeriod)
emaSlow = ta.ema(cmf, emaSlowPeriod)
// Göstergeleri çiz
plot(emaFast, color=color.blue, title="EMA 23")
plot(emaSlow, color=color.orange, title="EMA 50")
// Alım ve Satım Sinyalleri
crossOverHappened = ta.crossover(emaFast, emaSlow)
crossUnderHappened = ta.crossunder(emaFast, emaSlow)
// Kesişme sonrası bekleme sayacı
var int crossOverCount = na
var int crossUnderCount = na
if (crossOverHappened)
crossOverCount := 0
if (crossUnderHappened)
crossUnderCount := 0
if (not na(crossOverCount))
crossOverCount += 1
if (not na(crossUnderCount))
crossUnderCount += 1
// Alım ve Satım işlemleri
if (crossOverCount == 2)
strategy.entry("Buy", strategy.long)
crossOverCount := na // Sayaç sıfırlanır
if (crossUnderCount == 2)
strategy.entry("Sell", strategy.short)
crossUnderCount := na // Sayaç sıfırlanır
// Stop Loss ve Stop Gain hesaplama
longStopPrice = strategy.position_avg_price * (1 - stopLossPercent)
shortStopPrice = strategy.position_avg_price * (1 + stopLossPercent)
longTakeProfitPrice = strategy.position_avg_price * (1 + stopGainPercent)
shortTakeProfitPrice = strategy.position_avg_price * (1 - stopGainPercent)
// Stop Loss ve Stop Gain'i uygula
if (strategy.position_size > 0 and strategy.position_avg_price > 0)
strategy.exit("Stop", "Buy", stop=longStopPrice, limit=longTakeProfitPrice)
else if (strategy.position_size < 0 and strategy.position_avg_price > 0)
strategy.exit("Stop", "Sell", stop=shortStopPrice, limit=shortTakeProfitPrice)