یہ ایک تجارتی حکمت عملی ہے جو اندراج اور باہر نکلنے کے مقامات کا تعین کرنے کے لئے متعدد ٹائم فریموں پر ڈونچین چینلز کا استعمال کرتی ہے۔ بنیادی خیال اندراج کے اشارے کے لئے طویل ٹائم فریم پر رجحان کی سمت کا فیصلہ کرنا ہے ، اور باہر نکلنے کے اشاروں کے لئے مختصر ٹائم فریم پر رجحان کی تبدیلیوں کی تلاش کرنا ہے۔
اس حکمت عملی میں بنیادی طور پر ڈونچین چینلز کا تصور استعمال کیا جاتا ہے ، جس میں چینل کے اوپری حصے ، نچلے حصے اور درمیانی حصے شامل ہیں۔ چینل کی چوڑائی مختلف ٹائم فریموں میں مختلف ہوتی ہے۔ خاص طور پر ، ہم ڈونچین چینلز کو دو ٹائم اسکیل پر بناتے ہیں:
ایک طویل مدتی ڈونچین چینل کی تعمیر کے لئے 52 ادوار کا استعمال کریں اور اس کے اوپر، نیچے اور وسط لائن حاصل کریں.
ایک مختصر مدت Donchain چینل کی تعمیر اور اس کے سب سے اوپر، نیچے اور وسط لائن حاصل کرنے کے لئے 12 ادوار کا استعمال کریں.
انٹری منطق: جب قیمت طویل مدتی چینل کے اوپری حصے سے تجاوز کرتی ہے تو ، ہم اسے لانگ انٹری سگنل کے طور پر طے کرتے ہیں۔ جھوٹے بریک آؤٹ سے بچنے کے ل we ، ہمیں حالیہ 3 میں سے کم از کم 1 موم بتی کی ضرورت ہوتی ہے جو اس کے چینل کے اوپری حصے سے اوپر بند ہوجاتی ہے۔
آؤٹ پٹ منطق: جب قیمت قلیل مدتی چینل کے نیچے سے نیچے ہوتی ہے تو ، ہم اسے طویل پوزیشنوں کو بند کرنے کے لئے ایک آؤٹ پٹ سگنل کے طور پر طے کرتے ہیں۔ اسی طرح ، ہمیں خرابی کی صداقت کی تصدیق کے ل its اپنے چینل کے نیچے حالیہ 3 بند میں سے کم از کم 1 موم بتی کی ضرورت ہوتی ہے۔
اس حکمت عملی میں رجحان کی پیروی کرنے اور اوسط ریورس ٹریڈنگ دونوں کے فوائد کو یکجا کیا گیا ہے۔ طویل وقت کی فریم رجحان کا فیصلہ کرتی ہے جبکہ مختصر وقت کی فریم رجحان کے اندر مقامی الٹ کو پکڑتی ہے۔
ملٹی ٹائم فریم تجزیہ کا استعمال غلط بریک آؤٹ کے مسائل کو حل کرنے میں مدد کرتا ہے اور اندراجات / باہر نکلنے کو زیادہ درست بناتا ہے۔
پیرامیٹرز کو مختلف مصنوعات اور مارکیٹ کے نظام کے لئے بہتر بنایا جا سکتا ہے.
حکمت عملی پیرامیٹرز کے لئے حساس ہے۔ مختلف پیرامیٹرز سے مختلف نتائج پیدا ہوسکتے ہیں۔ زیادہ سے زیادہ پیرامیٹر سیٹ تلاش کرنے کے لئے مناسب جانچ اور اصلاح کی ضرورت ہے۔
اس سے مختلف مارکیٹوں میں زیادہ سے زیادہ تجارت ہوسکتی ہے۔ ایک ہی تجارت کے نقصان کو کنٹرول کرنے کے لئے اسٹاپ نقصان کا استعمال کیا جانا چاہئے۔
اس میں مجموعی طور پر مارکیٹ کے نظام پر غور نہیں کیا جاتا ہے۔ یہ اہم رجحان کی تبدیلی کے مقامات پر ناکام ہوسکتا ہے۔ اہم رجحان کا اندازہ کرنے کے لئے دوسرے اشارے استعمال کیے جانے چاہئیں۔
بہترین پیرامیٹرز تلاش کرنے کے لئے پیرامیٹر کی اصلاح کریں ، بشمول چینل کی مدت ، چینل کی اقسام وغیرہ۔
نقصان کو کنٹرول کرنے کے لئے معقول ٹریلنگ اسٹاپس کے ساتھ اسٹاپ نقصان کی منطق شامل کریں۔
اہم رجحان کا تعین کرنے کے لئے دیگر اشارے کو جوڑیں، جیسے ای ایم اے، کیلنر چینلز، ایم اے سی ڈی وغیرہ، اہم موڑ کے مقامات پر ناکامی سے بچنے کے لئے.
خلاصہ میں ، یہ ایک عام ملٹی ٹائم فریم ڈونچین چینل بریک آؤٹ حکمت عملی ہے۔ یہ رجحانات کے اندر مقامی الٹ کو پکڑنے کے لئے رجحان کی پیروی اور اوسط الٹ دونوں کو اچھی طرح سے مربوط کرتا ہے۔ بہتر پیرامیٹرز کے ساتھ ، یہ رجحاناتی منڈیوں میں بہت اچھی کارکردگی کا مظاہرہ کرسکتا ہے۔ تاہم ، حکمت عملی خود نازک ہے ، پیرامیٹرز اور مجموعی مارکیٹ کے نظام سے حساس ہے۔ زیادہ مضبوط نتائج حاصل کرنے کے لئے دوسری حکمت عملیوں یا اشارے کے ساتھ مل کر مشورہ دیا جاتا ہے۔
/*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()