
اس حکمت عملی میں MACD اشارے کے گولڈ فورک ڈیڈ فورک سگنل ، K لائن کے اختتامی قیمتوں اور درمیانی لائنوں کے تعلقات ، قیمت کے اتار چڑھاؤ کی خصوصیات کو شامل کیا گیا ہے تاکہ داخلے اور باہر نکلنے کے وقت کا فیصلہ کیا جاسکے۔ اس کے ساتھ ہی دوبارہ داخلے اور داخلے میں ترمیم کرنے کا طریقہ کار ترتیب دیا گیا ہے تاکہ زیادہ تجارتی مواقع حاصل کرنے کے ساتھ ساتھ خطرے کو کنٹرول کیا جاسکے اور مستحکم منافع حاصل کیا جاسکے۔
یہ حکمت عملی بنیادی طور پر مندرجہ ذیل اصولوں پر مبنی ہے۔
MACD کے تجزیہ کے ساتھ تیز لائن اور سست لائن کے گولڈ فورک ڈیڈ فورکس کو استعمال کیا جاتا ہے تاکہ کثیر اور خالی مارکیٹوں کا فیصلہ کیا جاسکے ، اور مخصوص داخلے کے مقامات۔
K لائن کے اختتامی قیمت اور درمیانی لائن کے درمیان تعلقات کا استعمال کرتے ہوئے یہ فیصلہ کریں کہ آیا ڈوبکی رجحان ختم ہوچکا ہے یا نہیں ، اور اس کا آغاز کہاں ہے۔
دوبارہ داخلے کا طریقہ کار ترتیب دیا گیا ہے ، اگر MACD کے اس دور کے اختتام پر رجحانات کے مطابق جاری رہے تو دوبارہ داخلے کے مواقع میں اضافہ کیا جائے گا۔
ایڈجسٹ انٹری میکانزم قائم کریں ، اگر قیمتوں میں جزوی ایڈجسٹمنٹ ہوتی ہے لیکن ابھی تک اس میں ردوبدل نہیں ہوا ہے تو ، پوزیشنوں کو شامل کیا جائے ، یہ رجحان کے اندر ایڈجسٹمنٹ ہے۔
مندرجہ بالا نکات کو جوڑ کر ، متحرک طور پر پوزیشن کو ایڈجسٹ کریں ، رجحان کے دوران زیادہ سے زیادہ منافع حاصل کریں ، اور رجحان کے اختتام پر تیزی سے باہر نکلیں۔
خاص طور پر ، حکمت عملی سب سے پہلے یہ فیصلہ کرتی ہے کہ آیا MACD کی تیز لائن اور لمبی لائن میں سنہری فورک یا ڈیڈ فورک کا رجحان ہے ، اگر سنہری فورک زیادہ ہے تو ، اگر ڈیڈ فورک خالی ہے تو؛ پھر یہ فیصلہ کریں کہ آیا K لائن مڈل لائن کو چھوتی ہے یا نہیں ، اگر یہ ٹچ ہوتا ہے تو ، اس کو رجحان کے اختتام کے طور پر سمجھا جاتا ہے۔
اس کے علاوہ ، حکمت عملی میں دوبارہ داخلے کا طریقہ کار بھی موجود ہے ، یعنی ، اگر MACD اسی سمت کا اشارہ جاری رکھے تو حکمت عملی رجحان کی پیروی کرنے کے لئے دوبارہ پوزیشن کھولے گی اگر اصل سمت کا رجحان ختم ہونے کے بعد۔ اس کے علاوہ ، ایک اصلاحی داخلے کا طریقہ کار بھی قائم کیا گیا ہے ، اگر قیمت میں معمولی ایڈجسٹمنٹ ہوئی ہے لیکن ابھی تک مکمل الٹ نہیں ہوئی ہے تو حکمت عملی مناسب طریقے سے پوزیشن میں اضافہ کرے گی ، جو رجحان میں معمول کی واپسی ہے۔
ان ترتیبات کے ذریعہ ، حکمت عملی رجحانات میں متحرک پوزیشنوں کو ایڈجسٹ کرنے ، زیادہ سے زیادہ داخلے اور باہر نکلنے کی اجازت دیتی ہے ، جس سے خطرے پر قابو پانے کی شرط پر زیادہ سے زیادہ منافع ہوتا ہے۔
اس حکمت عملی میں متعدد اشارے شامل ہیں اور اس میں مندرجہ ذیل اہم فوائد ہیں:
MACD رجحانات اور الٹ پوائنٹس کی نشاندہی کرسکتا ہے ، جس سے مخصوص انٹری پوائنٹس کا تعین ہوتا ہے۔
اختتامی قیمت اور درمیانی لائن کے مابین تعلقات کا تعین کرنے سے رجحان کا اختتام درست طریقے سے طے کیا جاسکتا ہے۔
دوبارہ داخلے کے طریقہ کار سے پوزیشنوں کی تعداد میں اضافہ ہوا ہے اور فنڈز کے استعمال میں بہتری آئی ہے۔
ٹرانسمیشن کے نظام کو درست کریں تاکہ رجحانات کو اچھی طرح سے پکڑنے کے لۓ.
اسٹریٹجک آپریشن کی اعلی تعدد لیکن کنٹرول خطرے، اعلی منافع کے عوامل حاصل کرنے کے لئے آسان.
پیرامیٹرز کو ایڈجسٹ کیا جاسکتا ہے اور مختلف اقسام اور حالات کے لئے بہتر بنایا جاسکتا ہے۔
حکمت عملی واضح اور سمجھنے میں آسان ہے ، کوڈ کو مختصر لکھا گیا ہے ، اور اسے چلانے میں آسان ہے۔
ریٹرننگ کے اعداد و شمار کافی ہیں ، اعلی وشوسنییتا ہے ، اور نتائج کو فلیش ڈسک پر آسانی سے تصدیق کی جاسکتی ہے۔
اس حکمت عملی کے ساتھ مندرجہ ذیل اہم خطرات بھی ہیں:
ایم اے سی ڈی کے غلط سگنل کے امکانات کو دوسرے اشارے کے ساتھ مل کر تصدیق کرنے کی ضرورت ہے۔
بڑے پیمانے پر سٹاپ نقصان کی ترتیب بہت چھوٹی ہے اور اس کی وجہ سے اس کی وجہ سے اس کی وجہ سے ہوسکتا ہے.
دوبارہ داخلے اور اصلاحی داخلے میں آپریشن کی تعدد میں اضافہ ، فنڈز کے استعمال پر قابو پانے کی ضرورت ہے۔
اس کے علاوہ ، اس نے کہا ، “یہ ایک بہت بڑا خطرہ ہے ، لیکن اس سے زیادہ نقصان نہیں ہوسکتا ہے۔”
تجارت کی اقسام اور پیرامیٹرز کی ترتیبات کو بہتر بنانے کی ضرورت ہے ، تمام اقسام پر لاگو نہیں ہوتا ہے۔
مارکیٹ کے مطابق پیرامیٹرز کو ایڈجسٹ کرنے کے لئے مسلسل ریٹرننگ اور اصلاح کی ضرورت ہے۔
فکسڈ سسٹم میں سلائڈ پوائنٹ لاگت کے اثرات پر غور کرنے کی ضرورت ہے۔
خطرے کے انتظام کے اقدامات میں شامل ہیں: اسٹاپ نقصان کی حد مقرر کریں تاکہ انفرادی نقصان کو محدود کیا جاسکے۔ فنڈز کے استعمال کا اندازہ کریں ، مناسب نقد ذخائر کو برقرار رکھیں۔ پرجاتیوں کے لئے مناسب پیرامیٹرز کا انتخاب کرنے کے لئے معائنہ کریں۔ پیرامیٹرز کو بہتر بنانے کے لئے مارکیٹ کی خصوصیات میں تبدیلیوں پر مسلسل توجہ دیں۔ معائنہ اور تخروپن میں سلائڈ لاگت کے اثرات پر غور کریں۔
اس حکمت عملی کو مزید بہتر بنانے کے لیے مندرجہ ذیل نکات پر غور کیا جا سکتا ہے۔
دیگر اشارے کے ساتھ مل کر سگنل کی توثیق کریں ، سگنل کی درستگی کو بہتر بنائیں۔ جیسے کے ڈی جے اشارے وغیرہ۔
خود کار طریقے سے متحرک سٹاپ نقصان سٹاپ معیار مقرر کریں.
دوبارہ داخلہ اور ترمیم شدہ داخلے کے لئے شرائط کی منطق کو بہتر بنائیں۔
سبزیوں کے پیرامیٹرز کو بہتر بنائیں ، بہترین پیرامیٹرز کا مجموعہ طے کریں۔
فنڈز کے استعمال کے تناسب کو بہتر بنائیں ، دوبارہ داخلے اور ترمیم شدہ داخلے کے لئے فنڈز کی حد طے کریں۔
مجموعی مقدار کے اشارے ، ریورس کے دوران پوزیشن میں کمی سے بچنے کے لئے۔
آؤٹ پٹ میکانزم شامل کریں ، جیسے کہ موبائل اسٹاپ نقصانات وغیرہ۔
حکمت عملی کو ٹریڈنگ روبوٹ کے طور پر پیک کرنے پر غور کریں ، تاکہ تجارت کو خودکار بنایا جاسکے۔
سلائڈ پوائنٹ لاگت جیسے فکسڈ ڈسک کے عوامل کو شامل کریں۔
ان اصلاحات کے ذریعے ، حکمت عملی کی استحکام ، موافقت ، آٹومیشن کی سطح اور عملی طور پر اثر کو مزید بہتر بنایا جاسکتا ہے۔
یہ حکمت عملی MACD اشارے کے ٹریڈنگ سگنل ، K لائن اختتامی قیمت تجزیہ اور ایک سے زیادہ اندراج کے طریقہ کار کو مربوط کرتی ہے ، رجحانات کو پکڑنے کے ساتھ ساتھ خطرے کو کنٹرول کرتی ہے۔ یہ حکمت عملی اعلی آپریٹنگ فریکوئنسی ، اچھی سرمایہ کاری اور کم مشکل کے فوائد کی حامل ہے ، لیکن خطرے پر قابو پانے اور حکمت عملی کی اصلاح پر بھی توجہ دینے کی ضرورت ہے ، جس میں بہت زیادہ عملی قدر اور توسیع کی گنجائش ہے۔ اگر روبوٹ ٹیکنالوجی کے ساتھ مل کر آٹومیشن کی توثیق کی جاتی ہے تو ، یہ ایک بہت ہی عملی مقدار کا تجارتی پروگرام بن سکتا ہے۔
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 2h
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/
// © Puckapao
//@version=4
// strategy(title="MACD", shorttitle="MACD", overlay=true, initial_capital=10000.00, currency="USD", default_qty_type=strategy.cash, default_qty_value=10000.00)
// Getting inputs
reenter_delay = input(title="Re-enter Delay", type=input.integer, defval=2)
sculp_delay = input(title="Sculp Delay", type=input.integer, defval=4)
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=true)
ema_period = input(title="EMA Period", type=input.integer, defval=21)
// Get date
startDate = input(title="Start Date", type=input.integer,
defval=19, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
defval=09, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
defval=2017, minval=1800, maxval=2100)
endDate = input(title="End Date", type=input.integer,
defval=31, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
defval=2021, minval=1800, maxval=2100)
// STEP 2:
// Look if the close time of the current bar
// falls inside the date range
inDateRange = true
reenter_cnt = 0
reenter_cnt := nz(reenter_cnt[1])
sculp_cnt = 0
sculp_cnt := nz(sculp_cnt[1])
close_cnt = 0
close_cnt := nz(close_cnt[1])
on_long = false
on_long := nz(on_long[1])
on_short = false
on_short := nz(on_short[1])
sculp = false
reenter = false
slowdown = false
ema = ema(close, ema_period)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
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
// plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
// plot(macd, title="MACD", color=col_macd, transp=0)
// plot(signal, title="Signal", color=col_signal, transp=0)
cross_up = crossover(macd, signal)
cross_down = crossunder(macd, signal)
if (inDateRange)
over_macd = macd > 0 and signal > 0 ? true : false
under_macd = macd < 0 and signal < 0 ? true : false
over_water = close > ema ? true : false
under_water = close < ema ? true : false
slowdown := hist >= 0 ? (hist[1] > hist ? true : false) : (hist[1] > hist ? false : true)
reenter := hist >= 0 ? (hist[1] < hist ? true : false) : (hist[1] > hist ? true : false)
sculp := (hist >= 0 ? (hist[1] > hist ? true : false) : (hist[1] < hist ? true : false))
if(reenter == true)
if(reenter_cnt < reenter_delay)
reenter_cnt := reenter_cnt + 1
else
if(reenter_cnt > 0)
reenter_cnt := reenter_cnt - 1
if(sculp == true)
if(sculp_cnt < sculp_delay)
sculp_cnt := sculp_cnt + 1
else
if(sculp_cnt > 0)
sculp_cnt := sculp_cnt - 1
if(slowdown == false)
if(close_cnt < 2)
close_cnt := close_cnt + 1
else
close_cnt := 0
// plotchar(fork_cnt, "fork count", "")
// plotchar(spoon_cnt, "spoon count", "")
// Entry
if (cross_up == true)
strategy.entry("long", strategy.long, comment = "long", alert_message = "long")
on_long := true
on_short := false
if (cross_down == true)
strategy.entry("short", strategy.short, comment = "short", alert_message = "short")
on_short := true
on_long := false
// Sculp bottom / top
if (sculp == true and sculp_cnt >= sculp_delay)
if (hist >= 0)
strategy.entry("sculp-short", strategy.short, comment = "sculp-short", alert_message = "sculp-short")
else
strategy.entry("sculp-long", strategy.long, comment = "sculp-long", alert_message = "sculp-long")
sculp_cnt := 0
sculp := false
// Re-Entry
if (reenter == true and reenter_cnt >= reenter_delay)
if (hist >= 0)
strategy.entry("re-long", strategy.long, comment = "re-long", alert_message = "re-long")
else
strategy.entry("re-short", strategy.short, comment = "re-short", alert_message = "re-short")
reenter_cnt := 0
reenter := false
// Close
strategy.close("long", when = slowdown, comment = "close long", alert_message = "close long")
strategy.close("short", when = slowdown, comment = "close short", alert_message = "close short")
strategy.close("re-long", when = slowdown, comment = "close re-long", alert_message = "close re-long")
strategy.close("re-short", when = slowdown, comment = "close re-short", alert_message = "close re-short")
strategy.close("sculp-long", when = slowdown, comment = "close sculp-long", alert_message = "close sculp-long")
strategy.close("sculp-short", when = slowdown, comment = "close sculp-short", alert_message = "close sculp-short")
if (slowdown)
if (hist >= 0)
on_long := false
else
on_short := false
plotchar(slowdown, "close", "")
plotchar(reenter, "reenter", "")
plotchar(reenter_cnt, "reenter count", "")
plotchar(sculp, "sculp", "")
plotchar(sculp_cnt, "sculp count", "")