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

مثلث حرکت پذیر اوسط کراس اوور ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-16 18:18:02
ٹیگز:

img

جائزہ

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

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

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

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

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

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

فوائد کا تجزیہ

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

خطرے کا تجزیہ اور حل

  • غلط سگنل جب تین ایم اے کو مضبوط کر رہے ہیں

    حل: غلط سگنل سے بچنے کے لئے ایم اے پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کریں

  • زیادہ سے زیادہ جارحانہ سٹاپ نقصان/منافع لینے کا فیصد

    حل: ٹھیک ٹھیک فیصد؛ بہت بڑا یا بہت چھوٹا نہیں ہوسکتا ہے

  • پیرامیٹر کی غلط ترتیبات جس کی وجہ سے بہت زیادہ یا بہت کم تجارت ہوتی ہے

    حل: زیادہ سے زیادہ تلاش کرنے کے لئے مختلف پیرامیٹر مجموعے کی جانچ کریں

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

ٹی ایم اے کی حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

  • بہترین تلاش کرنے کے لئے مختلف قسم اور لمبائی کے مجموعے کی جانچ کریں

    بہترین نتائج کے لئے مختلف ایم اے لمبائی یا قسم کے مجموعے کی جانچ کریں

  • سگنل فلٹرز کے طور پر دیگر تکنیکی اشارے شامل کریں

    کثیر عنصر کی تصدیق کے لئے KDJ، MACD وغیرہ جیسے اشارے شامل کریں

  • مصنوعات کی خصوصیات پر مبنی پیرامیٹرز کا انتخاب کریں

    غیر مستحکم مصنوعات کے لئے ایم اے کے ادوار کو کم کرنا؛ مستحکم مصنوعات کے لئے ادوار کو بڑھانا

  • بہترین پیرامیٹرز تلاش کرنے کے لئے مشین سیکھنے کا استعمال کریں

    آٹو پیرامیٹر فوری طور پر زیادہ سے زیادہ تلاش کرنے کے لئے صاف

نتیجہ

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


/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Kozlod - 3 MA strategy with SL/PT", shorttitle="kozlod_3ma", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 5)

// 
// author: Kozlod
// date: 2018-03-25
// 

////////////
// INPUTS //
////////////

ma_type        = input(title = "MA Type",            defval = "SMA", options = ['SMA', 'EMA', 'WMA', 'VWMA', 'HMA', 'SMMA', 'DEMA'])
short_ma_len   = input(title = "Short MA Length",    defval = 5,     minval = 1)
short_ma_src   = input(title = "Short MA Source",    defval = close)
medium_ma_len  = input(title = "Medium MA Length",   defval = 20,    minval = 2)
medium_ma_src  = input(title = "Medium MA Source",   defval = close)
long_ma_len    = input(title = "Long MA Length",     defval = 100,   minval = 3)
long_ma_src    = input(title = "Long MA Source",     defval = close)

sl_lev_perc    = input(title = "SL Level % (0 - Off)", type = float,   defval = 0,  minval = 0, step = 0.01)
pt_lev_perc    = input(title = "PT Level % (0 - Off)", type = float,   defval = 0,  minval = 0, step = 0.01)

// Set initial values to 0
short_ma  = 0.0
long_ma   = 0.0
medium_ma = 0.0

// Simple Moving Average (SMA)
if ma_type == 'SMA' 
    short_ma  := sma(short_ma_src,  short_ma_len)
    medium_ma := sma(medium_ma_src, medium_ma_len)
    long_ma   := sma(long_ma_src,   long_ma_len)

// Exponential Moving Average (EMA)
if ma_type == 'EMA'
    short_ma  := ema(short_ma_src,  short_ma_len)
    medium_ma := ema(medium_ma_src, medium_ma_len)
    long_ma   := ema(long_ma_src,   long_ma_len)

// Weighted Moving Average (WMA)
if ma_type == 'WMA'
    short_ma  := wma(short_ma_src,  short_ma_len)
    medium_ma := wma(medium_ma_src, medium_ma_len)
    long_ma   := wma(long_ma_src,   long_ma_len)

