کثیر پیمانے پر Donqi stepwise چینل پر مبنی تجارتی حکمت عملی


تخلیق کی تاریخ: 2024-02-27 14:57:37 آخر میں ترمیم کریں: 2024-02-27 14:57:37
کاپی: 0 کلکس کی تعداد: 657
1
پر توجہ دیں
1617
پیروکار

کثیر پیمانے پر Donqi stepwise چینل پر مبنی تجارتی حکمت عملی

جائزہ

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

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

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

  1. 52 سائیکلوں کا استعمال کرتے ہوئے طویل وقت کے پیمانے پر ٹونگ چینلز کی تعمیر کریں ، جس سے اوپر ، نیچے اور درمیانی لائنیں ملیں
  2. 12 سائیکلوں کا استعمال کرتے ہوئے مختصر ٹائم اسکیل کے ساتھ ٹونگ چینل کی تعمیر ، جس سے چینل کے اوپر ، نیچے اور درمیانی لائنیں ملیں

انٹری منطق: جب قیمت طویل وقت کے پیمانے پر چینل کے اوپری کنارے کو توڑتی ہے تو ، اس کو ایک کثیر داخلہ کا وقت سمجھا جاتا ہے۔ غلط توڑ سے بچنے کے ل we ، ہم مطالبہ کرتے ہیں کہ کم از کم 3 K لائنوں میں سے کم از کم 1 K لائن بند ہونے کی قیمت اس K لائن کے چینل کے اوپری کنارے سے زیادہ ہو ، اس طرح قلیل مدتی حد سے زیادہ توسیع کی وجہ سے غلط توڑ سے بچا جاسکتا ہے۔

باہر نکلنے کی منطق: جب قیمت مختصر ٹائم اسکیل چینل کے نچلے حصے میں گرتی ہے تو ، اس کا تعین کرنے کے لئے باہر نکلنے کا وقت ہے۔ ہم یہ بھی مطالبہ کرتے ہیں کہ حالیہ 3 K لائنوں میں سے کم از کم 1 K لائن بند ہونے کی قیمت اس K لائن کے نیچے والے حصے سے کم ہو ، تاکہ اس کی تصدیق کی جاسکے۔

اسٹریٹجک فوائد

  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()