
یہ حکمت عملی تین مختلف ادوار کی متحرک اوسط کی حساب سے ، اور قیمت کے وقفے کے ساتھ مل کر ٹریڈنگ سگنل بناتی ہے ، جو ایک عام رجحان سے باخبر رہنے کی حکمت عملی ہے۔ اس حکمت عملی کا مقصد مارکیٹ کے وسط مدتی رجحانات کی پیروی کرنا ہے ، جس میں متحرک طور پر ایڈجسٹ کرنے والے پیرامیٹرز کو مختلف اقسام اور تجارتی ماحول پر لاگو کیا جاسکتا ہے۔
اس حکمت عملی میں تین حرکت پذیر اوسط شامل ہیں: MA1، MA2 اور MA3۔ MA1 اور MA2 کے مابین ایک تجارتی چینل تشکیل دیا جاتا ہے ، جس کی کراسنگ سے تجارتی سگنل ملتا ہے۔ MA3 سگنل فلٹر کرنے کے لئے استعمال ہوتا ہے۔
جب فوری اوسط MA1 پر وسط مدتی اوسط MA2 کو پار کرتا ہے تو ، یہ مختصر مدت کے رجحان کو مضبوط کرنے کی نشاندہی کرتا ہے ، اس وقت اگر قیمت طویل مدتی اوسط MA3 سے زیادہ ہے تو ، ایک کثیر سگنل پیدا ہوتا ہے۔ اس کے برعکس ، اگر MA1 نیچے MA2 کو پار کرتا ہے ، اور قیمت MA3 سے کم ہے تو ، ایک کوریج سگنل پیدا ہوتا ہے۔
ایم اے 3 کا کام قلیل مدتی مارکیٹ کے شور کو فلٹر کرنا ہے اور صرف اس وقت اشارہ کرتا ہے جب رجحان کو درمیانی اور طویل مدتی مرحلے میں داخل کرنے کی تصدیق کی جاتی ہے۔ اس حکمت عملی میں تینوں متحرک اوسطوں کے پیرامیٹرز کو متحرک طور پر ایڈجسٹ کیا جاتا ہے تاکہ مختلف مارکیٹوں میں بہترین پیرامیٹرز کا مجموعہ تلاش کیا جاسکے۔
ایم اے کے دورانیے کو ایڈجسٹ کرکے ، مختلف اقسام کو منتخب کرنے کے لئے پیرامیٹرز کو بہتر بنائیں۔ اسٹاپ نقصان کی حکمت عملی کو بہتر بنائیں ، ایک ہی نقصان کو کنٹرول کریں۔ دیگر تکنیکی اشارے کے ساتھ مل کر سگنل کی تاثیر کی تصدیق کریں ، غلط سگنل کے امکان کو کم کریں۔
یہ حکمت عملی ایک عام رجحان سے باخبر رہنے کی حکمت عملی ہے ، جس میں ٹریڈنگ سگنل پیدا کرنے کے لئے تین متحرک اوسطوں کا حساب لگایا جاتا ہے اور کراس کو دیکھا جاتا ہے۔ یہ حکمت عملی مختلف اقسام کے لئے پیرامیٹرز کی اصلاح کے ذریعہ لاگو ہوسکتی ہے ، لیکن اس میں ڈھیر لگنے اور موڑ کے نقطہ نظر سے محروم ہونے کا خطرہ ہے۔ مستقبل میں ، حکمت عملی کو زیادہ لچکدار بنانے کے لئے ، سگنل کی تاثیر کا فیصلہ کرنے کے لئے دیگر تکنیکی اشارے متعارف کرانے ، متحرک پیرامیٹرز کی اصلاح کا طریقہ کار تیار کرنے وغیرہ کے ذریعہ بہتر بنایا جاسکتا ہے۔
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 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/
// © Meesemoo
//@version=4
strategy("Custom MA Strategy Tester", overlay = true)
MA1Period = input(13, title="MA1 Period")
MA1Type = input(title="MA1 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA"])
MA1Source = input(title="MA1 Source", type=input.source, defval=close)
MA1Visible = input(title="MA1 Visible", type=input.bool, defval=true)
MA2Period = input(50, title="MA2 Period")
MA2Type = input(title="MA2 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA"])
MA2Source = input(title="MA2 Source", type=input.source, defval=close)
MA2Visible = input(title="MA2 Visible", type=input.bool, defval=true)
MA3Period = input(200, title="MA3 Period")
MA3Type = input(title="MA3 Type", defval="SMA", options=["RMA", "SMA", "EMA", "WMA", "HMA", "DEMA", "TEMA"])
MA3Source = input(title="MA3 Source", type=input.source, defval=close)
MA3Visible = input(title="MA3 Visible", type=input.bool, defval=true)
ShowCrosses = input(title="Show Crosses", type=input.bool, defval=true)
MA1 = if MA1Type == "SMA"
sma(MA1Source, MA1Period)
else
if MA1Type == "EMA"
ema(MA1Source, MA1Period)
else
if MA1Type == "WMA"
wma(MA1Source, MA1Period)
else
if MA1Type == "RMA"
rma(MA1Source, MA1Period)
else
if MA1Type == "HMA"
wma(2*wma(MA1Source, MA1Period/2)-wma(MA1Source, MA1Period), round(sqrt(MA1Period)))
else
if MA1Type == "DEMA"
e = ema(MA1Source, MA1Period)
2 * e - ema(e, MA1Period)
else
if MA1Type == "TEMA"
e = ema(MA1Source, MA1Period)
3 * (e - ema(e, MA1Period)) + ema(ema(e, MA1Period), MA1Period)
MA2 = if MA2Type == "SMA"
sma(MA2Source, MA2Period)
else
if MA2Type == "EMA"
ema(MA2Source, MA2Period)
else
if MA2Type == "WMA"
wma(MA2Source, MA2Period)
else
if MA2Type == "RMA"
rma(MA2Source, MA2Period)
else
if MA2Type == "HMA"
wma(2*wma(MA2Source, MA2Period/2)-wma(MA2Source, MA2Period), round(sqrt(MA2Period)))
else
if MA2Type == "DEMA"
e = ema(MA2Source, MA2Period)
2 * e - ema(e, MA2Period)
else
if MA2Type == "TEMA"
e = ema(MA2Source, MA2Period)
3 * (e - ema(e, MA2Period)) + ema(ema(e, MA2Period), MA2Period)
MA3 = if MA3Type == "SMA"
sma(MA3Source, MA3Period)
else
if MA3Type == "EMA"
ema(MA3Source, MA3Period)
else
if MA3Type == "WMA"
wma(MA3Source, MA3Period)
else
if MA3Type == "RMA"
rma(MA3Source, MA3Period)
else
if MA3Type == "HMA"
wma(2*wma(MA3Source, MA3Period/2)-wma(MA3Source, MA3Period), round(sqrt(MA3Period)))
else
if MA3Type == "DEMA"
e = ema(MA3Source, MA3Period)
2 * e - ema(e, MA3Period)
else
if MA3Type == "TEMA"
e = ema(MA3Source, MA3Period)
3 * (e - ema(e, MA3Period)) + ema(ema(e, MA3Period), MA3Period)
p1 = plot(MA1Visible ? MA1 : na, color=color.green, linewidth=1)
p2 = plot(MA2Visible ? MA2 : na, color=color.yellow, linewidth=1)
p3 = plot(MA3Visible ? MA3 : na, color=color.red, linewidth=2)
fill(p1, p2, color.silver, transp=80, title="Fill")
start = timestamp(2019, 1, 1, 1, 0)
end = timestamp(2025, 1, 1, 1, 0)
if time >= start and time <= end
longCondition = crossover(MA1, MA2) and close > MA3
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(MA1, MA2) and close < MA3
if (shortCondition)
strategy.entry("Short", strategy.short)