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

ملٹی انڈیکیٹر سکورنگ ٹریڈنگ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-07 16:16:45
ٹیگز:

img

جائزہ

ملٹی انڈیکیٹر اسکورنگ ٹریڈنگ حکمت عملی میں خودکار تجارت کے لئے رجحان کی سمت اور طاقت کی نشاندہی کرنے کے لئے تکنیکی اشارے اسکورنگ کو مربوط کیا گیا ہے۔ اس میں اشارے کے ایک گروپ پر غور کیا گیا ہے جس میں Ichimoku کلاؤڈ ، HMA ، RSI ، اسٹاک ، CCI اور MACD شامل ہیں۔ ہر اشارے کا نتیجہ اسکور کیا جاتا ہے اور مجموعی اسکور تمام اشارے کے اسکور کو اوسط کرکے شمار کیا جاتا ہے۔ جب مجموعی اسکور حد سے اوپر ہوتا ہے تو ، طویل ہوجائیں۔ جب حد سے نیچے ہوتا ہے تو ، مختصر ہوجائیں۔

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

اسٹریٹیجی میں کئی حصے شامل ہیں:

  1. اشارے کے ایک گروپ کا حساب لگائیں جن میں Ichimoku Cloud، Hull Moving Average، Relative Strength Index، Stochastic، Commodity Channel Index اور Moving Average Convergence Divergence شامل ہیں۔

  2. ہر اشارے کو اسکور کریں ۔ تیزی کے اشارے کے لئے مثبت اسکور اور bearish اشارے کے لئے منفی اسکور دیں ۔

  3. مجموعی سکور حاصل کرنے کے لئے تمام اشارے کے سکور کا مجموعہ اور اوسط۔

  4. مجموعی سکور کا موازنہ پہلے سے طے شدہ حد سے کریں تاکہ مجموعی رجحان کی سمت کا تعین کیا جاسکے۔ جب اسکور حد سے زیادہ ہو تو طویل ، کم ہو تو مختصر۔

  5. کھلی پوزیشن فیصلے کی بنیاد پر۔ بلند ہو تو لمبی، نیچے ہو تو مختصر۔

  6. اے ٹی آر کی بنیاد پر سٹاپ نقصان اور منافع حاصل کریں۔

یہ حکمت عملی مارکیٹ کے رجحان کا تعین کرنے کے لئے متعدد اشارے کے فوائد کا بھرپور استعمال کرتی ہے۔ ایک اشارے کے مقابلے میں ، اس سے کچھ غلط اشاروں کو فلٹر کرنے اور وشوسنییتا بڑھانے میں مدد ملتی ہے۔

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

اس حکمت عملی کے فوائد میں شامل ہیں:

  1. متعدد اشارے مل کر سگنل کی درستگی کو بہتر بناتے ہیں۔ واحد اشارے میں غلط سگنل کا امکان ہوتا ہے۔ اسکورنگ اور اوسط سے غلط سگنل کو مؤثر طریقے سے فلٹر کرنے میں مدد ملتی ہے۔

  2. رجحان اور رفتار کی نشاندہی کرنے کے لئے اشارے کی طاقتوں کا استعمال کریں۔ مثال کے طور پر ، رجحان کے لئے Ichimoku Cloud ، overbought اور oversold کے لئے اسٹوکاسٹکس۔

  3. خودکار تجارت جذباتی اثرات سے بچتی ہے اور حکمت عملی کے اشاروں پر سختی سے عمل کرتی ہے۔

  4. سٹاپ نقصان کے لئے اے ٹی آر کا استعمال کریں اور منافع لے لو خطرے کے انتظام میں مدد ملتی ہے.

  5. پیرامیٹرز اور سکور کی حد مختلف مصنوعات کے لئے بہتر بنایا جا سکتا ہے.

  6. سادہ اور واضح منطق، سمجھنے اور تبدیل کرنے کے لئے آسان.

خطرے کا تجزیہ

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

  1. ایک سے زیادہ اشارے کا مجموعہ لازمی طور پر ایک سے بہتر نہیں ہوتا۔ زیادہ سے زیادہ پیرامیٹرز تلاش کرنے کے لئے بار بار ٹیسٹ کرنے کی ضرورت ہوتی ہے۔

  2. جب اشارے غلط سگنل دیتے ہیں تو اوسط سکور نقصانات سے مکمل طور پر بچ نہیں سکتے۔

  3. اے ٹی آر اسٹاپ بہت قریب یا بہت لچکدار ہوسکتے ہیں۔ مصنوعات کی نوعیت کی بنیاد پر ایڈجسٹمنٹ کی ضرورت ہے۔

  4. ضرورت سے زیادہ اصلاحات سے زیادہ فٹنگ سے بچیں۔ مختلف مصنوعات اور وقت کے ادوار پر استحکام کی جانچ کریں۔

  5. تجارت کی اعلی تعدد ٹرانزیکشن لاگت میں اضافہ کرتی ہے جو حتمی واپسی کو بھی متاثر کرتی ہے۔

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

