بلش نگلنگ خرید و فروخت کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-27 14:25:11
ٹیگز:

img

جائزہ

بلش اینگلفنگ خرید و فروخت کی حکمت عملی شمعدان کے نمونوں پر مبنی ایک مقداری تجارتی حکمت عملی ہے۔ یہ بلش اینگلفنگ شمعدان کے نمونہ کی نشاندہی کرکے قیمتوں میں ردوبدل سے فائدہ اٹھانے کے مواقع حاصل کرتی ہے۔ اس حکمت عملی کے اہم فوائد یہ ہیں:

  1. یہ اعلی امکان قیمت الٹ کے مواقع کی نشاندہی کرنے کے لئے پختہ تکنیکی تجزیہ نظریات پر مبنی ہے.
  2. اس میں سادہ اور بدیہی تجارتی سگنل ہیں۔
  3. خطرات پر قابو پایا جا سکتا ہے۔

حکمت عملی منطق

یہ حکمت عملی بُلِش اینگولفنگ شمعدان کے نمونہ کی بنیاد پر قیمتوں میں تبدیلیوں کی نشاندہی کرتی ہے۔

جب ایک اسٹاک ڈاؤن ٹرینڈ میں ہوتا ہے ، اگر ایک شمعدان جس میں ایک چھوٹا سا حقیقی جسم ہوتا ہے اس کے بعد ایک شمعدان ہوتا ہے جس کا حقیقی جسم پچھلے حقیقی جسم کو مکمل طور پر نگل جاتا ہے ، اور اختتامی قیمت پچھلی اعلی قیمت سے زیادہ ہوتی ہے ، تو یہ ایک بولش نگلنگ پیٹرن تشکیل دیتا ہے ، جس سے رجحان کی فوری تبدیلی کی نشاندہی ہوتی ہے ، جہاں قیمت بڑھنا شروع ہوجائے گی۔

یہ حکمت عملی ایک طویل پوزیشن کھولے گی جب ایک بلش نگلنگ پیٹرن کی نشاندہی کی جائے گی، جس میں منافع کا ہدف 1 فیصد اور 1 فیصد کا سٹاپ نقصان ہوگا، تاکہ منافع میں مقفل کیا جاسکے۔

فوائد کا تجزیہ

اس حکمت عملی کے فوائد یہ ہیں:

  1. یہ پختہ تکنیکی تجزیہ کے نظریات پر مبنی ہے۔ بولش اینگلفنگ پیٹرن ایک اعلی امکان قیمت کی تبدیلی کی نشاندہی کرتا ہے۔
  2. ٹریڈنگ سگنل سادہ اور بدیہی ہیں، کوالٹی ٹریڈنگ کے لئے سمجھنے اور خودکار کرنے میں آسان ہیں.
  3. انڈیکس فیوچر جیسے اعلی لیکویڈیٹی مصنوعات کی تجارت سے موثر اندراج اور باہر نکلنے کی اجازت ملتی ہے۔
  4. منافع کا ہدف اور اسٹاپ نقصان کے باہر نکلنے سے ہر تجارت کے خطرے / انعام کے تناسب کو مؤثر طریقے سے کنٹرول کیا جاتا ہے ، منافع بخش کو یقینی بنایا جاتا ہے اور بڑے نقصانات سے بچایا جاتا ہے۔
  5. لچکدار پیرامیٹر ایڈجسٹمنٹ مختلف مصنوعات اور مارکیٹ کے ماحول کے مطابق ہے.

خطرے کا تجزیہ

اس حکمت عملی کے کچھ خطرات ہیں:

  1. غلط سگنل کے خطرات موجود ہیں کیونکہ یہ تکنیکی تجزیہ نظریات پر مبنی ہے۔
  2. مارکیٹ کے نظام میں تبدیلیاں ان پیرامیٹرز کو غیر قانونی بنا سکتی ہیں جن کو ایڈجسٹ کرنے کی ضرورت ہے۔
  3. سٹاپ نقصان کی قدریں جو بہت تنگ ہیں ان کے نتیجے میں قبل از وقت باہر نکلنے کا سبب بن سکتی ہیں، جبکہ بہت وسیع اقدار بڑے نقصانات پیدا کر سکتی ہیں۔

ان خطرات سے نمٹنے کے لیے ہم:

  1. پیرامیٹرز کو بہتر بنائیں اور مارکیٹ کے حالات میں کارکردگی کی تصدیق کریں۔
  2. قابل قبول سطحوں پر واحد تجارت کے نقصان کو کنٹرول کرنے کے لئے سٹاپ نقصان کی سطح کو بڑھانا.
  3. انڈیکس اور فیوچر ای ٹی ایف جیسے مناسب اتار چڑھاؤ کے ساتھ اعلی لیکویڈیٹی والے مصنوعات کی تجارت کریں۔

اصلاح کی ہدایات

