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