حکمت عملی کو مندرجہ ذیل پہلوؤں میں بہتر بنایا جاسکتا ہے:

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

  2. اشارے کے اسکور وزن کو ایڈجسٹ کریں، اسکورنگ الگورتھم کو بہتر بنائیں۔

  3. متحرک اے ٹی آر پیرامیٹرز تاکہ مارکیٹ کی اتار چڑھاؤ کو بہتر طور پر ایڈجسٹ کیا جا سکے۔

  4. غیر ضروری تجارتی تعدد کو کم کرنے کے لئے تجارتی فلٹرز شامل کریں، جیسے رجحان فلٹر یا حجم فلٹر.

  5. پیرامیٹر رینج تلاش کرنے کے لئے قدم بہ قدم بہتر بنائیں ، پھر بہترین پیرامیٹر سیٹ کے لئے بے ترتیب / گرڈ کو بہتر بنائیں۔

  6. زیادہ سے زیادہ فٹنگ سے بچنے کے لئے متعدد مصنوعات اور ٹائم فریم پر استحکام کا تجربہ کریں۔

  7. پورٹ فولیو کے لیے دیگر موثر تجارتی حکمت عملیوں کے ساتھ مل کر۔

نتیجہ

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


/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Ichi HMA RSI Stoch CCI MACD Technicals Rating Strategy",shorttitle="TRSv420",overlay=true,default_qty_type=strategy.percent_of_equity,default_qty_value=50,commission_type=strategy.commission.percent,commission_value=0.05)
res = input("", title="Indicator Timeframe", type=input.resolution)
Period = input(defval = 14, title = "Period Length", minval = 2)
MinSignalStrength= input(title="Minimum Signal Strength", type=input.float, defval=1.1, minval=0.00, maxval=2.00, step=0.1)
Price = input(defval=open, title="Price Source", type=input.source)
Use_Only_Buy= input(false, title = "Use ONLY BUY mode",type=input.bool)
Use_Only_Sell= input(false, title = "Use ONLY SELL mode",type=input.bool)
Use_ATR_SL_TP= input(true, title = "Use ATR for TP & SL",type=input.bool)
Use_Ichimoku= input(true, title = "Use Ichimoku",type=input.bool)
Use_HMA= input(true, title = "Use Hull MA",type=input.bool)
Use_RSI= input(true, title = "Use RSI",type=input.bool)
Use_Stoch= input(true, title = "Use Stoch",type=input.bool)
Use_CCI= input(true, title = "Use CCI",type=input.bool)
Use_MACD= input(true, title = "Use MacD",type=input.bool)
// Ichimoku Cloud
donchian(len) => avg(lowest(len), highest(len))
ichimoku_cloud() =>
    conversionLine = donchian(9)
    baseLine = donchian(26)
    leadLine1 = avg(conversionLine, baseLine)
    leadLine2 = donchian(52)
    [conversionLine, baseLine, leadLine1, leadLine2]
