
ڈبل مساوی لائن کراس ٹرینڈ حکمت عملی ایک ٹریڈنگ حکمت عملی ہے جو چلتی اوسط پر مبنی ہے۔ یہ فوری EMA اور سست SMA کے کراس کو خرید اور فروخت کے اشارے کے طور پر استعمال کرتا ہے ، اور MACD اشارے کے انحراف کے ساتھ مل کر سگنل کو فلٹر کرتا ہے۔ اس حکمت عملی میں قیمت ، رجحان اور حرکیات جیسے متعدد عوامل کو ایک ساتھ مدنظر رکھا جاتا ہے ، جس سے ایک نسبتا complete مکمل تجارتی نظام تشکیل دیا جاتا ہے۔
اس حکمت عملی میں EMA اور SMA کی دو متحرک اوسط استعمال کی جاتی ہیں۔ ان میں EMA 200 دن کی لمبائی اور SMA 100 دن کی لمبائی ہے۔ جب قیمت میں اضافہ ہوتا ہے تو وہ دونوں میڈین لائنوں کو توڑ دیتا ہے اور جب قیمت میں کمی ہوتی ہے تو وہ دونوں میڈین لائنوں کو توڑ دیتا ہے۔ اس سے زلزلے کے رجحانات اور قلیل مدتی ردوبدل کو مؤثر طریقے سے فلٹر کیا جاسکتا ہے۔
سگنل کی وشوسنییتا کو مزید بڑھانے کے لئے ، حکمت عملی میں MACD اشارے بھی متعارف کروائے گئے ہیں۔ جب قیمت EMA اور SMA کو توڑنے کے لئے سگنل بناتی ہے تو ، MACD کی تیز لائن نیچے سے ٹوٹنے کی ضرورت ہوتی ہے اور MACD کالم گراف 0 محور کے اوپر ہوتا ہے ، صرف اس صورت میں جب حقیقی خرید سگنل کو متحرک کیا جائے گا۔ اس کے برعکس ، MACD کی تیز لائن اوپر سے ٹوٹ جاتی ہے اور MACD کالم گراف 0 محور کے نیچے ہوتا ہے ، صرف اس صورت میں جب حقیقی فروخت سگنل کو متحرک کیا جائے گا۔
اس کے علاوہ ، حکمت عملی میں روک تھام اور روک تھام کا بھی انتظام کیا گیا ہے۔ حکمت عملی کے کھلنے کے بعد ، صارف کے ذریعہ طے شدہ تناسب کے مطابق روک تھام اور روک تھام کا حساب لگایا جائے گا۔ اس طرح ، ایک ہی تجارت کے خطرے کو مؤثر طریقے سے کنٹرول کیا جاسکتا ہے۔
مجموعی طور پر ، اس حکمت عملی نے متعدد اشارے پر غور کیا ، خرید و فروخت کے اشاروں پر سخت فلٹرنگ کی شرائط طے کیں ، اور اسٹاپ نقصان کو روکنے کے خطرے کا انتظام کیا ، جس سے ایک نسبتا strict سخت اور مکمل تجارتی نظام تشکیل پایا۔
ڈبل مساوی لائن کراس رجحانات کی حکمت عملی میں مندرجہ ذیل فوائد ہیں:
متعدد اشارے ، قیمتوں ، رجحانات اور حرکیات کے مجموعی طور پر غور کرنے کے ساتھ ، سگنل پر سخت فلٹرنگ کی شرائط طے کی گئیں ، جس سے جعلی سگنل کو مؤثر طریقے سے روکنے اور سگنل کی وشوسنییتا کو بہتر بنایا جاسکے۔
دو مختلف پیرامیٹرز کی ایک چلتی اوسط کا استعمال کرتے ہوئے ، مارکیٹ کے رجحانات کو بہتر طور پر شناخت کیا جاسکتا ہے ، اتار چڑھاؤ کی صورتحال کو فلٹر کیا جاسکتا ہے۔ تیز رفتار ای ایم اے لائن کو وقت پر قیمتوں میں ہونے والی تبدیلیوں کی پیروی کرنے کے لئے استعمال کیا جاتا ہے۔ سست رفتار ایس ایم اے لائن طویل مدتی رجحانات کا فیصلہ کرنے کے لئے استعمال کی جاتی ہے۔
MACD اشارے میں مختلف پیرامیٹرز کی تشکیل کی جاسکتی ہے ، جو مختلف مارکیٹوں کی خصوصیات کے مطابق ایڈجسٹ کی جاسکتی ہے ، اور اس میں بہت زیادہ لچک ہے۔ MACD کی ترتیب اس بات کو یقینی بناتی ہے کہ تجارتی سگنل کو قیمت ، رجحان اور حرکیات کی حمایت حاصل ہو ، جس سے اس کی بہت زیادہ اطلاق ہوتی ہے۔
SIZE_MATHFUNC سے بچنے کے لئے ، اسٹاپ نقصان کی روک تھام کی حد مقرر کریں تاکہ آپ کو ہر تجارت میں ہونے والے نقصان کو زیادہ سے زیادہ کنٹرول کیا جاسکے واحد نقصان کا خطرہ بہت زیادہ ہے۔ معقول تناسب کی روک تھام کا تعین منافع کے کچھ حصوں کو لاک کرنے اور منافع کے بعد مارکیٹ کے خطرے کو کم کرنے کے لئے استعمال کیا جاتا ہے۔
اس حکمت عملی کے پیرامیٹرز کو لچکدار ترتیب دیا جاسکتا ہے ، اور اصلاح کے نتائج کے مطابق حکمت عملی کو ایڈجسٹ کیا جاسکتا ہے ، اور یہ بہت عملی ہے۔ مختلف مارکیٹوں اور پیرامیٹرز کی جانچ کے ل optimizing بہت زیادہ جگہ ہے۔
ڈبل مساوی لائن کراس رجحانات کی حکمت عملی میں کچھ خطرات بھی ہیں ، جو بنیادی طور پر درج ذیل پہلوؤں پر مرکوز ہیں:
جب اسٹاک کی قیمتوں میں شدید اتار چڑھاؤ ظاہر ہوتا ہے تو ، ای ایم اے اور ایس ایم اے میں متعدد غلط کراس ہوسکتے ہیں ، جس کی وجہ سے ٹریڈنگ سگنل کے بار بار کھلنے اور بند ہونے کا سبب بنتا ہے۔ اس سے تجارت کی فریکوئنسی اور فیسوں میں اضافہ ہوگا۔
ایم اے سی ڈی اشارے میں جھوٹی توڑ کی صورت حال ہوسکتی ہے ، خاص طور پر جب زلزلے کی رفتار ابھی واضح نہیں ہے۔ اس صورت میں سگنل بھی ناقابل اعتماد ہے اور اس سے غیر ضروری نقصان ہوسکتا ہے۔
اسٹاپ نقصان کی ترتیب کی جگہ اور تناسب منافع کے نتائج پر بہت زیادہ اثر انداز ہوتا ہے۔ اگر اسٹاپ نقصان بہت چھوٹا ہوتا ہے تو ، اس کا احاطہ کرنے کا خطرہ ہوتا ہے۔ اور اگر اسٹاپ نقصان بہت بڑا ہوتا ہے تو ، انفرادی نقصان بہت زیادہ ہوسکتا ہے۔ اس کو بہترین پیرامیٹرز تلاش کرنے کے لئے کافی جانچ کی ضرورت ہے۔
حرکت پذیر اوسط ایک رجحان سے باخبر رہنے کا اشارے ہے ، اور قیمتوں میں تیزی سے الٹ جانے پر اس کی نشاندہی کی افادیت کو چھوٹ دی جاتی ہے۔ حکمت عملی کو روکنے کے لئے وقت نہ ملنے پر قیمتوں میں الٹ جانا پڑ سکتا ہے ، جس سے زیادہ نقصان ہوتا ہے۔
اس کا حل مندرجہ ذیل ہے:
شدید ہلچل کی صورت حال کے لئے، آپ کو مناسب طریقے سے منتقل اوسط کے پیرامیٹرز کو ایڈجسٹ کر سکتے ہیں، کم پیرامیٹر EMA اور SMA کا استعمال کرتے ہوئے، کراسنگ کی تعداد کو کم کرنے کے لئے.
MACD صفر محور کے اوپر اور نیچے توڑنے کے لئے فلٹرنگ کی شرائط کو شامل کرنے سے ، جعلی توڑنے کو کچھ حد تک کم کیا جاسکتا ہے۔ اس کے علاوہ ، دیگر اشارے جیسے KDJ ، BOLL وغیرہ کو جوڑنے پر بھی غور کیا جاسکتا ہے۔
سٹاپ نقصان کی پوزیشن اور تناسب کی ترتیبات کو بہتر بنانے کے لئے بہتر پیرامیٹرز کو تلاش کرنے کے لئے کافی پیچھا کرنے کی ضرورت ہے. اس کی بنیاد پر مسلسل نگرانی اور متحرک ایڈجسٹمنٹ پر بھی غور کیا جانا چاہئے.
قیمتوں میں تیزی سے الٹ جانے کی شناخت کا طریقہ کار ترتیب دیا جاسکتا ہے۔ جب غیر معمولی الٹ پائی جاتی ہے تو ، خطرے کی نالی کو کنٹرول کرنے کے لئے پوزیشنوں کو کم کرنے یا تجارتی حکمت عملی کو معطل کرنے کے لئے ہنگامی اقدامات اٹھائے جائیں گے۔
ڈبل مساوی لائن کراس رجحانات کی حکمت عملی میں مزید اصلاحات کی گنجائش ہے ، جس میں مندرجہ ذیل پہلوؤں پر توجہ دی گئی ہے۔
زیادہ اشارے کو جانچنے کے لئے ، بہتر پیرامیٹرز کی تلاش کے لئے۔ جیسے BOLL چینل متعارف کرانا ، اتار چڑھاؤ کے اثر کو مدنظر رکھنا وغیرہ۔
متحرک اوسط کی لمبائی کے پیرامیٹرز کو بہتر بنائیں تاکہ مارکیٹ کے مختلف حالات میں بہترین پیرامیٹرز کا مجموعہ مل سکے۔ پیرامیٹرز کو رولنگ میں بہتر بنانا بھی ایک آپشن ہے۔
زیادہ سائنسی اور معقول طریقے سے اسٹاپ اسٹاپ نقصان کی حکمت عملی ترتیب دیں۔ جیسے کہ ٹریکنگ اسٹاپ نقصان متعارف کرانا ، یا تاریخی اعدادوشمار کے نتائج پر مبنی متحرک رسک ریٹرن ریٹرن وغیرہ۔ اس سے حکمت عملی کی استحکام میں مزید اضافہ ہوسکتا ہے۔
قیمتوں میں غیر معمولی تبدیلیوں کی خود کار طریقے سے شناخت اور ہنگامی میکانزم کی تشکیل۔ انتہائی صورتحال میں پوزیشنوں کو فعال طور پر کم کرنا یا حکمت عملی کو معطل کرنا تاکہ بڑے نقصانات سے بچا جاسکے۔
تجارت کی مختلف اقسام کی توسیع ، جیسے غیر ملکی کرنسی ، ڈیجیٹل کرنسی وغیرہ۔ مختلف اقسام کی پیرامیٹرز کی مضبوطی کی جانچ کرنا ، حکمت عملی کے دائرہ کار کو وسعت دینا۔
حکمت عملی کو بہتر بنانے کے لئے فنڈ مینجمنٹ کی حکمت عملی ، جیسے مقدار کی تجارت ، پوزیشن تناسب وغیرہ۔ انفرادی نقصانات کے خطرے کو کنٹرول کریں ، تاکہ مجموعی طور پر فنڈ وکر کو زیادہ ہموار بنایا جاسکے۔
ڈبل مساوی لائن کراس ٹرینڈ حکمت عملی متعدد عوامل پر جامع غور کرتی ہے۔ تجارتی سگنل جاری کرنے کے لئے قیمت ، رجحان اور حرکیات کے متعدد اشارے کی حمایت کی ضرورت ہوتی ہے ، تاکہ سگنل کی وشوسنییتا کو یقینی بنایا جاسکے۔ حکمت عملی میں موبائل اسٹاپ لاسٹ اسٹاپ بھی استعمال کیا جاتا ہے ، جو ایک ہی تجارت کے خطرے کو مؤثر طریقے سے کنٹرول کرسکتا ہے۔ حکمت عملی کے پیرامیٹرز کی ترتیب لچکدار ، عملی ہے ، جو خودکار تجارت کے لئے موزوں ہے۔
تاہم ، کوئی بھی حکمت عملی کامل نہیں ہوسکتی ہے۔ اس حکمت عملی کو لاگو کرنے میں کچھ دشواریوں کا سامنا کرنا پڑتا ہے ، جیسے بار بار تجارت ، جعلی توڑ پھوڑ اور اسٹاپ نقصان کی پوزیشن کی ترتیب وغیرہ۔ اس کے لئے ہمیں پیرامیٹرز کے مجموعے کو بہتر بنانے ، نئے تکنیکی اشارے کے مجموعے کو متعارف کرانے ، اسٹاپ نقصان کے طریقہ کار کو بہتر بنانے اور اس طرح کی حکمت عملی کی استحکام اور منافع بخش صلاحیت کو مزید بڑھانے کے لئے متعدد پہلوؤں سے کام کرنے کی ضرورت ہے۔
مجموعی طور پر ، ڈبل مساوی لائن کراس رجحان کی حکمت عملی نے ایک نسبتا complete مکمل اور سخت تجارتی نظام تشکیل دیا ہے۔ اس حکمت عملی کے بعد کی تحقیق اور اطلاق میں ، مسلسل اصلاح اور بہتری کے ذریعہ ، اس سے زیادہ عملی جنگ کی قیمت کا مظاہرہ کرنے کا امکان ہے۔
/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// Hi,
// This is my first strategy made by myself(except for the MACD indicator). I'm publishing this to get myself out there and for some newer people to see how a basic strategy works. All credits go to Zen&TheArtofTrading, for teaching me almost everything I know about Pinescript
// The strategy is basically an MACD crossover trend strategy. If the MACD line crosses the signal line upward, above the zero point of the histogram, while the price is above 200 EMA and 100 SMA it's a buy signal
// If the MACD line crosses the signal line downward, while below zero point of the histogram, as well as the price being below 200 EMA and 100 SMA it's a sell signal
// I used the 200 EMA and 100 SMA because I wanted to filter weak signals as much as possible when the market is ranging, if you have any suggestions to go around this better, please let me know, still learning everyday
// If you have any suggestions, tips or tricks please let me know. I'm still new to Pinescript, but having a lot of fun trying stuff out. If you see something in my code that you don't understand, feel free to ask, I'll try to answer as best as I can
// I opened the strategy with predetermined backtesting pyramiding, currency etc. This made the progress of backtesting multiple TP and SL easier. Also the commission value is from Binance Futures, I just left it in there for anyone who wants to just copy this strategy
strategy("MACD Crossover Trend Strategy Template", overlay = true )
// Determining inputs and values, I just copied the built-in MACD strategy and removed everything I didn't need, just needed the barebone indicator and added EMA + SMA inputs
fast_length = input(title = "Fast Length", type = input.integer, defval = 12, group = "MACD Values")
slow_length = input(title = "Slow Length", type = input.integer, defval = 26, group = "MACD Values")
src = input(title = "Source", type = input.source, defval = close, group = "MACD Values")
signal_length = input(title = "Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9, group = "MACD Values")
sma_source = input(title = "Simple MA (Oscillator)", type = input.bool, defval = false, group = "MACD Values")
sma_signal = input(title = "Simple MA (Signal Line)", type = input.bool, defval = false, group = "MACD Values")
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
emaLength = input(title = "EMA", type = input.integer, defval = 200, step = 10, group = "Moving Averages")
smaLength = input(title = "SMA", type = input.integer, defval = 100, step = 10, group = "Moving Averages")
// Input backtest range, you can adjust this here or in the input options
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12, group = "Backtest Date Range")
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31, group = "Backtest Date Range")
fromYear = input(defval = 2000, title = "From Year", type = input.integer, minval = 1970, group = "Backtest Date Range")
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12, group = "Backtest Date Range")
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31, group = "Backtest Date Range")
thruYear = input(defval = 2099, title = "Thru Year", type = input.integer, minval = 1970, group = "Backtest Date Range")
// Inputs for EMA, SMA and to adjust your take profit and stop losses in the input options while backtesting, it's result of your input is calculated back to percentages
ema = ema(close, emaLength)
sma = sma(close, smaLength)
profitlong = input(title = "Profit Long %", type = input.float, defval = 2, minval = 0.1, maxval = 100, step = 0.1, group = "TP / SL %") * 0.01
losslong = input(title = "Loss Long %", type = input.float, defval = 1, minval = 0.1, maxval = 100, step = 0.1, group = "TP / SL %") * 0.01
profitshort = input(title = "Profit Short %", type = input.float, defval = 2, minval = 0.1, maxval = 100, step = 0.1, group = "TP / SL %") * 0.01
lossshort = input(title = "Loss Short %", type = input.float, defval = 1, minval = 0.1, maxval = 100, step = 0.1, group = "TP / SL %") * 0.01
// Check EMA and SMA also check the backtest range. inDataRange is a true or false statement, true if the date right now is between the parameters that's filled at the corresponding inputs
// (for example 1-1-2020 till 12-12-2020, if that specific bar is between these dates, statement is true and trade will be executed)
// If the date is not in between the given parameters, statement turns to false and it won't allow new trades and closes all current trades as seen with the strategy.close_all function
inDataRange = (time >= timestamp(syminfo.timezone, fromYear, fromMonth, fromDay, 0, 0)) and (time < timestamp(syminfo.timezone, thruYear, thruMonth, thruDay, 0, 0))
long = close > ema and close > sma and inDataRange
short = close < ema and close < sma and inDataRange
// Entry and exit signals + checking backtest date range, what the signals are supposed to do is noted at the beginning of the code
// I want a way to filter out weak signals that are ranging around the zero point of the histogram.
// So far couldn't think of a decent way to do this over multiple symbols since the range of the histogram changes with every symbol, sometimes ranging between 0 and 1 or sometimes ranging between 0 and 1000
// I could probably use a cofficiency or something, but that's beyond my grasp at the moment
// Also I wanted a way to let my strategy determine a stop loss based on the pullback and having a 1.5 risk/reward TP on top of that. Couldn't really figure out a way to determine the pullback
if (crossover(macd, signal) and macd > 0)
strategy.entry("Long", long = strategy.long,
comment = "Long Buy",
when = long)
strategy.exit("Exit Long", "Long", profit = close * profitlong / syminfo.mintick, loss = close * losslong / syminfo.mintick)
if (crossunder(macd, signal) and macd < 0)
strategy.entry("Short", long = strategy.short,
comment = "Short Buy",
when = short)
strategy.exit("Exit Short", "Short", profit = close * profitshort / syminfo.mintick, loss = close * lossshort / syminfo.mintick)
// To make sure the backtesting doesn't leave a position open beyond, or before, our applied dates
if (not inDataRange)
strategy.close_all()
// plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)