وسائل لوڈ ہو رہے ہیں... لوڈنگ...

گوسین چینل رجحان حکمت عملی کے بعد

مصنف:چاؤ ژانگ، تاریخ: 2024-03-29 16:26:26
ٹیگز:

img

جائزہ

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

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

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

حکمت عملی کے فوائد

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

حکمت عملی کے خطرات

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

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

  1. دیگر تکنیکی اشارے کو شامل کریں: سگنل کی درستگی اور وشوسنییتا کو بہتر بنانے کے لئے دیگر رجحان کی پیروی کرنے والے یا آسکیلیٹر اشارے ، جیسے ایم اے سی ڈی ، آر ایس آئی وغیرہ کے ساتھ مل کر۔
  2. متحرک پیرامیٹر کی اصلاح: مارکیٹ کے حالات میں ہونے والی تبدیلیوں کی بنیاد پر حکمت عملی کے پیرامیٹرز کو متحرک طور پر ایڈجسٹ کریں تاکہ مختلف مارکیٹ کے ماحول کو اپنایا جاسکے۔
  3. خطرہ کنٹرول ماڈیول شامل کریں: انفرادی تجارتی خطرہ اور مجموعی طور پر ڈراؤنڈ لیول کو کنٹرول کرنے کے لئے معقول سٹاپ نقصان اور منافع لینے کے قوانین مرتب کریں۔
  4. ملٹی ٹائم فریم تجزیہ: زیادہ جامع مارکیٹ کی معلومات حاصل کرنے کے لئے مختلف ٹائم فریم سے سگنل ، جیسے روزانہ اور 4 گھنٹے کے چارٹ کو یکجا کریں۔

خلاصہ

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