اس حکمت عملی کو مندرجہ ذیل طریقوں سے بھی تقویت دی جاسکتی ہے:

  1. رجحانات کے خلاف ٹریڈنگ سے بچنے کے لئے چلتی اوسط جیسے فلٹرز شامل کرنا.
  2. منافع کی صلاحیت کو بڑھانے کے لیے منافع کا ہدف بڑھانا۔
  3. سٹاپ نقصان کے میکانزم کو بہتر بنانا، جیسے ٹرائلنگ اسٹاپس کو روکنے کے امکانات کو کم کرنا۔
  4. ایک تجارتی نظام بنانے کے لئے بُلش اینگلفنگ جیسے دیگر موم بتیوں کے نمونوں کے مجموعے کا استعمال کرنا۔

نتیجہ

بولش اینگلفنگ خرید و فروخت کی حکمت عملی تکنیکی تجزیہ پر مبنی ایک پختہ مقداری تجارتی حکمت عملی ہے ، جس میں آسان اور واضح تجارتی سگنل کے فوائد ہیں جو لاگو کرنا آسان ہے۔ بہتر پیرامیٹرز اور اچھے رسک کنٹرول اقدامات کے ساتھ ، یہ مستحکم منافع پیدا کرسکتا ہے اور اس کی انتہائی سفارش کی جاتی ہے۔


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 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/
// © thequantscience

// ██████╗ ██╗   ██╗██╗     ██╗     ██╗███████╗██╗  ██╗    ███████╗███╗   ██╗ ██████╗ ██╗   ██╗██╗     ███████╗██╗███╗   ██╗ ██████╗ 
// ██╔══██╗██║   ██║██║     ██║     ██║██╔════╝██║  ██║    ██╔════╝████╗  ██║██╔════╝ ██║   ██║██║     ██╔════╝██║████╗  ██║██╔════╝ 
// ██████╔╝██║   ██║██║     ██║     ██║███████╗███████║    █████╗  ██╔██╗ ██║██║  ███╗██║   ██║██║     █████╗  ██║██╔██╗ ██║██║  ███╗
// ██╔══██╗██║   ██║██║     ██║     ██║╚════██║██╔══██║    ██╔══╝  ██║╚██╗██║██║   ██║██║   ██║██║     ██╔══╝  ██║██║╚██╗██║██║   ██║
// ██████╔╝╚██████╔╝███████╗███████╗██║███████║██║  ██║    ███████╗██║ ╚████║╚██████╔╝╚██████╔╝███████╗██║     ██║██║ ╚████║╚██████╔╝
// ╚═════╝  ╚═════╝ ╚══════╝╚══════╝╚═╝╚══════╝╚═╝  ╚═╝    ╚══════╝╚═╝  ╚═══╝ ╚═════╝  ╚═════╝ ╚══════╝╚═╝     ╚═╝╚═╝  ╚═══╝ ╚═════╝ 
                                                                                                                                  
//@version=5
strategy(
     "Buy&Sell Bullish Engulfing - The Quant Science",
     overlay = true,
     default_qty_type = strategy.percent_of_equity, 
     default_qty_value = 100,
     pyramiding = 1,
     currency = currency.EUR,
     initial_capital = 10000,
     commission_type = strategy.commission.percent,
     commission_value = 0.07,
     process_orders_on_close = true, 
     close_entries_rule = "ANY"
     )

startDate  = input.int(title="D: ", defval=1,    minval=1,    maxval=31,   inline = 'Start', group = "START DATE BACKTESTING", tooltip = "D is Day, M is Month, Y is Year.")
startMonth = input.int(title="M: ", defval=1,    minval=1,    maxval=12,   inline = 'Start', group = "START DATE BACKTESTING", tooltip = "D is Day, M is Month, Y is Year.")
startYear  = input.int(title="Y: ", defval=2022, minval=1800, maxval=2100, inline = 'Start', group = "START DATE BACKTESTING", tooltip = "D is Day, M is Month, Y is Year.")

endDate    = input.int(title="D: ", defval=31,   minval=1,    maxval=31,   inline = 'End',   group = "END DATE BACKTESTING", tooltip = "D is Day, M is Month, Y is Year.")
endMonth   = input.int(title="M: ", defval=12,   minval=1,    maxval=12,   inline = 'End',   group = "END DATE BACKTESTING", tooltip = "D is Day, M is Month, Y is Year.")
endYear    = input.int(title="Y: ", defval=2023, minval=1800, maxval=2100, inline = 'End',   group = "END DATE BACKTESTING", tooltip = "D is Day, M is Month, Y is Year.")

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0)) and (time < timestamp(syminfo.timezone, endYear, endMonth, endDate, 0, 0))

PROFIT   = input.float(defval = 1, minval = 0, title = "Target profit (%): ", step = 0.10, group = "TAKE PROFIT-STOP LOSS")
STOPLOSS = input.float(defval = 1, minval = 0, title = "Stop Loss (%): ",     step = 0.10, group = "TAKE PROFIT-STOP LOSS")

