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

مصنف:چاؤ ژانگ، تاریخ: 2023-11-06 16:38:22
ٹیگز:

img

جائزہ

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

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

یہ حکمت عملی صارف کی مرضی کے مطابق مختصر مدت اور طویل مدتی چلتی اوسط مدت، باہر نکلنے والی چلتی اوسط مدت، اور چلتی اوسط حساب کے طریقوں کا استعمال کرتی ہے.

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

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

لہذا، حکمت عملی کے ٹریڈنگ سگنل مختصر مدت اور طویل مدتی چلتی اوسط کے کراس اوور سے آتے ہیں، اور اختتامی قیمت اور باہر نکلنے والی اوسط کے درمیان تعلقات.

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

اس حکمت عملی کے فوائد یہ ہیں:

  1. سادہ اور لاگو کرنے میں آسان.

  2. اپنی مرضی کے مطابق پیرامیٹرز مختلف مارکیٹ کے حالات کے مطابق.

  3. اوسط حرکت پذیری شور کو فلٹر کرتی ہے اور مرکزی رجحان کو پکڑتی ہے۔

  4. مزید بہتر بنانے کے لئے رجحان، حمایت / مزاحمت جیسے دیگر تکنیکی اشارے شامل کر سکتے ہیں.

  5. کنٹرول قابل خطرہ انعام کا تناسب، سٹاپ نقصان کا طریقہ کار ہے.

خطرے کا تجزیہ

خطرات یہ ہیں:

  1. غیر رجحان سازی کے بازاروں میں غلط سگنل کا شکار۔

  2. پیرامیٹر کی غلط ترتیبات کی وجہ سے غائب رجحانات یا بہت زیادہ غلط تجارت ہوسکتی ہے۔

  3. غلط سٹاپ نقصان کی جگہ نقصانات میں اضافہ کر سکتا ہے.

  4. ناکام فرار نقصانات کا سبب بن سکتا ہے.

  5. پیرامیٹرز کو مارکیٹ میں ہونے والی تبدیلیوں کے مطابق بروقت ایڈجسٹ کرنے کی ضرورت ہے۔

حل میں پیرامیٹرز کو بہتر بنانا ، دوسرے فلٹرز کو شامل کرنا ، اسٹاپ کو ایڈجسٹ کرنا ، تجارت سے پہلے رجحان کی تصدیق کا انتظار کرنا وغیرہ شامل ہیں۔

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

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

  1. رجحان کا تعین کرنے کے طریقہ کار تیار کرنا اور رجحان کی تصدیق کے بعد ہی تجارت کرنا۔

  2. فلٹر سگنلز میں حجم یا اتار چڑھاؤ جیسے فلٹرز شامل کرنا۔

  3. متحرک اوسط مدت کی متحرک اصلاح.

  4. ٹرائلنگ سٹاپ استعمال کرنے کے لئے سٹاپ نقصان کے میکانزم کو بہتر بنانا.

  5. سگنل کی مزید تصدیق کے لیے سپورٹ/مزاحمت اور دیگر اشارے شامل کرنا۔

  6. مختلف مصنوعات اور ٹائم فریم پر مبنی پیرامیٹرز کو ایڈجسٹ کرنا۔

نتیجہ

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


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 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/
// © TwoChiefs

//@version=4
strategy("John EMA Crossover Strategy", overlay=true)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

//CREATE USER-INPUT VARIABLES

periodShort = input(13, minval=1, title="Enter Period for Short Moving Average")
smoothingShort = input(title="Choose Smoothing Type for Short Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodLong = input(48, minval=1, title="Enter Period for Long Moving Average")
smoothingLong = input(title="Choose Smoothing Type for Long Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodExit = input(30, minval=1, title="Enter Period for Exit Moving Average")
smoothingExit = input(title="Choose Smoothing Type for Exit Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])


src1 = close
pivot = (high + low + close) / 3

//MA CALCULATION FUNCTION
ma(smoothing, src, length) => 
    if smoothing == "RMA"
        rma(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        else 
            if smoothing == "EMA"
                ema(src, length)
            else 
                if smoothing == "WMA"
                    wma(src, length)
				else
					if smoothing == "VWMA"
						vwma(src, length)
					else
						if smoothing == "SMMA"
							na(src[1]) ? sma(src, length) : (src[1] * (length - 1) + src) / length
						
						else
							if smoothing == "HullMA"
								wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length)))




//ASSIGN A MOVING AVERAGE RESULT TO A VARIABLE
shortMA=ma(smoothingShort, pivot, periodShort)
longMA=ma(smoothingLong, pivot, periodLong)
exitMA=ma(smoothingExit, pivot, periodExit)

//PLOT THOSE VARIABLES
plot(shortMA, linewidth=4, color=color.yellow,title="The Short Moving Average")
plot(longMA, linewidth=4, color=color.blue,title="The Long Moving Average")
plot(exitMA, linewidth=1, color=color.red,title="The Exit CrossUnder Moving Average")



//BUY STRATEGY
buy = crossover(shortMA,longMA) ? true : na
exit = crossunder(close,exitMA) ? true : na


strategy.entry("long",true,when=buy and time_cond)
strategy.close("long",when=exit and time_cond)


if (not time_cond)
    strategy.close_all()


مزید