گیارہ موونگ ایوریج کمبینیشن کراس اوور حکمت عملی


تخلیق کی تاریخ: 2024-01-15 13:57:53 آخر میں ترمیم کریں: 2024-01-15 13:57:53
کاپی: 3 کلکس کی تعداد: 710
1
پر توجہ دیں
1617
پیروکار

گیارہ موونگ ایوریج کمبینیشن کراس اوور حکمت عملی

جائزہ

اس حکمت عملی کے مجموعے میں 11 مختلف اقسام کی چلتی اوسط کی کراسنگ کا استعمال کیا جاتا ہے تاکہ زیادہ اور کم کام کیا جاسکے۔ استعمال ہونے والی 11 چلتی اوسطوں میں شامل ہیں: سادہ چلتی اوسط ((SMA) ، اشاریہ چلتی اوسط ((EMA) ، وزن والی چلتی اوسط ((WMA) ، ٹرانزیکشن وزن والی چلتی اوسط ((VWMA) ، فلیٹ سلائیڈنگ اوسط ((SMMA) ، دوہری انڈیکس چلتی اوسط ((DEMA) ، تین گنا انڈیکس چلتی اوسط ((TEMA) ، ہل چلتی اوسط ((HMA) ، پیچھے رہ جانے والا اشاریہ صفر چلتی اوسط ((EMAZ) ، مثلث چلتی اوسط ((TMA) اور سپر فلیٹ سلائیڈر ((SSMA)).

یہ حکمت عملی دو حرکت پذیر اوسطوں کو ترتیب دینے کی اجازت دیتی ہے ایک تیز اور ایک سست ، 11 اختیارات میں سے انتخاب کریں۔ جب تیز ایم اے کی کراسنگ سست ایم اے سے زیادہ ہوتی ہے تو ایک کثیر سگنل تیار کیا جاتا ہے۔ جب تیز ایم اے کی کراسنگ سست ایم اے سے کم ہوتی ہے تو ایک خالی سگنل تیار کیا جاتا ہے۔

اضافی افعال میں شامل ہیں ٹیرف کی ترتیب، روکنے اور روکنے کی سطح.

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

بنیادی حکمت عملی کا منطق داخلہ اور باہر نکلنے کا تعین کرنے کے لئے دو منتقل اوسط کے درمیان ایک کراس پر انحصار کرتا ہے۔

داخلہ کی شرائط:

ایک سے زیادہ داخلہ: فاسٹ ایم اے > سست ایم اے
ہوا میں داخلہ: فاسٹ ایم اے < سست ایم اے

انخلا تین معیار میں سے ایک کے مطابق کیا جاتا ہے:

  1. روک تھام کی سطح تک پہنچنے
  2. سٹاپ نقصان کی سطح تک پہنچنے
  3. مخالف سگنل پیدا کرنا ((منتقل اوسط مخالف سمت میں کراس)

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

فوائد

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

خطرات

  • کسی بھی تکنیکی اشارے کی طرح، MA کراسنگ غلط سگنل پیدا کر سکتا ہے
  • موجودہ مارکیٹ کے حالات کو زیادہ بہتر بنانا مستقبل کی کارکردگی کو کم کرسکتا ہے
  • ہارڈ اسٹاپس نے بہت پہلے ہی بڑی اتار چڑھاؤ سے باہر نکل لیا ہے

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

جگہ کو بہتر بنائیں

اس حکمت عملی کو کئی طریقوں سے بہتر بنایا جا سکتا ہے:

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-12-15 00:00:00
end: 2024-01-14 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy(title = "[STRATEGY] MA Cross Eleven", overlay = true)

// MA - type, source, length

//  MA - type, source, length
//  SMA --> Simple
//  EMA --> Exponential
//  WMA --> Weighted
//  VWMA --> Volume Weighted
//  SMMA --> Smoothed
//  DEMA --> Double Exponential
//  TEMA --> Triple Exponential
//  HMA --> Hull
//  TMA --> Triangular
//  SSMA --> SuperSmoother filter
//  ZEMA --> Zero Lag Exponential

type = input(defval="ZEMA", title="MA Type: ", options=["SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "ZEMA", "TMA", "SSMA"])
len1 = input(defval=8, title="Fast MA Length", minval=1)
srcclose1 = input(close, "Fast MA Source")
len2 = input(defval=21, title="Slow MA Length", minval=1)
srcclose2 = input(close, "Slow MA Source")

// Returns MA input selection variant, default to SMA if blank or typo.

variant(type, src, len) =>
    v1 = sma(src, len)                                                  // Simple
    v2 = ema(src, len)                                                  // Exponential
    v3 = wma(src, len)                                                  // Weighted
    v4 = vwma(src, len)                                                 // Volume Weighted
    v5 = 0.0
    v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len    // Smoothed
    v6 = 2 * v2 - ema(v2, len)                                          // Double Exponential
    v7 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len)               // Triple Exponential
    v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))   // Hull
    v11 = sma(sma(src,len),len)                                         // Triangular
    // SuperSmoother filter
    // © 2013  John F. Ehlers
    a1 = exp(-1.414*3.14159 / len)
    b1 = 2*a1*cos(1.414*3.14159 / len)
    c2 = b1
    c3 = (-a1)*a1
    c1 = 1 - c2 - c3
    v9 = 0.0
    v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2])
    // Zero Lag Exponential
    e = ema(v2, len)
    v10 = v2+(v2-e)
    // return variant, defaults to SMA if input invalid.
    type=="EMA"?v2 : type=="WMA"?v3 : type=="VWMA"?v4 : type=="SMMA"?v5 : type=="DEMA"?v6 : type=="TEMA"?v7 : type=="HullMA"?v8 : type=="SSMA"?v9 : type=="ZEMA"?v10 : type=="TMA"? v11: v1

ma_1 = variant(type, srcclose1, len1)
ma_2 = variant(type, srcclose2, len2)

plot(ma_1, title="Fast MA", color = green, linewidth=2, transp=0)
plot(ma_2, title="Slow MA", color = red, linewidth=2, transp=0)

longCond = na
shortCond = na
longCond := crossover(ma_1, ma_2)
shortCond := crossunder(ma_1, ma_2)

// Count your long short conditions for more control with Pyramiding

sectionLongs = 0
sectionLongs := nz(sectionLongs[1])
sectionShorts = 0
sectionShorts := nz(sectionShorts[1])

if longCond
    sectionLongs := sectionLongs + 1
    sectionShorts := 0

if shortCond
    sectionLongs := 0
    sectionShorts := sectionShorts + 1
    
// Pyramiding Inputs

pyrl = input(1, "Pyramiding")

// These check to see your signal and cross references it against the pyramiding settings above

longCondition = longCond and sectionLongs <= pyrl 
shortCondition = shortCond and sectionShorts <= pyrl 

// Get the price of the last opened long or short

last_open_longCondition = na
last_open_shortCondition = na
last_open_longCondition := longCondition ? high[1] : nz(last_open_longCondition[1])
last_open_shortCondition := shortCondition ? low[1] : nz(last_open_shortCondition[1])

// Check if your last postion was a long or a short

last_longCondition = na
last_shortCondition = na
last_longCondition := longCondition ? time : nz(last_longCondition[1])
last_shortCondition := shortCondition ? time : nz(last_shortCondition[1])

in_longCondition = last_longCondition > last_shortCondition
in_shortCondition = last_shortCondition > last_longCondition

// Take profit

isTPl = input(false, "Take Profit Long")
isTPs = input(false, "Take Profit Short")
tpl = input(3, "Take Profit Long %", type=float)
tps = input(30, "Take Profit Short %", type=float)
long_tp = isTPl and crossover(high, (1+(tpl/100))*last_open_longCondition) and in_longCondition  == 1
short_tp = isTPs and crossunder(low, (1-(tps/100))*last_open_shortCondition) and in_shortCondition == 1 

// Stop Loss

isSLl = input(false, "Stop Loss Long")
isSLs = input(false, "Stop Loss Short")
sl= 0.0
sl := input(3, "Stop Loss %", type=float)
long_sl = isSLl and crossunder(low, (1-(sl/100))*last_open_longCondition) and longCondition == 0 and in_longCondition == 1
short_sl = isSLs and crossover(high, (1+(sl/100))*last_open_shortCondition) and shortCondition == 0 and in_shortCondition == 1

// Create a single close for all the different closing conditions.

long_close = long_tp or long_sl ? 1 : 0
short_close = short_tp or short_sl ? 1 : 0

// Get the time of the last close

last_long_close = na
last_short_close = na
last_long_close := long_close ? time : nz(last_long_close[1])
last_short_close := short_close ? time : nz(last_short_close[1])

// Strategy entries

strategy.entry("long", strategy.long, when=longCondition == true, stop = open[1])
strategy.entry("short", strategy.short, when=shortCondition == true)
strategy.close("long", when = long_sl or long_tp)
strategy.close("short", when = short_sl or short_tp)