/*backtest
start: 2023-03-23 00:00:00
end: 2024-03-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Gaussian Channel Strategy v2.0", overlay=true, calc_on_every_tick=false, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Gaussian Channel Indicaor - courtesy of @DonovanWall
//----------------------------------------------------------------------------------------------------------------------------------------------------------------- 

// Date condition inputs
startDate = input(timestamp("1 January 2018 00:00 +0000"), "Date Start", group="Main Algo Settings")
endDate = input(timestamp("1 January 2060 00:00 +0000"), "Date Start", group="Main Algo Settings")
timeCondition = true

// This study is an experiment utilizing the Ehlers Gaussian Filter technique combined with lag reduction techniques and true range to analyze trend activity.
// Gaussian filters, as Ehlers explains it, are simply exponential moving averages applied multiple times.
// First, beta and alpha are calculated based on the sampling period and number of poles specified. The maximum number of poles available in this script is 9.
// Next, the data being analyzed is given a truncation option for reduced lag, which can be enabled with "Reduced Lag Mode".
// Then the alpha and source values are used to calculate the filter and filtered true range of the dataset.
// Filtered true range with a specified multiplier is then added to and subtracted from the filter, generating a channel.
// Lastly, a one pole filter with a N pole alpha is averaged with the filter to generate a faster filter, which can be enabled with "Fast Response Mode". 

// Custom bar colors are included.

// Note: Both the sampling period and number of poles directly affect how much lag the indicator has, and how smooth the output is.
//      Larger inputs will result in smoother outputs with increased lag, and smaller inputs will have noisier outputs with reduced lag.
//      For the best results, I recommend not setting the sampling period any lower than the number of poles + 1. Going lower truncates the equation.

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Updates:
// Huge shoutout to @e2e4mfck for taking the time to improve the calculation method!
// -> migrated to v4
// -> pi is now calculated using trig identities rather than being explicitly defined.
// -> The filter calculations are now organized into functions rather than being individually defined.
// -> Revamped color scheme.

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Functions - courtesy of @e2e4mfck
//----------------------------------------------------------------------------------------------------------------------------------------------------------------- 

// Filter function 
f_filt9x (_a, _s, _i) => 
    int _m2 = 0, int _m3 = 0, int _m4 = 0, int _m5 = 0, int _m6 = 0, 
    int _m7 = 0, int _m8 = 0, int _m9 = 0, float _f = .0, _x = (1 - _a)
    // Weights. 
    // Initial weight _m1 is a pole number and equal to _i
    _m2 := _i == 9 ? 36  : _i == 8 ? 28 : _i == 7 ? 21 : _i == 6 ? 15 : _i == 5 ? 10 : _i == 4 ? 6 : _i == 3 ? 3 : _i == 2 ? 1 : 0
    _m3 := _i == 9 ? 84  : _i == 8 ? 56 : _i == 7 ? 35 : _i == 6 ? 20 : _i == 5 ? 10 : _i == 4 ? 4 : _i == 3 ? 1 : 0
    _m4 := _i == 9 ? 126 : _i == 8 ? 70 : _i == 7 ? 35 : _i == 6 ? 15 : _i == 5 ? 5  : _i == 4 ? 1 : 0
    _m5 := _i == 9 ? 126 : _i == 8 ? 56 : _i == 7 ? 21 : _i == 6 ? 6  : _i == 5 ? 1  : 0 
    _m6 := _i == 9 ? 84  : _i == 8 ? 28 : _i == 7 ? 7  : _i == 6 ? 1  : 0 
    _m7 := _i == 9 ? 36  : _i == 8 ? 8  : _i == 7 ? 1  : 0 
    _m8 := _i == 9 ? 9   : _i == 8 ? 1  : 0 
    _m9 := _i == 9 ? 1   : 0
    // filter
    _f :=   math.pow(_a, _i) * nz(_s) + 
      _i  *     _x      * nz(_f[1])      - (_i >= 2 ? 
      _m2 * math.pow(_x, 2)  * nz(_f[2]) : 0) + (_i >= 3 ? 
      _m3 * math.pow(_x, 3)  * nz(_f[3]) : 0) - (_i >= 4 ? 
      _m4 * math.pow(_x, 4)  * nz(_f[4]) : 0) + (_i >= 5 ? 
      _m5 * math.pow(_x, 5)  * nz(_f[5]) : 0) - (_i >= 6 ? 
      _m6 * math.pow(_x, 6)  * nz(_f[6]) : 0) + (_i >= 7 ? 
      _m7 * math.pow(_x, 7)  * nz(_f[7]) : 0) - (_i >= 8 ? 
      _m8 * math.pow(_x, 8)  * nz(_f[8]) : 0) + (_i == 9 ? 
      _m9 * math.pow(_x, 9)  * nz(_f[9]) : 0)

// 9 var declaration fun
f_pole (_a, _s, _i) =>
    _f1 =            f_filt9x(_a, _s, 1),      _f2 = (_i >= 2 ? f_filt9x(_a, _s, 2) : 0), _f3 = (_i >= 3 ? f_filt9x(_a, _s, 3) : 0)
    _f4 = (_i >= 4 ? f_filt9x(_a, _s, 4) : 0), _f5 = (_i >= 5 ? f_filt9x(_a, _s, 5) : 0), _f6 = (_i >= 6 ? f_filt9x(_a, _s, 6) : 0)
    _f7 = (_i >= 2 ? f_filt9x(_a, _s, 7) : 0), _f8 = (_i >= 8 ? f_filt9x(_a, _s, 8) : 0), _f9 = (_i == 9 ? f_filt9x(_a, _s, 9) : 0)
    _fn = _i == 1 ? _f1 : _i == 2 ? _f2 : _i == 3 ? _f3 :
      _i == 4     ? _f4 : _i == 5 ? _f5 : _i == 6 ? _f6 :
      _i == 7     ? _f7 : _i == 8 ? _f8 : _i == 9 ? _f9 : na
    [_fn, _f1]

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Inputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// Source
src = input(defval=hlc3, title="Source")

// Poles
int N = input.int(defval=4, title="Poles", minval=1, maxval=9)

// Period
int per = input.int(defval=144, title="Sampling Period", minval=2)

// True Range Multiplier
float mult = input.float(defval=1.414, title="Filtered True Range Multiplier", minval=0)

// Lag Reduction
bool modeLag  = input.bool(defval=false, title="Reduced Lag Mode")
bool modeFast = input.bool(defval=false, title="Fast Response Mode")

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Definitions
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// Beta and Alpha Components
beta  = (1 - math.cos(4*math.asin(1)/per)) / (math.pow(1.414, 2/N) - 1)
alpha = - beta + math.sqrt(math.pow(beta, 2) + 2*beta)

// Lag
lag = (per - 1)/(2*N)

// Data
srcdata = modeLag ? src + (src - src[lag]) : src
trdata  = modeLag ? ta.tr(true) + (ta.tr(true) - ta.tr(true)[lag]) : ta.tr(true)

// Filtered Values
[filtn, filt1]     = f_pole(alpha, srcdata, N)
[filtntr, filt1tr] = f_pole(alpha, trdata,  N)

// Lag Reduction
filt   = modeFast ? (filtn + filt1)/2 : filtn
filttr = modeFast ? (filtntr + filt1tr)/2 : filtntr

// Bands
hband = filt + filttr*mult
lband = filt - filttr*mult

// Colors
color1   = #0aff68
color2   = #00752d
color3   = #ff0a5a
color4   = #990032
fcolor   = filt > filt[1] ? #0aff68 : filt < filt[1] ? #ff0a5a : #cccccc
barcolor = (src > src[1]) and (src > filt) and (src < hband) ? #0aff68 : (src > src[1]) and (src >= hband) ? #0aff1b : (src <= src[1]) and (src > filt) ? #00752d : 
           (src < src[1]) and (src < filt) and (src > lband) ? #ff0a5a : (src < src[1]) and (src <= lband) ? #ff0a11 : (src >= src[1]) and (src < filt) ? #990032 : #cccccc

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Outputs
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

// Filter Plot
filtplot = plot(filt, title="Filter", color=fcolor, linewidth=3)

// Band Plots
hbandplot = plot(hband, title="Filtered True Range High Band", color=fcolor)
lbandplot = plot(lband, title="Filtered True Range Low Band", color=fcolor)

// Channel Fill
fill(hbandplot, lbandplot, title="Channel Fill", color=color.new(fcolor, 80))

// Bar Color
barcolor(barcolor)

longCondition = ta.crossover(close, hband) and timeCondition
closeAllCondition = ta.crossunder(close, hband) and timeCondition

if longCondition
    strategy.entry("long", strategy.long)

if closeAllCondition
    strategy.close("long")

مزید