
یہ حکمت عملی ایک کثیر عنصر کی مقدار میں تجارت کرنے والی حکمت عملی ہے جس میں متعدد تکنیکی اشارے جیسے RSI ، MACD ، OBV ، CCI ، CMF ، MFI ، اور VWMACD شامل ہیں تاکہ اسٹاک کی مقدار میں تجارت کو خودکار بنایا جاسکے۔ اس حکمت عملی کا نام کثیر عنصر کی مقدار میں کمی کی حکمت عملی ہے۔
اس حکمت عملی کا بنیادی منطق یہ ہے کہ متعدد تکنیکی اشارے کی شکل کے مطابق فیصلہ کیا جائے۔ جب متعدد اشارے بیک وقت خریدنے کا اشارہ دیتے ہیں تو خریدنے کا عمل ہوتا ہے۔
خاص طور پر ، حکمت عملی میں آر ایس آئی ، میکڈ ، او بی وی ، سی سی آئی ، سی ایم ایف ، ایم ایف آئی اور وی ڈبلیو ایم اے سی ڈی اشارے ، ان کا پتہ لگائیں گے کہ آیا ان میں کمی کا رجحان ہے لیکن اشارے کی قیمت خود نہیں گرتی ہے۔ اگر ایسا ہوتا ہے تو ، اس کا اشارہ ہوسکتا ہے کہ اوپر کی طرف بڑھنے کا امکان ہے۔ اس طرح کی شکل کو کوڈ میں ایک خالی سر کا ارادہ کیا گیا ہے ، اگر ایک سے زیادہ اشارے بیک وقت خالی سر کا ارادہ رکھتے ہیں تو ، پھر ایک حتمی خریدنے کا اشارہ دیا جائے گا۔
اس کے علاوہ ، حکمت عملی میں غیر معمولی لین دین کی تعداد کا فیصلہ کرنے کی منطق بھی متعارف کروائی گئی ہے۔ جب قیمت میں اتار چڑھاؤ ہوتا ہے لیکن لین دین میں نمایاں اضافہ نہیں ہوتا ہے تو ، یہ ممکنہ طور پر جعلی بریک ہوسکتا ہے ، اس وقت بھی خریدنے کا اشارہ دیا جاتا ہے۔
مجموعی طور پر ، اس حکمت عملی نے متعدد تکنیکی اشارے کے الٹ سگنل کو دیکھ کر فیصلے کی درستگی کو بہتر بنایا ، اور اس کے نتیجے میں تبادلوں کی مقدار کے غیر معمولی فیصلے کو جوڑ دیا ، جو کہ ایک قابل قدر تجارتی حکمت عملی کی کامیابی کی کلید ہے۔
اس حکمت عملی کے درج ذیل فوائد ہیں:
کثیر عنصر ماڈل، 7 عام طور پر استعمال ہونے والے تکنیکی اشارے کے اشارے کے ساتھ مل کر، ٹریڈنگ کے فیصلے کی درستگی کو بہتر بناتا ہے.
ٹرانسمیشن ریورس سگنل کو متعارف کرایا گیا ہے، جعلی توڑنے کے دھوکہ دہی سے بچنے کے لئے، غیر فعال سگنل کو فلٹر کرنا.
اسٹاک کی قیمتوں میں کمی کا اندازہ لگانے کے لئے نیچے کی طرف جانے والے انداز کا استعمال کریں ، اور وقت سے پہلے اسٹاک کی قیمتوں میں اضافے کا وقت پکڑیں۔
خود کار طریقے سے ٹریڈنگ، انسانی مداخلت کے بغیر، آپریٹنگ اخراجات کو کم کر دیتا ہے.
حکمت عملی کی منطق واضح اور آسان ہے، سمجھنے، تبدیل کرنے اور بہتر بنانے کے لئے آسان ہے.
اس حکمت عملی کے کچھ خطرات بھی ہیں:
متعدد عوامل کا غلط امتزاج ، ممکنہ طور پر تنازعہ والے تجارتی سگنل پیدا کرسکتا ہے۔ آپ کو ہر عنصر کے پیرامیٹرز کو جانچنے اور ان کی بہترین ترتیب تلاش کرنے کی ضرورت ہے۔
ریورس ٹریڈنگ میں خود ہی کچھ خطرہ ہوتا ہے ، اس میں دوبارہ ریورس ہونے کا امکان ہے۔ اس خطرے کو کنٹرول کرنے کے لئے اسٹاپ نقصان کی پوزیشن قائم کی جاسکتی ہے۔
VOLUME اشارے کچھ کم لیکویڈیٹی والے اسٹاک کے لئے ناقابل عمل ہوسکتے ہیں ، اس وقت VOLUME وزن کو کم کیا جاسکتا ہے یا اس حصے کے اسٹاک کو خارج کردیا جاسکتا ہے۔
ریٹائٹنگ کے وقت ڈیٹا کی مماثلت کا اثر اچھا ہے ، ریل ڈسک وقت کی کارکردگی خراب ہوسکتی ہے۔ ٹیسٹ کے لئے مزید ریل ڈسک ڈیٹا جمع کرنے کی ضرورت ہے۔
اس حکمت عملی کو مزید بہتر بنانے کے لیے مندرجہ ذیل نکات پر غور کیا جا سکتا ہے:
کچھ تکنیکی اشارے کو شامل یا کم کریں تاکہ ملٹی فیکٹر ماڈل کو زیادہ سے زیادہ ترتیب دیا جاسکے۔
مختلف قسم کے اسٹاک کے ل different مختلف پیرامیٹرز یا وزن مرتب کریں تاکہ حکمت عملی زیادہ ہدف بنائے۔
متحرک سٹاپ نقصان کی ترتیب، منافع کو لاک کرنے اور خطرے کو کنٹرول کرنے کے لئے اسٹاپ کو منتقل کرنا۔
ایک مخصوص شعبے میں اسٹاک ٹریڈنگ کو منتخب کرنے کے لئے صنعت، تصور، وغیرہ کی معلومات کے ساتھ مل کر.
مشین لرننگ الگورتھم کو شامل کریں تاکہ حکمت عملی کے پیرامیٹرز کو خودکار طور پر بہتر بنایا جاسکے۔
یہ حکمت عملی مجموعی طور پر ایک بہت ہی ممکنہ مقداری تجارت کی حکمت عملی ہے۔ یہ متعدد تکنیکی اشارے کے اشاروں کو جوڑتا ہے ، جس میں مقداری معکوس فیصلے کی مدد کی جاتی ہے ، جس سے اسٹاک میں الٹ جانے کے مواقع کو مؤثر طریقے سے پتہ چل سکتا ہے ، اور تجارت کو خودکار بنایا جاسکتا ہے۔ پیرامیٹرز کی اصلاح اور خطرے پر قابو پانے کے بعد ، بہتر منافع کی توقع ہے۔ یہ حکمت عملی نئی ہے اور مزید تحقیق اور اطلاق کے قابل ہے۔
/*backtest
start: 2023-01-18 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mkose81
//@version=5
strategy("MK future stopsuz 40 alım (Sadece Long)", overlay=true, max_bars_back=4000,use_bar_magnifier= true,pyramiding=40)
// RSI Hesaplama
rsi = ta.rsi(close, 14)
float botRSI = na
botRSI := ta.pivotlow(5, 5)
botcRSI = 0
botcRSI := botRSI ? 5 : nz(botcRSI[1]) + 1
newbotRSI = ta.pivotlow(5, 0)
emptylRSI = true
if not na(newbotRSI) and newbotRSI < low[botcRSI]
diffRSI = (newbotRSI - low[botcRSI]) / botcRSI
llineRSI = newbotRSI - diffRSI
for x = 1 to botcRSI - 1 by 1
if close[x] < llineRSI
emptylRSI := false
break
llineRSI -= diffRSI
emptylRSI
// Pozitif Uyumsuzluk Alım Sinyali - RSI
alRSI = 0
if emptylRSI and not na(newbotRSI)
if rsi[botcRSI] < rsi
alRSI := 1
// MACD Hesaplama
[macd, signal, _] = ta.macd(close, 21, 55, 8)
float botMACD = na
botMACD := ta.pivotlow(5, 5)
botcMACD = 0
botcMACD := botMACD ? 5 : nz(botcMACD[1]) + 1
newbotMACD = ta.pivotlow(5, 0)
emptylMACD = true
if not na(newbotMACD) and newbotMACD < low[botcMACD]
diffMACD = (newbotMACD - low[botcMACD]) / botcMACD
llineMACD = newbotMACD - diffMACD
for x = 1 to botcMACD - 1 by 1
if close[x] < llineMACD
emptylMACD := false
break
llineMACD -= diffMACD
emptylMACD
// Pozitif Uyumsuzluk Alım Sinyali - MACD
alMACD = 0
if emptylMACD and not na(newbotMACD)
if macd[botcMACD] < macd
alMACD := 1
// OBV Hesaplama ve Uyumsuzluk Tespiti
obv = ta.cum(ta.change(close) > 0 ? volume : ta.change(close) < 0 ? -volume : 0)
float botOBV = na
botOBV := ta.pivotlow(5, 5)
botcOBV = 0
botcOBV := botOBV ? 5 : nz(botcOBV[1]) + 1
newbotOBV = ta.pivotlow(5, 0)
emptylOBV = true
if not na(newbotOBV) and newbotOBV < obv[botcOBV]
diffOBV = (newbotOBV - obv[botcOBV]) / botcOBV
llineOBV = newbotOBV - diffOBV
for x = 1 to botcOBV - 1 by 1
if obv[x] < llineOBV
emptylOBV := false
break
llineOBV -= diffOBV
emptylOBV
// Pozitif Uyumsuzluk Alım Sinyali - OBV
alOBV = 0
if emptylOBV and not na(newbotOBV)
if obv[botcOBV] < obv
alOBV := 1
// CCI Hesaplama ve Uyumsuzluk Tespiti
cci = ta.cci(close, 20)
float botCCI = na
botCCI := ta.pivotlow(5, 5)
botcCCI = 0
botcCCI := botCCI ? 5 : nz(botcCCI[1]) + 1
newbotCCI = ta.pivotlow(5, 0)
emptylCCI = true
if not na(newbotCCI) and newbotCCI < cci[botcCCI]
diffCCI = (newbotCCI - cci[botcCCI]) / botcCCI
llineCCI = newbotCCI - diffCCI
for x = 1 to botcCCI - 1 by 1
if cci[x] < llineCCI
emptylCCI := false
break
llineCCI -= diffCCI
emptylCCI
// Pozitif Uyumsuzluk Alım Sinyali - CCI
alCCI = 0
if emptylCCI and not na(newbotCCI)
if cci[botcCCI] < cci
alCCI := 1
// CMF Hesaplama
length = 20
mfm = ((close - low) - (high - close)) / (high - low)
mfv = mfm * volume
cmf = ta.sma(mfv, length) / ta.sma(volume, length)
float botCMF = na
botCMF := ta.pivotlow(5, 5)
botcCMF = 0
botcCMF := botCMF ? 5 : nz(botcCMF[1]) + 1
newbotCMF = ta.pivotlow(5, 0)
emptylCMF = true
if not na(newbotCMF) and newbotCMF < cmf[botcCMF]
diffCMF = (newbotCMF - cmf[botcCMF]) / botcCMF
llineCMF = newbotCMF - diffCMF
for x = 1 to botcCMF - 1 by 1
if cmf[x] < llineCMF
emptylCMF := false
break
llineCMF -= diffCMF
emptylCMF
// Pozitif Uyumsuzluk Alım Sinyali - CMF
alCMF = 0
if emptylCMF and not na(newbotCMF)
if cmf[botcCMF] < cmf
alCMF := 1
// MFI Hesaplama
lengthMFI = 14
mfi = ta.mfi(close, lengthMFI)
float botMFI = na
botMFI := ta.pivotlow(mfi, 5, 5)
botcMFI = 0
botcMFI := botMFI ? 5 : nz(botcMFI[1]) + 1
newbotMFI = ta.pivotlow(mfi, 5, 0)
emptylMFI = true
if not na(newbotMFI) and newbotMFI < mfi[botcMFI]
diffMFI = (newbotMFI - mfi[botcMFI]) / botcMFI
llineMFI = newbotMFI - diffMFI
for x = 1 to botcMFI - 1 by 1
if mfi[x] < llineMFI
emptylMFI := false
break
llineMFI -= diffMFI
emptylMFI
// Pozitif Uyumsuzluk Alım Sinyali - MFI
alMFI = 0
if emptylMFI and not na(newbotMFI)
if mfi[botcMFI] < mfi
alMFI := 1
// VWMACD Hesaplama
fastLength = 12
slowLength = 26
signalSmoothing = 9
vwmacd = ta.ema(close, fastLength) - ta.ema(close, slowLength)
signalLine = ta.ema(vwmacd, signalSmoothing)
histogram = vwmacd - signalLine
// VWMACD Uyumsuzluk Tespiti
float botVWMACD = na
botVWMACD := ta.pivotlow(histogram, 5, 5)
botcVWMACD = 0
botcVWMACD := botVWMACD ? 5 : nz(botcVWMACD[1]) + 1
newbotVWMACD = ta.pivotlow(histogram, 5, 0)
emptylVWMACD = true
if not na(newbotVWMACD) and newbotVWMACD < histogram[botcVWMACD]
diffVWMACD = (newbotVWMACD - histogram[botcVWMACD]) / botcVWMACD
llineVWMACD = newbotVWMACD - diffVWMACD
for x = 1 to botcVWMACD - 1 by 1
if histogram[x] < llineVWMACD
emptylVWMACD := false
break
llineVWMACD -= diffVWMACD
emptylVWMACD
// Pozitif Uyumsuzluk Alım Sinyali - VWMACD
alVWMACD = 0
if emptylVWMACD and not na(newbotVWMACD)
if histogram[botcVWMACD] < histogram
alVWMACD := 1
//Dipci indikator
lengthd= 130
coef = 0.2
vcoef = 2.5
signalLength = 5
smoothVFI = false
ma(x, y) =>
smoothVFI ? ta.sma(x, y) : x
typical = hlc3
inter = math.log(typical) - math.log(typical[1])
vinter = ta.stdev(inter, 30)
cutoff = coef * vinter * close
vave = ta.sma(volume, lengthd)[1]
vmax = vave * vcoef
vc = volume < vmax ? volume : vmax //min( volume, vmax )
mf = typical - typical[1]
iff_4 = mf < -cutoff ? -vc : 0
vcp = mf > cutoff ? vc : iff_4
vfi = ma(math.sum(vcp, lengthd) / vave, 3)
vfima = ta.ema(vfi, signalLength)
d = vfi - vfima
// Kullanıcı girdileri
volatilityThreshold = input.float(1.005, title="Volume Percentage Threshold")
pinThreshold = input.float(1.005, title="Deep Percentage Threshold")
// Hesaplamalar
volatilityPercentage = (high - low) / open
pinPercentage = close > open ? (high - close) / open : (close - low) / open
// Volatilite koşulu ve VFI ile filtreleme
voldip = volatilityPercentage >= volatilityThreshold or pinPercentage >= pinThreshold
volCondition = voldip and vfi< 0 // VFI değeri 0'dan küçükse volCondition aktif olacak
threeCommasEntryComment = input.string(title="3Commas Entry Comment", defval="")
threeCommasExitComment = input.string(title="3Commas Exit Comment", defval="")
takeProfitPerc = input.float(1, title="Take Profit Percentage (%)") / 100
fallPerc = input.float(5, title="Percentage for Additional Buy (%)") / 100
// Değişkenlerin tanımlanması
var float lastBuyPrice = na
var float tpPrice = na
var int lastTpBar = na
// Alım koşulları
longCondition = alRSI or alMACD or alOBV or alCCI or alCMF or alMFI or alVWMACD or volCondition
// Son alım fiyatını saklamak için değişken
// İlk alım stratejisi
if (longCondition and strategy.position_size == 0)
strategy.entry("Long", strategy.long, comment=threeCommasEntryComment)
lastBuyPrice := open
// İkinci ve sonraki alım koşulları (son alım fiyatının belirlenen yüzde altında)
if (open < lastBuyPrice * (1 - fallPerc) and strategy.position_size > 0)
strategy.entry("Long Add", strategy.long, comment=threeCommasEntryComment)
lastBuyPrice := open
// Kar alma fiyatını hesaplama ve strateji çıkışı
tp_price = strategy.position_avg_price * (1 + takeProfitPerc)
if strategy.position_size > 0
strategy.exit("Exit Long", "Long", limit=tp_price, comment=threeCommasExitComment)
strategy.exit("Exit Long Add", "Long Add", limit=tp_price, comment=threeCommasExitComment)
tpPrice := na // Pozisyon kapandığında TP çizgisini sıfırla
// Kar alma seviyesi çizgisi çizme
plot(strategy.position_size > 0 ? tp_price : na, color=color.green, title="Take Profit Line")