متوازن حرکت پذیر اوسط اور مجموعی اعلی کم انڈیکس کے مجموعی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-11-21 15:19:35
ٹیگز:

img

جائزہ

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

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

  1. ہائی لو انڈیکس اس بات کا اندازہ لگاتا ہے کہ آیا کسی خاص مدت کے دوران تازہ ترین قیمت نے ایک نئی اونچائی یا نئی کم کردی ہے ، اور اسکور جمع کرتا ہے۔ جب اسکور بڑھتا ہے تو ، اس کی نمائندگی بولش فورسز کی مضبوطی ہوتی ہے۔ جب اسکور گرتا ہے تو ، اس کی نمائندگی bearish فورسز کی مضبوطی ہوتی ہے۔

  2. موونگ ایوریج انڈیکس اس بات کا فیصلہ کرتا ہے کہ قیمت اوپر کی سیڑھی کی شکل میں ہے یا نیچے کی سیڑھی کی شکل میں ہے۔ جب موونگ ایوریج میں سیڑھی کی شکل میں اضافہ ہوتا ہے تو ، اس سے بولش فورسز کی مضبوطی ظاہر ہوتی ہے۔ جب اس میں سیڑھی کی شکل میں کمی ہوتی ہے تو ، اس سے bearish فورسز کی مضبوطی ظاہر ہوتی ہے۔

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

فوائد

  1. ہائی لو انڈیکس مؤثر طریقے سے قیمت کی نقل و حرکت اور رفتار میں ہونے والی تبدیلیوں کا فیصلہ کرسکتا ہے۔ حرکت پذیر اوسط انڈیکس مؤثر طریقے سے قیمت کے رجحان کا تعین کرسکتا ہے۔ دونوں کا امتزاج مارکیٹ کی سمت کو زیادہ درست طریقے سے طے کرسکتا ہے۔

  2. سپر ٹرینڈ انڈیکس کے ساتھ مل کر پوزیشن کھولنے سے پوزیشنوں کے قبل از وقت یا دیر سے کھولنے سے بچا جاسکتا ہے۔ سپر ٹرینڈ انڈیکس مؤثر طریقے سے قیمت کی تبدیلی کے مقامات کی نشاندہی کرسکتا ہے۔

  3. متعدد اشارے ایک دوسرے کی تصدیق کرتے ہیں اور غلط سگنل کو کم کرتے ہیں۔

خطرات

  1. ہائی لو انڈیکس اور موونگ ایوریج انڈیکس کے غلط سگنل نقصان دہ پوزیشنوں کا باعث بن سکتے ہیں۔

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

  3. تیزی سے رجحان کی تبدیلی اور غلط سٹاپ نقصان کی ترتیبات بڑے نقصانات کا باعث بن سکتی ہیں۔

  4. خطرات کو اشارے کے پیرامیٹرز کو بہتر بنانے ، اسٹاپ نقصان کی قیمتوں کی سطح کو ایڈجسٹ کرنے وغیرہ سے کم کیا جاسکتا ہے۔

اصلاح

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

  2. سگنل کو زیادہ مستحکم اور قابل اعتماد بنانے کے لئے ہائی لو انڈیکس اور موونگ اوسط انڈیکس کے پیرامیٹرز کو بہتر بنائیں۔

  3. غلط سگنل کو کم کرنے کے لیے تصدیق کے لیے دیگر اشارے شامل کریں، جیسے MACD، KD وغیرہ۔

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

  5. کم مقبول مصنوعات کی تجارت سے بچنے کے لئے جذبات کا تجزیہ شامل کریں.

نتیجہ

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


