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

CCI+RSI+KC ٹرینڈ فلٹر دو طرفہ تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-05-15 16:56:03
ٹیگز:سی سی آئیآر ایس آئیKCایس ایم اےای ایم اےایس ایم ایم اےسی ایم اےٹی ایم اے

img

جائزہ

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

حکمت عملی کے اصول

  1. سی سی آئی ، آر ایس آئی ، اور کے سی اشارے کا حساب لگائیں۔ اوپری کے سی لائن وسط لائن پلس اے ٹی آر ہے ، اور نچلی لائن وسط لائن مائنس اے ٹی آر ہے۔
  2. ان پٹ پیرامیٹرز کی بنیاد پر چلتی اوسط کی قسم (SMA، EMA، SMMA، CMA، یا TMA) اور رجحان فلٹر کا طریقہ (OFF، Normal، یا Reversed) منتخب کریں۔
  3. لانگ انٹری کی شرائط: لانگ، سی سی آئی < اوور سیلڈ لائن، بند < کے سی نچلی لائن، آر ایس آئی < اوور سیلڈ لائن، حجم > 50 پیریڈ اوسط حجم * ضارب، کوئی موجودہ لانگ پوزیشن۔
  4. مختصر اندراج کی شرائط: مختصر ، CCI > زیادہ خرید لائن ، بند > KC اوپری لائن ، RSI > زیادہ خرید لائن ، حجم > 50 پیریڈ اوسط حجم * ضارب ، کوئی موجودہ مختصر پوزیشن۔
  5. طویل باہر نکلنے کی حالت: CCI > 0. مختصر باہر نکلنے کی حالت: CCI < 0.
  6. پوزیشن کھولنے اور بند کرنے پر انتباہات بھیجیں.

حکمت عملی کے فوائد

  1. جامع تجزیہ کے لئے متعدد اشارے کو یکجا کرتا ہے، سگنل کی درستگی کو بہتر بناتا ہے.
  2. رجحان فلٹر کے طریقوں کا استعمال کرتا ہے، جو مارکیٹ کے رجحانات پر مبنی لچکدار ایڈجسٹمنٹ کی اجازت دیتا ہے.
  3. مختلف مارکیٹ کی خصوصیات کو اپنانے کے لئے متعدد چلتی اوسط اقسام پیش کرتا ہے۔
  4. طویل مدتی تاریخی اعداد و شمار کے ذریعے تصدیق شدہ، جو طویل مدتی استعمال کے لئے اچھی استحکام اور مناسب ہے.
  5. دو طرفہ تجارت، مختلف مارکیٹ کے حالات کے لئے موزوں، زیادہ منافع کے مواقع فراہم کرتا ہے.
  6. انتہائی خودکار، کسی دستی مداخلت کی ضرورت نہیں، وقت اور کوشش کی بچت.

حکمت عملی کے خطرات

  1. روایتی سٹاپ نقصان اور منافع لینے کی کمی ہے، جو ممکنہ طور پر انتہائی مارکیٹ کے حالات میں اہم ڈراؤونگ کی قیادت کرتی ہے.
  2. غیر مستحکم مارکیٹوں میں پوزیشنوں کے اکثر کھولنے اور بند ہونے کا تجربہ کرسکتا ہے ، جس سے تجارتی اخراجات میں اضافہ ہوتا ہے۔
  3. نسبتا مختصر CCI ادوار کا استعمال کرتا ہے، ممکنہ طور پر شور سگنل پیدا کرتا ہے.
  4. جب رجحانات غیر واضح ہوں یا مارکیٹ میں اتار چڑھاؤ بڑھ جائے تو رجحان فلٹرز کی افادیت محدود ہوسکتی ہے۔
  5. مقررہ پوزیشن سائزنگ، مارکیٹ میں اتار چڑھاؤ میں تبدیلیوں کے مطابق کرنے کے قابل نہیں

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

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

خلاصہ

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


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('CCI Strategy with Trend Filter AUDNZD, GBPNZD', overlay=true, default_qty_type=strategy.cash, default_qty_value=50000, commission_value=0.0005, slippage=2, initial_capital=10000)

// State variables to ensure one entry per signal
var bool isLongOpen = false
var bool isShortOpen = false

