ڈونچین چینل پر مبنی تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-27 14:57:37
ٹیگز:

img

جائزہ

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

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

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

  1. ایک طویل مدتی ڈونچین چینل کی تعمیر کے لئے 52 ادوار کا استعمال کریں اور اس کے اوپر، نیچے اور وسط لائن حاصل کریں.

  2. ایک مختصر مدت Donchain چینل کی تعمیر اور اس کے سب سے اوپر، نیچے اور وسط لائن حاصل کرنے کے لئے 12 ادوار کا استعمال کریں.

انٹری منطق: جب قیمت طویل مدتی چینل کے اوپری حصے سے تجاوز کرتی ہے تو ، ہم اسے لانگ انٹری سگنل کے طور پر طے کرتے ہیں۔ جھوٹے بریک آؤٹ سے بچنے کے ل we ، ہمیں حالیہ 3 میں سے کم از کم 1 موم بتی کی ضرورت ہوتی ہے جو اس کے چینل کے اوپری حصے سے اوپر بند ہوجاتی ہے۔

آؤٹ پٹ منطق: جب قیمت قلیل مدتی چینل کے نیچے سے نیچے ہوتی ہے تو ، ہم اسے طویل پوزیشنوں کو بند کرنے کے لئے ایک آؤٹ پٹ سگنل کے طور پر طے کرتے ہیں۔ اسی طرح ، ہمیں خرابی کی صداقت کی تصدیق کے ل its اپنے چینل کے نیچے حالیہ 3 بند میں سے کم از کم 1 موم بتی کی ضرورت ہوتی ہے۔

فوائد

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

  2. ملٹی ٹائم فریم تجزیہ کا استعمال غلط بریک آؤٹ کے مسائل کو حل کرنے میں مدد کرتا ہے اور اندراجات / باہر نکلنے کو زیادہ درست بناتا ہے۔

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

خطرات اور حل

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

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

  3. اس میں مجموعی طور پر مارکیٹ کے نظام پر غور نہیں کیا جاتا ہے۔ یہ اہم رجحان کی تبدیلی کے مقامات پر ناکام ہوسکتا ہے۔ اہم رجحان کا اندازہ کرنے کے لئے دوسرے اشارے استعمال کیے جانے چاہئیں۔

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

  1. بہترین پیرامیٹرز تلاش کرنے کے لئے پیرامیٹر کی اصلاح کریں ، بشمول چینل کی مدت ، چینل کی اقسام وغیرہ۔

  2. نقصان کو کنٹرول کرنے کے لئے معقول ٹریلنگ اسٹاپس کے ساتھ اسٹاپ نقصان کی منطق شامل کریں۔

  3. اہم رجحان کا تعین کرنے کے لئے دیگر اشارے کو جوڑیں، جیسے ای ایم اے، کیلنر چینلز، ایم اے سی ڈی وغیرہ، اہم موڑ کے مقامات پر ناکامی سے بچنے کے لئے.

نتیجہ

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


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
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/
// © venkyrocker7777

//@version=5

strategy('Donchain channel based investment strategy', shorttitle='Donchain channel strategy', overlay=true)

Length = input.int(21, minval=1)
xPrice = close
xvnoise = math.abs(xPrice - xPrice[1])
nAMA = 0.0
nfastend = 0.666
nslowend = 0.0645
nsignal = math.abs(xPrice - xPrice[Length])
nnoise = math.sum(xvnoise, Length)
nefratio = nnoise != 0 ? nsignal / nnoise : 0
nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2)
nAMA := nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1]))
plot(nAMA, color=color.new(color.blue, 0), title='KAMA')

// Function to get Lower Channel, Upper Channel, Middle Channel for a period length
getLCUCMC(PeriodLength) =>
    lowestValueInThePeriod = ta.lowest(PeriodLength)  // LC
    highestValueInThePeriod = ta.highest(PeriodLength)  // UC
    middleChannelInTheperiod = math.avg(highestValueInThePeriod, lowestValueInThePeriod)  // MC
    // Returns Lower Channel, Upper Channel, Middle Channel for a period length
    [lowestValueInThePeriod, highestValueInThePeriod, middleChannelInTheperiod]

