নগদীকরণ সিএমএফ, ইএমএ, এসএমএ
এই কৌশলটি চৈকিন মানি ফ্লো (সিএমএফ) সূচক এবং এক্সপোনেনশিয়াল মুভিং এভারেজ (ইএমএ) এর উপর ভিত্তি করে ট্রেডিং সিগন্যাল তৈরি করে। এটি প্রথমে একটি নির্দিষ্ট সময়ের জন্য সিএমএফ মানগুলি গণনা করে, তারপরে সিএমএফ ডেটা মসৃণ করার জন্য বিভিন্ন সময়ের সাথে দুটি ইএমএ ব্যবহার করে। দ্রুত ইএমএ ধীর ইএমএর উপরে অতিক্রম করলে একটি ক্রয় সংকেত উত্পন্ন হয়, যখন দ্রুত ইএমএ ধীর ইএমএর নীচে অতিক্রম করে তখন একটি বিক্রয় সংকেত উত্পন্ন হয়। কৌশলটি ঝুঁকি পরিচালনা এবং মুনাফা লক করার জন্য স্টপ-লস এবং লাভের শর্তও সেট করে।
এই কৌশলটি চৈকিন মানি ফ্লো সূচক এবং এক্সপোনেনশিয়াল মুভিং এভারেজ ব্যবহার করে, প্রবণতা ট্র্যাকিংয়ের উপর প্রাথমিক দৃষ্টি নিবদ্ধ করে মূল্য এবং ভলিউম ডেটা একত্রিত করে। এটি ঝুঁকি পরিচালনার জন্য স্টপ-লস এবং লাভ নেওয়ার শর্তও নির্ধারণ করে। কৌশলটির সুবিধা হ'ল এটি একাধিক কারণকে ব্যাপকভাবে বিবেচনা করার এবং বিভিন্ন সময় স্কেলে প্রবণতা ক্যাপচার করার ক্ষমতা রয়েছে। তবে, প্যারামিটার সেটিং এবং প্রবণতা স্বীকৃতিতে অপ্টিমাইজেশনের জন্য এখনও জায়গা রয়েছে। ভবিষ্যতে, কৌশলটির স্থায়িত্ব এবং মুনাফা গতিশীল প্যারামিটার সমন্বয়, অন্যান্য সূচক অন্তর্ভুক্তকরণ, স্টপ-লস এবং লাভ নেওয়ার অপ্টিমাইজেশন এবং অবস্থান আকারের বাস্তবায়নের মাধ্যমে আরও উন্নত করা যেতে পারে।
/*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)