
ڈبل چلنے والی اوسط لائن کراسنگ حکمت عملی مختلف ادوار کی چلتی اوسط کی گنتی کرکے ، قیمت کے رجحان کی سمت کا تعین کرنے کے لئے ، رجحان کی پیروی کرنے کے لئے۔ جب قلیل مدتی اوسط لائن پر طویل مدتی اوسط لائن سے گزرنے پر زیادہ کام کریں ، اور جب قلیل مدتی اوسط لائن کے نیچے طویل مدتی اوسط لائن سے گزرنے پر خالی ہوجائیں ، تو یہ ایک عام رجحان سے باخبر رہنے کی حکمت عملی ہے۔
یہ حکمت عملی 9، 21 اور 50 دوروں پر مبنی ایک انڈیکس منتقل اوسط (ای ایم اے) پر مبنی ہے۔ اس میں 9 دور ای ایم اے مختصر مدت کے رجحانات کی نمائندگی کرتا ہے ، 21 دور ای ایم اے درمیانی مدت کے رجحانات کی نمائندگی کرتا ہے ، اور 50 دور ای ایم اے طویل مدتی رجحانات کی نمائندگی کرتا ہے۔
جب 9 دورانیہ ای ایم اے پر 21 دورانیہ ای ایم اے سے گزرتا ہے تو ، مختصر مدت کے رجحان کو اوپر کی طرف موڑ دیتا ہے ، اور زیادہ ہوتا ہے۔ جب 9 دورانیہ ای ایم اے پر 21 دورانیہ ای ایم اے سے گزرتا ہے تو ، مختصر مدت کے رجحان کو نیچے کی طرف موڑ دیتا ہے ، اور خالی ہوجاتا ہے۔
کوڈ میں لانگ پوزیشن اور خالی پوزیشن کے لئے کھولنے ، روکنے ، نقصان کو روکنے کا منطق ترتیب دیا گیا ہے۔ پوزیشن کھولنے کی شرائط یکساں لائن پر پہننے یا نیچے پہننے کے لئے ہیں۔ کثیر سر اسٹاپ داخلہ قیمت × ((1+ ان پٹ اسٹاپ کا تناسب) ، خالی سر اسٹاپ داخلہ قیمت × ((1- ان پٹ اسٹاپ کا تناسب) ۔ کثیر سر اسٹاپ داخلہ قیمت × 1- ((( ان پٹ اسٹاپ کا تناسب) ، خالی سر اسٹاپ داخلہ قیمت × ((1+ ان پٹ اسٹاپ کا تناسب) ۔
اس کے علاوہ ، کوڈ میں کچھ فلٹرنگ شرائط بھی شامل کی گئیں ، جیسے رجحاناتی فلٹرنگ ، جس کی ضرورت ہوتی ہے کہ مساوی لائن پر نیچے سے گزرنے سے پہلے K لائن کو ہلایا نہیں جاسکتا ، اور فنڈز کے استعمال کا تناسب فلٹرنگ ، جس کی ضرورت ہوتی ہے کہ حکمت عملی کے حقوق اور مفادات N دن کی اوسط سے کم نہیں ہوسکتے ہیں ، اس سے بچنے کے لئے کہ نقصانات بہت زیادہ وقت تک تجارت کریں۔ یہ فلٹرنگ شرائط کسی حد تک جھوٹے سگنل سے بچ سکتی ہیں۔
مجموعی طور پر ، اس حکمت عملی میں قیمت کے رجحان کی سمت کا فیصلہ کرنے کے لئے ڈبل ای ایم اے کراسنگ کا استعمال کیا جاتا ہے ، اور معقول اسٹاپ اسٹاپ لاجسٹک کے ساتھ ، درمیانی اور لمبی لکیری رجحانات کو پکڑ سکتا ہے۔ تاہم ، ایک عنصر حکمت عملی کے طور پر ، اس کا اشارہ کافی مستحکم نہیں ہوسکتا ہے ، اور اس کو مزید بہتر بنایا جاسکتا ہے۔
کیا کرنا ہے:
یہ حکمت عملی مندرجہ ذیل پہلوؤں سے بہتر بنائی جا سکتی ہے۔
متحرک اوسط کے دورانیہ کے پیرامیٹرز کو بہتر بنائیں ، بہترین دورانیہ کا مجموعہ تلاش کریں۔ انکولی اصلاح کی تکنیک ، متحرک ترجیحی دورانیہ متعارف کروائی جاسکتی ہے۔
دیگر تکنیکی اشارے فلٹر سگنل شامل کریں ، جیسے MACD ، KD ، وغیرہ ، سگنل کے معیار کو بہتر بنائیں۔ یا مشین لرننگ متعارف کروائیں تاکہ سگنل کو درجہ دیا جاسکے ، جو خود بخود جعلی سگنل کو فلٹر کرے۔
حجم تجزیہ کے ساتھ مل کر: اوسط لائن کو توڑنے کے باوجود ، جب حجم کم ہوتا ہے تو ، سگنل نہیں ملتا ہے۔
جب ایک بریک اپ ہوتا ہے تو ، پہلے سے موجود اتار چڑھاؤ کی جانچ پڑتال کی جاتی ہے ، جیسے کہ زلزلے کے علاقے میں ایک بریک اپ ، جو جھوٹا بریک اپ ہوسکتا ہے۔
متحرک اسٹاپ میکانیزم قائم کریں ، جیسے ٹریک ٹائپ اسٹاپ ، چانڈیلیئر ایگزٹ وغیرہ ، تاکہ اسٹاپ کا فاصلہ کم کیا جاسکے ، لیکن اس بات کو یقینی بنائیں کہ اسٹاپ موثر ہو۔
پوزیشن مینجمنٹ کو بہتر بنائیں ، جیسے فکسڈ پوزیشن ، متحرک پوزیشن ، بیعانہ پوزیشن وغیرہ ، تاکہ منافع اور نقصان کا تناسب زیادہ معقول ہو۔
ٹریڈنگ کے اخراجات اور سلائڈ پوائنٹ کے اثرات کو مکمل طور پر مدنظر رکھنا۔ سٹاپ اسٹاپ نقصان کی شرح کو بہتر بنانا ، اس بات کو یقینی بنانا کہ حکمت عملی حقیقی وقت میں منافع بخش رہے۔
اس حکمت عملی کا مجموعی ڈھانچہ معقول ہے ، اصول آسان ہے ، دوہری ای ایم اے کراسنگ کے ذریعے رجحان کی سمت کا فیصلہ کرتا ہے ، اور اسٹاپ اسٹاپ نقصان کی منطق ترتیب دی گئی ہے ، جس سے رجحانات کو پکڑا جاسکتا ہے۔ لیکن ایک عنصر کی حکمت عملی کے طور پر ، پیرامیٹرز کی ترتیب ، سگنل فلٹرنگ وغیرہ کو مزید بہتر بنایا جاسکتا ہے ، جس سے حکمت عملی زیادہ مستحکم ہوجاتی ہے۔ اسٹاپ نقصان اور پوزیشن مینجمنٹ جیسے میکانزم کو شامل کرنے سے ، خطرے کو مزید کم کیا جاسکتا ہے۔ مجموعی طور پر ، یہ حکمت عملی ایک قابل اعتماد رجحان سے باخبر رہنے کی حکمت عملی کا فریم ورک فراہم کرتی ہے ، جس میں اصلاح کے بعد مستحکم سرمایہ کاری کی واپسی حاصل کی جاسکتی ہے۔
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
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/
// © TradingMentalist
//@version=4
strategy("Initial template",initial_capital=1000, overlay=true, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.04, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////inputs
//turn on/off longs/shorts / extraneous conditions
longinc=input(true, title="include longs?")
lConSw2=input(true, title="condition two?")
lConSw3=input(true, title="condition three?")
shotinc=input(true, title="include shorts?")
sConSw2=input(true, title="condition two?")
sConSw3=input(true, title="condition three?")
//turn on/off / adjust trade filters (average range/average equity)
sidein2 = input(200, step=10, title='lookback for average range (bars)')
sidein = input(1, title='filter trades if range is less than (%)')/100
equityIn = input(40, title='filter trades if equity is below ema()')
sidewayssw = input(true, title='sideways filter?')
equitysw = input(true, title='equity filter?')
longtpin = input(1,step=0.1, title='long TP %')/100
longslin = input(0.4,step=0.1, title='long SL %')/100
shorttpin = input(1,step=0.1, title='short TP %')/100
shortslin = input(0.4,step=0.1, title='short SL %')/100
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////filters
//(leave as is)
side1 = (close[1] + close[sidein2]) / 2
side2 = close[1] - close[sidein2]
side3 = side2 / side1
notsideways = side3 > sidein
equityMa = equitysw ? ema(strategy.equity, equityIn) : 0
equityCon = strategy.equity >= equityMa
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////indicators
ma1 = ema(close, 9)
ma2 = ema(close, 21)
ma3 = ema(close, 50)
plot(ma1, color=color.new(#E8B6B0,50))
plot(ma2, color=color.new(#B0E8BE,50))
plot(ma3, color=color.new(#00EEFF,50))
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////conditions
//adjust conditions
//-------------------------------------------
longCondition1 = crossover(ma2,ma3)
longCondition2 = close[5] > close[10]
longCondition3 = close[1] > close[2]
shortCondition1 = crossover(ma3,ma2)
shortCondition2 = close[5] < close[10]
shortCondition3 = close[1] < close[2]
closelong = shortCondition1
closeshort = longCondition1
//-------------------------------------------
//(leave as is)
longCondition1in = longCondition1
longCondition2in = lConSw2 ? longCondition2 : true
longCondition3in = lConSw3 ? longCondition3 : true
shortCondition1in = shortCondition1
shortCondition2in = sConSw2 ? shortCondition2: true
shortCondition3in = sConSw3 ? shortCondition3: true
longConditions = longCondition1in and longCondition2in and longCondition3in
shortConditions = shortCondition1in and shortCondition2in and shortCondition3in
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////execution
//(leave as is)
long = sidewayssw ? notsideways and equityCon and longConditions : equityCon and longConditions
short = sidewayssw ? notsideways and equityCon and shortConditions : equityCon and shortConditions
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////risk
//(leave as is)
longtplevel = strategy.position_avg_price * (1 + longtpin)
longsllevel = strategy.position_avg_price * (1 - longslin)
shorttplevel = strategy.position_avg_price * (1 - shorttpin)
shortsllevel = strategy.position_avg_price * (1 + shortslin)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////timeframe
//adjust timeframe
//-------------------------------------------
startyear = 2000
startmonth = 1
startday = 1
stopyear = 9999
stopmonth = 12
stopday = 31
//-------------------------------------------
//(leave as is)
startperiod = timestamp(startyear,startmonth,startday,0,0)
periodstop = timestamp(stopyear,stopmonth,stopday,0,0)
timeframe() =>
time >= startperiod and time <= periodstop ? true : false
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////orders
//comments are empty characters for clear chart
if timeframe()
if longinc
if strategy.position_size == 0 or strategy.position_size > 0
strategy.entry(id="long", long=true, when=long, comment=" ")
strategy.exit("stop","long", limit=longtplevel, stop=longsllevel,comment=" ")
strategy.close(id="long", when=closelong, comment = " ")
if shotinc
if strategy.position_size == 0 or strategy.position_size < 0
strategy.entry(id="short", long=false, when=short, comment = " ")
strategy.exit("stop","short", limit=shorttplevel, stop=shortsllevel,comment = " ")
strategy.close(id="short", when=closeshort, comment = " ")