// Longer time frame for entry
longerPeriod = 52

// Shorter time frame for exit
shorterPeriod = 12

if timeframe.period == 'D'
    // Longer time frame for entry
    longerPeriod := 52 * 5

    // Shorter time frame for exit
    shorterPeriod := 12 * 5
    shorterPeriod

if timeframe.period == 'M'
    // Longer time frame for entry
    longerPeriod := 12

    // Shorter time frame for exit
    shorterPeriod := 3
    shorterPeriod

// Get Lower Channel, Upper Channel, Middle Channel for longerPeriod, shorterPeriod
[lowestValueInTheLongerPeriodLength, highestValueInTheLongerPeriodLength, middleChannelInLongerperiod] = getLCUCMC(longerPeriod)
[lowestValueInTheShorterPeriodLength, highestValueInTheShorterPeriodLength, middleChannelInShorterperiod] = getLCUCMC(shorterPeriod)


// Plot Upper Channel of longerPeriod in dark green
plot(highestValueInTheLongerPeriodLength, 'highestValueInTheLongerPeriodLength', color=color.new(color.green, 0))

// Plot Lower Channel of shorterPeriod in dark red
plot(lowestValueInTheShorterPeriodLength, 'lowestValueInTheShorterPeriodLength', color=color.new(color.red, 0))

// Entry Plan
// Will start to see if we can enter when high crosses up longer period high (high >= highestValueInTheLongerPeriodLength)
// Check if any of the three past candles and enter when any of the 3 past candles satisfy
// 1) high of that candle >= highestValueInTheLongerPeriodLength of that candle (high[i] >= highestValueInTheLongerPeriodLength[i])
// 2) close of entry point consideration candle is above close of that candle (close > close[i])
isThisPointAnEntry() =>
// Check last 3 bars
    isThisPointAnEntry = false
    offset = 0
    for i = 1 to 3 by 1
        isCurrentCandleALongerPeriodHigh = high >= highestValueInTheLongerPeriodLength
        isCurrentCandleCloseGreaterThanPreiousIthOne = close > close[i]
        isPreviousIthCandleAlsoALongerPeriodHigh = high[i] >= highestValueInTheLongerPeriodLength[i]
        isThisPointAnEntry := isCurrentCandleALongerPeriodHigh and isCurrentCandleCloseGreaterThanPreiousIthOne and isPreviousIthCandleAlsoALongerPeriodHigh
        if isThisPointAnEntry
            offset := -i
            break
    [isThisPointAnEntry, offset]

// Exit Plan - same as entry plan, with things reversed and also on a shorter time frame
// Will start to see if we should exit when low crosses down longer period low (low <= lowestValueInTheShorterPeriodLength)
// Check if any of the three past candles and exit when any of the 3 past candles satisfy
// 1) low of that candle <= highestValueInTheLongerPeriodLength of that candle (low[i] <= lowestValueInTheShorterPeriodLength[i])
// 2) close of exit point consideration candle is below close of that candle (close < close[i])
isThisPointAnExit() =>
// Check last 3 bars
    isThisPointAnExit = false
    for i = 1 to 3 by 1
        isCurrentCandleAShorterPeriodLow = low <= lowestValueInTheShorterPeriodLength
        isCurrentCandleCloseLesserThanPreiousIthOne = close < close[i]
        isPreviousIthCandleAlsoAShorterPeriodLow = low[i] <= lowestValueInTheShorterPeriodLength[i]
        isThisPointAnExit := isCurrentCandleAShorterPeriodLow and isCurrentCandleCloseLesserThanPreiousIthOne and isPreviousIthCandleAlsoAShorterPeriodLow
        break
    isThisPointAnExit

[isEntry, offset] = isThisPointAnEntry()


if isEntry
    strategy.entry('Buy', strategy.long)

strategy.close_all(when=isThisPointAnExit() == true)

if year(timenow) == year(time) and month(timenow) == month(time) and dayofmonth(timenow) - 2 == dayofmonth(time)
    strategy.close_all()



مزید