// Input Parameters for allowing long and short trades
allowLong = input(true, title='Allow Long Trades')
allowShort = input(true, title='Allow Short Trades')

// Trend Filter Inputs
maType = input.string(title='MA Type', options=['OFF', 'SMA', 'EMA', 'SMMA', 'CMA', 'TMA'], defval='OFF')
trendFilterMethod = input.string(title='Trend Filter Method', options=['OFF', 'Normal', 'Reversed'], defval='OFF')
maLength = input(14, title='MA Length')

// Other Input Parameters
lengthKC = input(30, title='Keltner Channels Length')
multKC = input(0.7, title='Keltner Channels Multiplier')
lengthCCI = input(5, title='CCI Length')
overboughtCCI = input(75, title='CCI Overbought Level')
oversoldCCI = input(-75, title='CCI Oversold Level')
rsiPeriod = input(30, title='RSI Period')
rsiOverbought = input(60, title='RSI Overbought Level')
rsiOversold = input(60, title='RSI Oversold Level')
volumeMultiplier = input.float(0, title='Volume Multiplier', step=0.1, minval=0)

// Define Moving Averages
var float maValue = na
if maType == 'SMA'
    maValue := ta.sma(close, maLength)
else if maType == 'EMA'
    maValue := ta.ema(close, maLength)
else if maType == 'SMMA'
    float initialSMMA = ta.sma(close, maLength)
    maValue := na(maValue[1]) ? initialSMMA : (maValue[1] * (maLength - 1) + close) / maLength
else if maType == 'CMA'
    float firstSMA = ta.sma(close, maLength)
    float secondSMA = ta.sma(close, maLength)
    maValue := na(maValue[1]) ? firstSMA : (firstSMA + secondSMA - maValue[1]) / 2
else if maType == 'TMA'
    maValue := ta.sma(ta.sma(close, math.round(maLength / 2)), math.round(maLength / 2) + 1)

// Entry Conditions with Trend Filter
longCondition = allowLong and (trendFilterMethod == 'OFF' or trendFilterMethod == 'Normal' and close > maValue or trendFilterMethod == 'Reversed' and close < maValue)
shortCondition = allowShort and (trendFilterMethod == 'OFF' or trendFilterMethod == 'Normal' and close < maValue or trendFilterMethod == 'Reversed' and close > maValue)

// Keltner Channels
typicalPrice = hlc3
middleLine = ta.sma(typicalPrice, lengthKC)
range_1 = multKC * ta.atr(lengthKC)
upperChannel = middleLine + range_1
lowerChannel = middleLine - range_1

// CCI
cci = ta.cci(close, lengthCCI)

// RSI
rsi = ta.rsi(close, rsiPeriod)

// Volume
volCondition = volume > ta.sma(volume, 50) * volumeMultiplier

// Combined Entry Conditions with Trend Filter and state check
longCondition := longCondition and cci < oversoldCCI and low < lowerChannel and rsi < rsiOversold and volCondition and not isLongOpen
shortCondition := shortCondition and cci > overboughtCCI and high > upperChannel and rsi > rsiOverbought and volCondition and not isShortOpen

// Execute orders at the open of the new bar after conditions are met
if longCondition
    strategy.entry('Long', strategy.long)
    alert('LicenseID,buy,AUDNZD,risk=1')
    isLongOpen := true
if shortCondition
    strategy.entry('Short', strategy.short)
    alert('LicenseID,sell,AUDNZD,risk=1')
    isShortOpen := true

// Exit Conditions and Alerts
longExitCondition = cci > 0
shortExitCondition = cci < 0
if (longExitCondition and isLongOpen)
    strategy.close('Long')
    alert('LiceneseID,closelong,AUDNZD')
    isLongOpen := false
if (shortExitCondition and isShortOpen)
    strategy.close('Short')
    alert('LicenseID,closeshort,AUDNZD')
    isShortOpen := false

// Plotting
plot(upperChannel, color=color.new(color.red, 0), linewidth=1)
plot(lowerChannel, color=color.new(color.green, 0), linewidth=1)
hline(overboughtCCI, 'Overbought', color=color.red)
hline(oversoldCCI, 'Oversold', color=color.green)


متعلقہ

مزید