// Hull Moving Average (HMA)
if ma_type == 'HMA'
    short_ma  := wma(2*wma(short_ma_src,  short_ma_len  / 2) - wma(short_ma_src,  short_ma_len),  round(sqrt(short_ma_len)))
    medium_ma := wma(2*wma(medium_ma_src, medium_ma_len / 2) - wma(medium_ma_src, medium_ma_len), round(sqrt(medium_ma_len)))
    long_ma   := wma(2*wma(long_ma_src,   long_ma_len   / 2) - wma(long_ma_src,   long_ma_len),   round(sqrt(long_ma_len)))

// Volume-weighted Moving Average (VWMA)
if ma_type == 'VWMA'
    short_ma  := vwma(short_ma_src,  short_ma_len)
    medium_ma := vwma(medium_ma_src, medium_ma_len)
    long_ma   := vwma(long_ma_src,   long_ma_len)

// Smoothed Moving Average (SMMA)    
if ma_type == 'SMMA'
    short_ma  := na(short_ma[1])  ? sma(short_ma_src, short_ma_len)   : (short_ma[1]  * (short_ma_len  - 1) + short_ma_src)  / short_ma_len
    medium_ma := na(medium_ma[1]) ? sma(medium_ma_src, medium_ma_len) : (medium_ma[1] * (medium_ma_len - 1) + medium_ma_src) / medium_ma_len
    long_ma   := na(long_ma[1])   ? sma(long_ma_src,  long_ma_len)    : (long_ma[1]   * (long_ma_len   - 1) + long_ma_src)   / long_ma_len

// Double Exponential Moving Average (DEMA)
if ma_type == 'DEMA'
    e1_short  = ema(short_ma_src , short_ma_len)
    e1_medium = ema(medium_ma_src, medium_ma_len)
    e1_long   = ema(long_ma_src,   long_ma_len)
    
    short_ma  := 2 * e1_short  - ema(e1_short,  short_ma_len)
    medium_ma := 2 * e1_medium - ema(e1_medium, medium_ma_len)
    long_ma   := 2 * e1_long   - ema(e1_long,   long_ma_len)

/////////////
// SIGNALS //
/////////////

long_signal  = crossover( short_ma, medium_ma) and medium_ma > long_ma
short_signal = crossunder(short_ma, medium_ma) and medium_ma < long_ma

// Calculate PT/SL levels 
// Initial values 
last_signal    = 0
prev_tr_price  = 0.0
pt_level       = 0.0
sl_level       = 0.0

// Calculate previous trade price
prev_tr_price := (long_signal[1] and nz(last_signal[2]) != 1) or (short_signal[1] and nz(last_signal[2]) != -1) ? open : nz(last_signal[1]) != 0 ? prev_tr_price[1] : na

// Calculate SL/PT levels 
pt_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 + pt_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 - pt_lev_perc / 100)  : na
sl_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 - sl_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 + sl_lev_perc / 100)  : na

// Calculate if price hit sl/pt 
long_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) ==  1 and close >= pt_level
long_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) ==  1 and close <= sl_level

short_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) ==  -1 and close <= pt_level
short_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) ==  -1 and close >= sl_level

// What is last active trade? 
last_signal := long_signal ? 1 : short_signal ? -1 : long_hit_pt or long_hit_sl or short_hit_pt or short_hit_sl ? 0 : nz(last_signal[1])

//////////////
// PLOTTING //
//////////////

// Plot MAs
plot(short_ma,  color = red,    linewidth = 2)
plot(medium_ma, color = green,  linewidth = 2)
plot(long_ma,   color = yellow, linewidth = 2)


// Plot Levels 
plotshape(prev_tr_price, style = shape.cross, color = gray, location  = location.absolute, size = size.small)


plotshape(sl_lev_perc > 0 ? sl_level : na, style = shape.cross, color = red,   location  = location.absolute, size = size.small)
plotshape(pt_lev_perc > 0 ? pt_level : na, style = shape.cross, color = green, location  = location.absolute, size = size.small)

//////////////
// STRATEGY //
//////////////

strategy.entry("long",  true,  when = long_signal)
strategy.entry("short", false, when = short_signal)

strategy.close("long",  when = long_hit_pt  or long_hit_sl)
strategy.close("short", when = short_hit_pt or short_hit_sl)

مزید