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