یہ موم بتی کے نمونوں پر مبنی ایک خودکار تجارتی حکمت عملی ہے۔ یہ حکمت عملی موم بتی کے مختلف نمونوں کے اشاروں کی نشاندہی کرتی ہے اور جب نمونہ کی شرائط پوری ہوجاتی ہیں تو پوزیشنوں میں داخل ہوتی ہے ، جس میں خطرہ کو کنٹرول کرنے کے لئے اسٹاپ نقصان ، منافع اور ٹریلنگ اسٹاپ تشکیل دی جاتی ہے۔
حکمت عملی بنیادی طور پر درج ذیل موم بتیوں کے نمونوں کو انٹری سگنل کے طور پر شناخت کرتی ہے: نگلنے والا نمونہ ، حرامی نمونہ ، سوراخ کرنے والی لائن / سیاہ بادل کا احاطہ ، صبح کا ستارہ / شام کا ستارہ ، بیلٹ ہولڈ پیٹرن ، تین سفید فوجی / تین سیاہ کلاں پیٹرن ، جنوب کے پیٹرن میں تین ستارے وغیرہ۔ جب بولش سگنل کا پتہ چلتا ہے تو یہ طویل ہوجاتا ہے ، اور جب bearish سگنل کا پتہ چلتا ہے تو مختصر ہوجاتا ہے۔
اس کے علاوہ ، اسٹاپ نقصان ، منافع حاصل کریں اور ٹریلنگ اسٹاپ کو رسک کنٹرول کے لئے تشکیل دیا گیا ہے۔ خاص طور پر ، اسٹاپ نقصان کو انٹری قیمت سے کچھ فیصد نیچے ، انٹری قیمت سے کچھ پپس اوپر منافع حاصل کرنے کے اہداف اور انٹری سے کچھ متحرک سطح پر ٹریلنگ اسٹاپ ٹریلز پر مقرر کیا گیا ہے۔ اس سے مؤثر طریقے سے قابل قبول رقم سے زیادہ نقصانات سے بچتا ہے۔
یہ نوٹ کرنے کے قابل ہے کہ تمام پوزیشنیں حکمت عملی میں طے شدہ تجارتی سیشن کے باہر بند کردی جاتی ہیں، راتوں رات کے خطرات کو ختم کرتی ہیں.
اس حکمت عملی کا سب سے بڑا فائدہ اندراجات کا تعین کرنے کے لئے موم بتی کے نمونوں ، ایک موثر تکنیکی اشارے کا استعمال کرنا ہے۔ وسیع تاریخی اعداد و شمار سے پتہ چلتا ہے کہ موم بتی کی مخصوص تشکیلات اکثر طلب / فراہمی کی حرکیات اور مارکیٹ نفسیات میں تبدیلیوں کی نشاندہی کرتی ہیں ، اس طرح اندراجات کے لئے اچھا وقت فراہم کرتی ہے۔
ایک اور فائدہ یہ ہے کہ خطرے پر قابو پانے کے جامع میکانزم موجود ہیں۔ اسٹاپ نقصان ، منافع لینے اور ٹریلنگ اسٹاپ قابل قبول حد سے زیادہ نقصانات کو کم سے کم کرسکتے ہیں۔
آخر میں، یہ حکمت عملی مختلف آلات اور تجارتی ترجیحات کے مطابق پیٹرن پیرامیٹرز اور رسک کنٹرول پیرامیٹرز کو ایڈجسٹ کرکے چلانے کے لئے لچکدار ہے۔
اس حکمت عملی کا سب سے بڑا خطرہ موم بتی کے نمونوں کی خود تکنیکی اشارے کی حیثیت سے انوکھے عدم استحکام سے پیدا ہوتا ہے۔ اگرچہ موم بتی کے نمونوں میں مارکیٹ کے رجحان کی تبدیلیوں کی واضح عکاسی ہوسکتی ہے ، لیکن وہ مارکیٹ کے بے ترتیب اتار چڑھاؤ کے لئے بھی حساس ہیں ، جس سے ممکنہ طور پر غلط سگنل پیدا ہوتے ہیں۔
مزید برآں ، موم بتیوں کی تشکیل اور اس کے بعد کی قیمتوں کے اقدامات کے مابین کوئی وجہ تعلقات نہیں ہیں۔ قیمتیں متوقع نمونوں کے نتائج کے خلاف جاسکتی ہیں یہاں تک کہ جب عام نمونوں کا پتہ چلتا ہے۔
مذکورہ بالا خطرات کو کم کرنے کے لئے ، اسٹاپ نقصان ، منافع لینے اور ٹریلنگ اسٹاپ کے قواعد پر سختی سے عمل کرنا ضروری ہے۔ موم بتی کے نمونوں کو دوسرے زیادہ مستحکم اشارے کے ساتھ جوڑنا بھی تکنیکی نمونوں پر انحصار کرنے سے پیدا ہونے والے ممکنہ خطرات سے بچنے میں مدد کرسکتا ہے۔
موم بتیوں کے نمونوں کی حدود کو دیکھتے ہوئے ، ان کو بولنگر بینڈ ، رجحان کے لئے چلنے والے اوسط ، یا آسکیلیٹرز جیسے آر ایس آئی اور ایم اے سی ڈی جیسے زیادہ مضبوط اشارے کے ساتھ جوڑنا انٹری ٹائمنگ اور سگنل کے معیار کو بہتر بنانا قابل قدر ہوسکتا ہے۔
ایک اور متوقع اصلاح کی سمت نمونوں اور اصل قیمت کی نقل و حرکت کے مابین شماریاتی تعلقات کو ظاہر کرنے کے لئے بڑے تاریخی اعداد و شمار پر تربیت یافتہ مشین لرننگ ماڈلز کا استعمال کرنا ہے ، جس سے نمونہ سگنل کی درستگی میں اضافہ ہوتا ہے۔
آخر میں ، یہ حکمت عملی اعلی تعدد کی تجارت کے لئے زیادہ نفیس الگورتھم کے ساتھ اپ گریڈ کرنے کے لئے ایک فریم ورک کے طور پر کام کرسکتی ہے ، مثال کے طور پر زیادہ نازک اسٹاپ نقصان کے طریقے ، جدید زبانوں کے ذریعہ زیادہ ڈیٹا انٹرفیس کے ساتھ پیچیدہ ماڈلنگ۔
اختتام کے طور پر ، یہ ایک ایسی حکمت عملی ہے جس کی جانچ پڑتال کرنے کے قابل ہے ، جس میں سگنل اندراجات کے لئے موثر موم بتی کے نمونوں کا استعمال کیا جاتا ہے ، جس میں جامع اسٹاپ نقصان / منافع / ٹریلنگ اسٹاپ منطق کو کنٹرول کرنے والے خطرات ہیں۔ کوڈنگ اینگل اس فریم ورک کی بنیاد پر بہتر نتائج پیدا کرنے کے لئے اصلاحات کی حوصلہ افزائی کرتا ہے۔
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //DanyChe //The script allows you to test popular candlestick patterns on various instruments and timeframes. In addition, you can configure risk management (if the value is zero, it means the function is disabled), and you can also specify the time of the trading session (for example, so that the positions are not transferred to the next day). //The author is grateful to JayRogers and Phi35, their code examples helped a lot in writing the strategy. strategy("Candle Patterns Strategy", shorttitle="CPS", overlay=true) //--- Patterns Input --- OnEngulfing = input(defval=true, title="Engulfing") OnHarami = input(defval=true, title="Harami") OnPiercingLine = input(defval=true, title="Piercing Line / Dark Cloud Cover") OnMorningStar = input(defval=true, title="Morning Star / Evening Star ") OnBeltHold = input(defval=true, title="Belt Hold") OnThreeWhiteSoldiers = input(defval=true, title="Three White Soldiers / Three Black Crows") OnThreeStarsInTheSouth = input(defval=true, title="Three Stars in the South") OnStickSandwich = input(defval=true, title="Stick Sandwich") OnMeetingLine = input(defval=true, title="Meeting Line") OnKicking = input(defval=true, title="Kicking") OnLadderBottom = input(defval=true, title="Ladder Bottom") //--- Risk Management Input --- inpsl = input(defval = 100, title="Stop Loss", minval = 0) inptp = input(defval = 1000, title="Take Profit", minval = 0) inptrail = input(defval = 40, title="Trailing Stop", minval = 0) // If the zero value is set for stop loss, take profit or trailing stop, then the function is disabled sl = inpsl >= 1 ? inpsl : na tp = inptp >= 1 ? inptp : na trail = inptrail >= 1 ? inptrail : na //--- Session Input --- sess = input(defval = "0000-0000", title="Trading session") t = time('240', sess) session_open = na(t) ? false : true // --- Candlestick Patterns --- //Engulfing bullish_engulfing = high[0]>high[1] and low[0]<low[1] and open[0]<open[1] and close[0]>close[1] and close[0]>open[0] and close[1]<close[2] and close[0]>open[1] ? OnEngulfing : na bearish_engulfing = high[0]>high[1] and low[0]<low[1] and open[0]>open[1] and close[0]<close[1] and close[0]<open[0] and close[1]>close[2] and close[0]<open[1] ? OnEngulfing : na //Harami bullish_harami = open[1]>close[1] and close[1]<close[2] and open[0]>close[1] and open[0]<open[1] and close[0]>close[1] and close[0]<open[1] and high[0]<high[1] and low[0]>low[1] and close[0]>=open[0] ? OnHarami : na bearish_harami = open[1]<close[1] and close[1]>close[2] and open[0]<close[1] and open[0]>open[1] and close[0]<close[1] and close[0]>open[1] and high[0]<high[1] and low[0]>low[1] and close[0]<=open[0] ? OnHarami : na //Piercing Line/Dark Cloud Cover piercing_line = close[2]>close[1] and open[0]<low[1] and close[0]>avg(open[1],close[1]) and close[0]<open[1] ? OnPiercingLine : na dark_cloud_cover = close[2]<close[1] and open[0]>high[1] and close[0]<avg(open[1],close[1]) and close[0]>open[1] ? OnPiercingLine : na //Morning Star/Evening Star morning_star = close[3]>close[2] and close[2]<open[2] and open[1]<close[2] and close[1]<close[2] and open[0]>open[1] and open[0]>close[1] and close[0]>close[2] and open[2]-close[2]>close[0]-open[0] ? OnMorningStar : na evening_star = close[3]<close[2] and close[2]>open[2] and open[1]>close[2] and close[1]>close[2] and open[0]<open[1] and open[0]<close[1] and close[0]<close[2] and close[2]-open[2]>open[0]-close[0] ? OnMorningStar : na //Belt Hold bullish_belt_hold = close[1]<open[1] and low[1]>open[0] and close[1]>open[0] and open[0]==low[0] and close[0]>avg(close[0],open[0]) ? OnBeltHold :na bearish_belt_hold = close[1]>open[1] and high[1]<open[0] and close[1]<open[0] and open[0]==high[0] and close[0]<avg(close[0],open[0]) ? OnBeltHold :na //Three White Soldiers/Three Black Crows three_white_soldiers = close[3]<open[3] and open[2]<close[3] and close[2]>avg(close[2],open[2]) and open[1]>open[2] and open[1]<close[2] and close[1]>avg(close[1],open[1]) and open[0]>open[1] and open[0]<close[1] and close[0]>avg(close[0],open[0]) and high[1]>high[2] and high[0]>high[1] ? OnThreeWhiteSoldiers : na three_black_crows = close[3]>open[3] and open[2]>close[3] and close[2]<avg(close[2],open[2]) and open[1]<open[2] and open[1]>close[2] and close[1]<avg(close[1],open[1]) and open[0]<open[1] and open[0]>close[1] and close[0]<avg(close[0],open[0]) and low[1]<low[2] and low[0]<low[1] ? OnThreeWhiteSoldiers : na //Three Stars in the South three_stars_in_the_south = open[3]>close[3] and open[2]>close[2] and open[2]==high[2] and open[1]>close[1] and open[1]<open[2] and open[1]>close[2] and low[1]>low[2] and open[1]==high[1] and open[0]>close[0] and open[0]<open[1] and open[0]>close[1] and open[0]==high[0] and close[0]==low[0] and close[0]>=low[1] ? OnThreeStarsInTheSouth : na //Stick Sandwich stick_sandwich = open[2]>close[2] and open[1]>close[2] and open[1]<close[1] and open[0]>close[1] and open[0]>close[0] and close[0]==close[2] ? OnStickSandwich : na //Meeting Line bullish_ml = open[2]>close[2] and open[1]>close[1] and close[1]==close[0] and open[0]<close[0] and open[1]>=high[0] ? OnMeetingLine : na bearish_ml = open[2]<close[2] and open[1]<close[1] and close[1]==close[0] and open[0]>close[0] and open[1]<=low[0] ? OnMeetingLine : na //Kicking bullish_kicking = open[1]>close[1] and open[1]==high[1] and close[1]==low[1] and open[0]>open[1] and open[0]==low[0] and close[0]==high[0] and close[0]-open[0]>open[1]-close[1] ? OnKicking : na bearish_kicking = open[1]<close[1] and open[1]==low[1] and close[1]==high[1] and open[0]<open[1] and open[0]==high[0] and close[0]==low[0] and open[0]-close[0]>close[1]-open[1] ? OnKicking : na //Ladder Bottom ladder_bottom = open[4]>close[4] and open[3]>close[3] and open[3]<open[4] and open[2]>close[2] and open[2]<open[3] and open[1]>close[1] and open[1]<open[2] and open[0]<close[0] and open[0]>open[1] and low[4]>low[3] and low[3]>low[2] and low[2]>low[1] ? OnLadderBottom : na // ---Plotting --- plotshape(bullish_engulfing, text='Engulfing', style=shape.triangleup, color=#1FADA2, editable=true, title="Bullish Engulfing Text") plotshape(bearish_engulfing,text='Engulfing', style=shape.triangledown, color=#F35A54, editable=true, title="Bearish Engulfing Text") plotshape(bullish_harami,text='Harami', style=shape.triangleup, color=#1FADA2, editable=true, title="Bullish Harami Text") plotshape(bearish_harami,text='Harami', style=shape.triangledown, color=#F35A54, editable=true, title="BEarish Harami Text") plotshape(piercing_line,text='Piercing Line', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(dark_cloud_cover,text='Dark Cloud Cover', style=shape.triangledown, color=#F35A54, editable=false) plotshape(morning_star,text='Morning Star', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(evening_star,text='Evening Star', style=shape.triangledown, color=#F35A54, editable=false) plotshape(bullish_belt_hold,text='Belt Hold', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(bearish_belt_hold,text='Belt Hold', style=shape.triangledown, color=#F35A54, editable=false) plotshape(three_white_soldiers,text='Three White Soldiers', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(three_black_crows,text='Three Black Crows', style=shape.triangledown, color=#F35A54, editable=false) plotshape(three_stars_in_the_south,text='3 Stars South', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(stick_sandwich,text='Stick Sandwich', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(bullish_ml,text='Meeting Line', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(bearish_ml,text='Meeting Line', style=shape.triangledown, color=#F35A54, editable=false) plotshape(bullish_kicking,text='Kicking', style=shape.triangleup, color=#1FADA2, editable=false) plotshape(bearish_kicking,text='Kicking', style=shape.triangledown, color=#F35A54, editable=false) plotshape(ladder_bottom,text='Ladder Bottom', style=shape.triangleup, color=#1FADA2, editable=false) // --- STRATEGY --- SignalUp = bullish_engulfing or bullish_harami or piercing_line or morning_star or bullish_belt_hold or three_white_soldiers or three_stars_in_the_south or stick_sandwich or bullish_ml or bullish_kicking or ladder_bottom SignalDown = bearish_engulfing or bearish_harami or dark_cloud_cover or evening_star or bearish_belt_hold or three_black_crows or bearish_ml or bearish_kicking strategy.entry("long", true, when = SignalUp and session_open) strategy.entry("short", false, when = SignalDown and session_open) strategy.close("long", when = not session_open) strategy.close("short", when = not session_open) strategy.exit("Risk Exit long", from_entry = "long", profit = tp, trail_points = trail, loss = sl) strategy.exit("Risk Exit short", from_entry = "short", profit = tp, trail_points = trail, loss = sl )