CASHISKING | CASHISKING
CMF, EMA, SMA
यह रणनीति चाइकिन कैपिटल फ्लो ((CMF) सूचक और इंडेक्स मूविंग एवरेज ((EMA) पर आधारित है, जो ट्रेडिंग सिग्नल उत्पन्न करता है। यह पहले निर्दिष्ट अवधि के भीतर CMF मानों की गणना करता है, फिर CMF डेटा को समतल करने के लिए दो अलग-अलग अवधि के EMA का उपयोग करता है। यह एक खरीद संकेत उत्पन्न करता है जब तेज ईएमए धीमी ईएमए के ऊपर से गुजरता है, और इसके विपरीत, यह एक बेचने का संकेत उत्पन्न करता है। यह रणनीति जोखिम को नियंत्रित करने और मुनाफे को लॉक करने के लिए स्टॉप और स्टॉप शर्तों को भी सेट करती है।
इस रणनीति में चाइकिन कैशफ्लो इंडिकेटर और इंडेक्स मूविंग एवरेज का उपयोग किया गया है, कीमतों और लेनदेन की मात्रा के आंकड़ों के साथ, ट्रेंड ट्रैकिंग को मुख्य विचार के रूप में रखा गया है, जबकि जोखिम को नियंत्रित करने के लिए स्टॉप-लॉस और स्टॉप-स्टॉप स्थितियां निर्धारित की गई हैं। रणनीति का लाभ यह है कि यह विभिन्न समय के पैमाने पर प्रवृत्तियों को पकड़ने के लिए बहुआयामी कारकों को समेकित करने में सक्षम है, लेकिन पैरामीटर सेटिंग और प्रवृत्ति की पहचान के लिए अनुकूलन के लिए अभी भी जगह है। भविष्य में, रणनीति की स्थिरता और लाभप्रदता को और बढ़ाया जा सकता है, जैसे कि पैरामीटर को गतिशील रूप से समायोजित करना, अन्य संकेतकों को पेश करना, स्टॉप-लॉस को अनुकूलित करना और स्थिति प्रबंधन के तरीके को जोड़ना।
/*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)