var float equity_trades = 0
strategy.initial_capital = 50000
equity_trades := strategy.initial_capital
var float equity   = 0
var float qty_order   = 0
t_ordersize = "Percentage size of each new order. With 'Reinvestment Profit' activate, the size will be calculate on the equity, with 'Reinvestment Profit' deactivate the size will be calculate on the initial capital."
orders_size = input.float(defval = 2, title = "Orders size (%): ", minval = 0.10, step = 0.10,  maxval = 100, group = "RISK MANAGEMENT", tooltip = t_ordersize)
qty_order := ((equity_trades * orders_size) / 100 ) / close 

C_DownTrend = true
C_UpTrend   = true
var trendRule1 = "SMA50"
var trendRule2 = "SMA50, SMA200"
var trendRule = input.string(trendRule1, "Detect Trend Based On", options=[trendRule1, trendRule2, "No detection"], group = "BULLISH ENGULFING")

if trendRule == trendRule1
	priceAvg = ta.sma(close, 50)
	C_DownTrend := close < priceAvg
	C_UpTrend := close > priceAvg

if trendRule == trendRule2
	sma200 = ta.sma(close, 200)
	sma50  = ta.sma(close, 50)
	C_DownTrend := close < sma50 and sma50 < sma200
	C_UpTrend := close > sma50 and sma50 > sma200
C_Len = 14
C_ShadowPercent = 5.0 
C_ShadowEqualsPercent = 100.0
C_DojiBodyPercent = 5.0
C_Factor = 2.0 

C_BodyHi = math.max(close, open)
C_BodyLo = math.min(close, open)
C_Body = C_BodyHi - C_BodyLo
C_BodyAvg = ta.ema(C_Body, C_Len)
C_SmallBody = C_Body < C_BodyAvg
C_LongBody = C_Body > C_BodyAvg
C_UpShadow = high - C_BodyHi
C_DnShadow = C_BodyLo - low
C_HasUpShadow = C_UpShadow > C_ShadowPercent / 100 * C_Body
C_HasDnShadow = C_DnShadow > C_ShadowPercent / 100 * C_Body
C_WhiteBody = open < close
C_BlackBody = open > close
C_Range = high-low
C_IsInsideBar = C_BodyHi[1] > C_BodyHi and C_BodyLo[1] < C_BodyLo
C_BodyMiddle = C_Body / 2 + C_BodyLo
C_ShadowEquals = C_UpShadow == C_DnShadow or (math.abs(C_UpShadow - C_DnShadow) / C_DnShadow * 100) < C_ShadowEqualsPercent and (math.abs(C_DnShadow - C_UpShadow) / C_UpShadow * 100) < C_ShadowEqualsPercent
C_IsDojiBody = C_Range > 0 and C_Body <= C_Range * C_DojiBodyPercent / 100
C_Doji = C_IsDojiBody and C_ShadowEquals

patternLabelPosLow  = low  - (ta.atr(30) * 0.6)
patternLabelPosHigh = high + (ta.atr(30) * 0.6)

label_color_bullish = input.color(color.rgb(43, 255, 0), title = "Label Color Bullish", group = "BULLISH ENGULFING")
C_EngulfingBullishNumberOfCandles = 2
C_EngulfingBullish = C_DownTrend and C_WhiteBody and C_LongBody and C_BlackBody[1] and C_SmallBody[1] and close >= open[1] and open <= close[1] and ( close > open[1] or open < close[1] )
if C_EngulfingBullish
    var ttBullishEngulfing = "Engulfing\nAt the end of a given downward trend, there will most likely be a reversal pattern. To distinguish the first day, this candlestick pattern uses a small body, followed by a day where the candle body fully overtakes the body from the day before, and closes in the trend’s opposite direction. Although similar to the outside reversal chart pattern, it is not essential for this pattern to completely overtake the range (high to low), rather only the open and the close."
    label.new(bar_index, patternLabelPosLow, text="BE", style=label.style_label_up, color = label_color_bullish, textcolor=color.white, tooltip = ttBullishEngulfing)
bgcolor(ta.highest(C_EngulfingBullish?1:0, C_EngulfingBullishNumberOfCandles)!=0 ? color.new(#21f321, 90) : na, offset=-(C_EngulfingBullishNumberOfCandles-1))

var float c       = 0
var float o       = 0
var float c_exit  = 0
var float c_stopl = 0

if C_EngulfingBullish and strategy.opentrades==0 and inDateRange 
    c := strategy.equity
    o := close
    c_exit  := c + (c * PROFIT / 100)
    c_stopl := c - (c * STOPLOSS / 100)
    strategy.entry(id = "LONG", direction = strategy.long, qty = qty_order, limit = o)

if ta.crossover(strategy.equity, c_exit)
    strategy.exit(id = "CLOSE-LONG", from_entry = "LONG", limit = close)
if ta.crossunder(strategy.equity, c_stopl)
    strategy.exit(id = "CLOSE-LONG", from_entry = "LONG", limit = close)


مزید