[IC_CLine, IC_BLine, IC_Lead1, IC_Lead2] = ichimoku_cloud()    
calcRatingMA(ma, src) => na(ma) or na(src) ? na : (ma == src ? 0 : ( ma < src ? 1 : -1 ))
calcRating(buy, sell) => buy ? 1 : ( sell ? -1 : 0 )
calcRatingAll() =>
    //============== HMA =================
    HMA10 = hma(Price, Period)
    HMA20 = hma(Price, 20)
    HMA30 = hma(Price, 30)
    HMA50 = hma(Price, 50)
    HMA100 = hma(Price, 100)
    HMA200 = hma(Price, 200)
    // Relative Strength Index, RSI
    RSI = rsi(Price,14)
    // Stochastic
    lengthStoch = 14
    smoothKStoch = 3
    smoothDStoch = 3
    kStoch = sma(stoch(Price, high, low, lengthStoch), smoothKStoch)
    dStoch = sma(kStoch, smoothDStoch)
    // Commodity Channel Index, CCI
    CCI = cci(Price, 20)
    // Moving Average Convergence/Divergence, MACD
    [macdMACD, signalMACD, _] = macd(Price, 12, 26, 9)
    // -------------------------------------------
    PriceAvg = hma(Price, Period)
    DownTrend = Price < PriceAvg
    UpTrend = Price > PriceAvg
    float ratingMA = 0
    float ratingMAC = 0
    if(Use_HMA)
        if not na(HMA10)
            ratingMA := ratingMA + calcRatingMA(HMA10, Price)
            ratingMAC := ratingMAC + 1
        if not na(HMA20)
            ratingMA := ratingMA + calcRatingMA(HMA20, Price)
            ratingMAC := ratingMAC + 1
        if not na(HMA30)
            ratingMA := ratingMA + calcRatingMA(HMA30, Price)
            ratingMAC := ratingMAC + 1
        if not na(HMA50)
            ratingMA := ratingMA + calcRatingMA(HMA50, Price)
            ratingMAC := ratingMAC + 1
        if not na(HMA100)
            ratingMA := ratingMA + calcRatingMA(HMA100, Price)
            ratingMAC := ratingMAC + 1
        if not na(HMA200)
            ratingMA := ratingMA + calcRatingMA(HMA200, Price)
            ratingMAC := ratingMAC + 1
    if(Use_Ichimoku)
        float ratingIC = na
        if not (na(IC_Lead1) or na(IC_Lead2) or na(Price) or na(Price[1]) or na(IC_BLine) or na(IC_CLine))
            ratingIC := calcRating(
             IC_Lead1 > IC_Lead2 and Price > IC_Lead1 and Price < IC_BLine and Price[1] < IC_CLine and Price > IC_CLine,
             IC_Lead2 > IC_Lead1 and Price < IC_Lead2 and Price > IC_BLine and Price[1] > IC_CLine and Price < IC_CLine)
        if not na(ratingIC)
            ratingMA := ratingMA + ratingIC
            ratingMAC := ratingMAC + 1
    ratingMA := ratingMAC > 0 ? ratingMA / ratingMAC : na
    float ratingOther = 0
    float ratingOtherC = 0
    if(Use_RSI)
        ratingRSI = RSI
        if not(na(ratingRSI) or na(ratingRSI[1]))
            ratingOtherC := ratingOtherC + 1
            ratingOther := ratingOther + calcRating(ratingRSI < 30 and ratingRSI[1] < ratingRSI, ratingRSI > 70 and ratingRSI[1] > ratingRSI)
    if(Use_Stoch)
        if not(na(kStoch) or na(dStoch) or na(kStoch[1]) or na(dStoch[1]))
            ratingOtherC := ratingOtherC + 1
            ratingOther := ratingOther + calcRating(kStoch < 20 and dStoch < 20 and kStoch > dStoch and kStoch[1] < dStoch[1], kStoch > 80 and dStoch > 80 and kStoch < dStoch and kStoch[1] > dStoch[1])
    if(Use_CCI)
        ratingCCI = CCI
        if not(na(ratingCCI) or na(ratingCCI[1]))
            ratingOtherC := ratingOtherC + 1
            ratingOther := ratingOther + calcRating(ratingCCI < -100 and ratingCCI > ratingCCI[1], ratingCCI > 100 and ratingCCI < ratingCCI[1])
    if(Use_MACD)
        if not(na(macdMACD) or na(signalMACD))
            ratingOtherC := ratingOtherC + 1
            ratingOther := ratingOther + calcRating(macdMACD > signalMACD, macdMACD < signalMACD)
    ratingOther := ratingOtherC > 0 ? ratingOther / ratingOtherC : na
    float ratingTotal = 0
    float ratingTotalC = 0
    if not na(ratingMA)
        ratingTotal := ratingTotal + ratingMA
        ratingTotalC := ratingTotalC + 1
        ratingTotal := ratingTotal + ratingOther
        ratingTotalC := ratingTotalC + 1
    ratingTotal := ratingTotalC > 0 ? ratingTotal / ratingTotalC : na
    [ratingTotal, ratingOther, ratingMA, ratingOtherC, ratingMAC]
[ratingTotal, ratingOther, ratingMA, ratingOtherC, ratingMAC]  = security(syminfo.tickerid, res, calcRatingAll(), lookahead=false)
tradeSignal = ratingTotal+ratingOther+ratingMA
dynSLpoints(factor) => factor * atr(14) / syminfo.mintick
if not (Use_Only_Sell)
    strategy.entry("long", strategy.long, when = tradeSignal > MinSignalStrength)
if not (Use_Only_Buy)    
    strategy.entry("short", strategy.short, when = tradeSignal < -MinSignalStrength)
if(Use_ATR_SL_TP)
    strategy.exit("sl/tp", loss = dynSLpoints(3), trail_points = dynSLpoints(5), trail_offset = dynSLpoints(2))

مزید