/*backtest
start: 2023-10-21 00:00:00
end: 2023-11-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © HeWhoMustNotBeNamed

//@version=4
strategy("AlignedMA and Cumulative HighLow Strategy", overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)

MAType = input(title="Moving Average Type", defval="sma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
includePartiallyAligned = input(true)
HighLowPeriod = input(50, minval=1,step=1)
LookbackPeriod = input(10, minval=1,step=1)

supertrendMult = input(2, minval=1, maxval=10, step=0.5)
supertrendLength = input(10, minval=1)

tradeDirection = input(title="Trade Direction", defval=strategy.direction.long, options=[strategy.direction.all, strategy.direction.long, strategy.direction.short])
backtestYears = input(10, minval=1, step=1)

f_getMovingAverage(source, MAType, length)=>
    ma = sma(source, length)
    if(MAType == "ema")
        ma := ema(source,length)
    if(MAType == "hma")
        ma := hma(source,length)
    if(MAType == "rma")
        ma := rma(source,length)
    if(MAType == "vwma")
        ma := vwma(source,length)
    if(MAType == "wma")
        ma := wma(source,length)
    ma
    
f_getMaAlignment(MAType, includePartiallyAligned)=>
    ma5 = f_getMovingAverage(close,MAType,5)
    ma10 = f_getMovingAverage(close,MAType,10)
    ma20 = f_getMovingAverage(close,MAType,20)
    ma30 = f_getMovingAverage(close,MAType,30)
    ma50 = f_getMovingAverage(close,MAType,50)
    ma100 = f_getMovingAverage(close,MAType,100)
    ma200 = f_getMovingAverage(close,MAType,200)

    upwardScore = 0
    upwardScore := close > ma5? upwardScore+1:upwardScore
    upwardScore := ma5 > ma10? upwardScore+1:upwardScore
    upwardScore := ma10 > ma20? upwardScore+1:upwardScore
    upwardScore := ma20 > ma30? upwardScore+1:upwardScore
    upwardScore := ma30 > ma50? upwardScore+1:upwardScore
    upwardScore := ma50 > ma100? upwardScore+1:upwardScore
    upwardScore := ma100 > ma200? upwardScore+1:upwardScore
    
    upwards = close > ma5 and ma5 > ma10 and ma10 > ma20 and ma20 > ma30 and ma30 > ma50 and ma50 > ma100 and ma100 > ma200
    downwards = close < ma5 and ma5 < ma10 and ma10 < ma20 and ma20 < ma30 and ma30 < ma50 and ma50 < ma100 and ma100 < ma200
    upwards?1:downwards?-1:includePartiallyAligned ? (upwardScore > 5? 0.5: upwardScore < 2?-0.5:upwardScore>3?0.25:-0.25) : 0

f_getHighLowValue(HighLowPeriod)=>
    currentHigh = highest(high,HighLowPeriod) == high
    currentLow = lowest(low,HighLowPeriod) == low
    currentHigh?1:currentLow?-1:0

inDateRange = time >= timestamp(syminfo.timezone, year(timenow) - backtestYears, 01, 01, 0, 0)

maAlignment = f_getMaAlignment(MAType,includePartiallyAligned)
alignedMaIndex = sum(maAlignment,LookbackPeriod)

maAlignmentDirection = alignedMaIndex > alignedMaIndex[1] ? 1 : alignedMaIndex < alignedMaIndex[1] ? -1 : 0
maAlignmentDirection := maAlignmentDirection == 0? nz(maAlignmentDirection[1],0):maAlignmentDirection

highLowIndex = f_getHighLowValue(HighLowPeriod)
cumulativeHighLowIndex = sum(highLowIndex,LookbackPeriod)

hlDirection = cumulativeHighLowIndex > cumulativeHighLowIndex[1] ? 1 : cumulativeHighLowIndex < cumulativeHighLowIndex[1] ? -1 : 0
hlDirection := hlDirection == 0? nz(hlDirection[1],0):hlDirection

[superTrend, dir] = supertrend(supertrendMult, supertrendLength)

buyEntry = (dir == -1 and maAlignmentDirection == 1 and hlDirection == 1)
sellEntry = (dir == 1 and maAlignmentDirection == -1 and hlDirection == -1)

barColor = buyEntry?color.lime:sellEntry?color.orange:color.gray
barcolor(barColor)

// strategy.risk.allow_entry_in(tradeDirection)
strategy.entry("Buy", strategy.long, when=barColor == color.lime and inDateRange, oca_name="oca_buy")
strategy.close("Buy", when=dir == 1)

strategy.entry("Sell", strategy.short, when=barColor == color.orange and inDateRange, oca_name="oca_sell")
strategy.close("Sell", when=dir == -1)


مزید