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