وسائل لوڈ ہو رہے ہیں... لوڈنگ...

کثیر عنصر کی مقدار پر مبنی تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-20 11:20:40
ٹیگز:

img

جائزہ

یہ حکمت عملی متعدد تکنیکی اشارے جیسے آر ایس آئی ، ایم اے سی ڈی ، او بی وی ، سی سی آئی ، سی ایم ایف ، ایم ایف آئی اور وی ڈبلیو ایم اے سی ڈی کو یکجا کرتی ہے تاکہ ممکنہ انٹری کے مواقع کی نشاندہی کرنے کے لئے قیمت اور حجم کے مابین اختلافات کا پتہ لگایا جاسکے۔ اس حکمت عملی میں اعلی اتار چڑھاؤ اور گہرائی یا وی ایف آئی کی شرائط پوری ہونے پر تجارتی سگنل پیدا کرنے کے لئے صارف ڈپ کا پتہ لگانے والے اشارے بھی شامل ہیں۔ یہ حکمت عملی صرف طویل عرصے تک جاتی ہے اور پوزیشنوں کو بتدریج جمع کرنے کے لئے ٹریکنگ اسٹاپ نقصان کا استعمال کرتی ہے۔

حکمت عملی منطق

  1. RSI ، MACD ، OBV ، CCI ، CMF ، MFI اور VWMACD جیسے اشارے کا حساب لگائیں ، اور انڈیکیٹرز اور تاریخی قیمتوں کے مابین تغیرات کا پتہ لگائیں جو انکولی لکیری رجسٹریشن کے طریقہ کار کا استعمال کرتے ہیں۔ جب اشارے کی قیمت نئی کم ہوجاتی ہے تو خریدنے کے سگنل تیار کریں جبکہ قیمت نہیں ہوتی ہے۔

  2. صارف کے ان پٹ اتار چڑھاؤ کی حد اور گہرائی فیصد کی حد کی بنیاد پر، VFI اشارے فلٹرنگ کے ساتھ مل کر، موم بتیوں پر سگنل تیار کرتے ہیں جو اعلی اتار چڑھاؤ اور گہرائی ٹیسٹ کو پورا کرتے ہیں.

  3. ابتدائی لانگ انٹری کے بعد، اگر قیمت آخری لانگ انٹری قیمت کو ایک ترتیب شدہ فیصد سے توڑتی ہے، تو ایک اور طویل پوزیشن شامل کریں.

  4. ٹریک سٹاپ نقصان کا استعمال کریں جب ترتیب شدہ لے منافع تناسب تک پہنچنے کے لئے پوزیشنوں کو بند کریں.

فوائد کا تجزیہ

  1. سگنل کی وشوسنییتا کو بہتر بنانے کے لئے کثیر عوامل کا مجموعہ قیمت اور حجم کے اشارے کا جامع استعمال کرتا ہے۔

  2. انکولی لکیری رجسٹریشن کا طریقہ اختلافات کا پتہ لگاتا ہے اور دستی فیصلے کی ذات پرستی سے بچتا ہے۔

  3. اتار چڑھاؤ، گہرائی/وی ایف آئی اشارے شامل کرنے سے واپسی کے مواقع کا پتہ چلتا ہے۔

  4. کثیر اندراج جمع کرنے سے واپسی کا مکمل استعمال ممکن ہوتا ہے، اور اسٹاپ منافع کو ٹریک کرنے سے منافع میں تالا لگانے میں مدد ملتی ہے۔

خطرے کا تجزیہ

  1. پیچیدہ کثیر عوامل کا فیصلہ پیرامیٹر کی اصلاح اور انحراف کے پتہ لگانے کی تاثیر پر منحصر ہے اصل کارکردگی کو متاثر کرسکتا ہے۔

  2. ایک طرفہ ہولڈنگ میں زیادہ خطرہ ہوتا ہے، اگر فیصلہ غلط ہو تو بڑے نقصانات ہو سکتے ہیں۔

  3. نقصان بار بار شامل کرنے کے ماڈل میں بڑھا سکتا ہے، پوزیشن سائز کو احتیاط سے کنٹرول کرنے کی ضرورت ہے.

  4. اصل منافع پر تجارتی فیسوں کے اثرات پر توجہ دیں۔

اصلاح کی ہدایات

  1. بہترین ترتیب کو منتخب کرنے کے لئے مختلف پیرامیٹرز اور اشارے کے مجموعے کی جانچ کریں.

  2. تجارت اور زیادہ سے زیادہ نقصانات پر کنٹرول کرنے کے لئے سٹاپ نقصان کی حکمت عملی شامل کریں.

  3. خطرات کو متنوع کرنے کے لئے دونوں سمتوں میں مواقع پر غور کریں.

  4. پیرامیٹرز کو خود بخود بہتر بنانے کے لئے مشین لرننگ کے طریقوں کو شامل کریں.

خلاصہ

یہ حکمت عملی تکنیکی اشارے کے امتزاج کے ذریعے انٹری ٹائمنگ کی نشاندہی کرتی ہے ، اور غلط سگنلز کو ختم کرنے کے لئے صارف کے ذریعہ طے شدہ حالات اور وی ایف آئی فلٹرنگ کا استعمال کرتی ہے۔ یہ رجحان کا پیچھا کرنے والی پوزیشنوں کو جمع کرنے کے لئے پل بیک کا فائدہ اٹھاتا ہے ، جو رجحانات میں مواقع حاصل کرنے میں مدد کرتا ہے۔ لیکن اس میں غلط فیصلے اور یکطرفہ ہولڈنگ کے خطرات بھی ہیں۔ خطرات کو کم کرنے اور منافع کی جگہ کو بڑھانے کے لئے اشارے کے پیرامیٹرز ، اسٹاپ نقصان کی حکمت عملی وغیرہ پر مناسب اصلاح کی ضرورت ہے۔


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 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("RSI ve MACD Uyumsuzluğu Stratejisi (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")






مزید