پیٹرن کی شناخت پین بار ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-09-18 14:14:51
ٹیگز:

جائزہ

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

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

اس بات کی نشاندہی کریں کہ آیا موجودہ موم بتی پنبار کی ضروریات کو پورا کرتی ہے - جسم نیچے نصف میں ، قریب اور قریب قریب کھلے۔ لانگ سگنل اس کے برعکس ہے - جسم اوپری نصف میں ، قریب / قریب قریب کھلے۔ آخری سگنل موم بتی تلاش کریں اور اس کے جسم کی اونچائی کا حساب لگائیں۔ منافع حاصل کریں N گنا اونچائی ، اور اسٹاپ نقصان کو M گنا اونچائی (M < N) پر سیٹ کریں۔

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

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

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

خطرے کا تجزیہ

  • پیٹرن کی شناخت کی درستگی کبھی بھی 100٪ نہیں ہے
  • شور کی وجہ سے چھوٹے سٹاپ نقصان کا خطرہ
  • منافع حاصل کرنے کی ضرورت ہے اگر پیچھے رہ جائے تو بروقت ایڈجسٹمنٹ

خطرات کو پیرامیٹرز کی اصلاح، اشارے وغیرہ شامل کرنے کے ذریعے کم کیا جاسکتا ہے۔

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

  • منافع لینے اور سٹاپ نقصان کی مختلف ترتیبات کی جانچ کریں
  • غلط سگنل فلٹر کرنے کے لئے اشارے شامل کریں
  • پیٹرن کی شناخت کی منطق کو بہتر بنائیں
  • مصنوعات کے درمیان ٹیسٹ کی مضبوطی

نتیجہ

یہ حکمت عملی اچھے بیک ٹیسٹ کے نتائج کے ساتھ پیٹرن کی شناخت کے ذریعے مواقع کی نشاندہی کرتی ہے۔ معقول رکاوٹیں تجارتی خطرہ کو کنٹرول کرتی ہیں۔ پیرامیٹر کی اصلاح جیسے مزید اصلاحات اسے ایک آسان اور عملی نظام بناسکتی ہیں۔


/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// 
// Pinbar strategy script by samgozman (https://github.com/samgozman)
// 
// Detailed instruction how to use this script: https://github.com/samgozman/pinbar-strategy-tradingview
//
// If you liked the script and want to support me: https://paypal.me/sgozman
// 
// ++++++++++ Warning: The script is provided for educational purposes only. ++++++++++ //

strategy('Pinbar strategy', default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=10000)

profitMultiplier = input.float(2.0, "Profit multiplier", minval=0.1, step=0.1, group="Profit options", tooltip="X times signal candle size from high")
lossMultiplier =  input.float(1.0, "Loss multiplier", minval=0.1, step=0.1, group="Profit options", tooltip="X times signal candle size from low")

isTrailingStop = input.bool(true, "Use trailing stops?", group="Trading options", tooltip="Highly recommended!")
isCloseOnOppositSignal = input.bool(false, "Close trade if opposit signal occures?", group="Trading options", tooltip="Close long on short signal")
isLongEligible = input.bool(true, "Enter long trades?", group="Trading options")
isShortEligible = input.bool(true, "Enter short trades?", group="Trading options")

useDateFilter = input.bool(true, title="Begin Backtest at Start Date", group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2021"), title="Start Date", group="Backtest Time Period")

// Predefined time trading zone for back testing
inTradeWindow = true

// HELPER FUNCTIONS //

// calculate candle size for N bars back. Use 0 for current
calcCandle(int periods) =>
    math.abs(high[periods] - low[periods])

// if body is below 50% and close/open below 30%
isBearishPinbar(float candle) =>
    lower30 = low + candle * 0.30
    bottomHalf1 = close < hl2
    bottomHalf2 = open < hl2
    lowerRegion1 = close < lower30
    lowerRegion2 = open < lower30
    
    con1 = bottomHalf1 and bottomHalf2
    con2 = lowerRegion1 and lowerRegion2
    con3 = high > high[1]
    
    con1 and con2 and con3

// if body is above 50% and close/open above 30%  
isBullishPinbar(float candle) =>
    upper30 = high - candle * 0.30
    topHalf1 = close > hl2
    topHalf2 = open > hl2
    upperRegion1 = close > upper30
    upperRegion2 = open > upper30
    
    con1 = topHalf1 and topHalf2
    con2 = upperRegion1 and upperRegion2
    con3 = low < low[1]
    
    con1 and con2 and con3
    
barsSinceLastEntry() =>
    strategy.opentrades > 0 ? bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) : na

// Calculate trading signals
currentCandle = calcCandle(0)
longSignal = isBullishPinbar(currentCandle) and inTradeWindow
shortSignal = isBearishPinbar(currentCandle) and inTradeWindow

// ENTER THE TRADE //
if longSignal and isLongEligible
    strategy.entry("buy", strategy.long, when = strategy.position_size == 0)

if shortSignal and isShortEligible 
    strategy.entry("sell", strategy.short, when = strategy.position_size == 0)

// CALCULATE STOPS //
barsSinceEntry = barsSinceLastEntry()
candleFromEntry = calcCandle(barsSinceEntry)
// long
long_take_limit = strategy.position_avg_price + (candleFromEntry*profitMultiplier)
long_target_percent_profit = long_take_limit / strategy.position_avg_price - 1
long_target_percent_loss = (long_target_percent_profit / profitMultiplier) * lossMultiplier
long_stop_limit = low[barsSinceEntry] * (1 - long_target_percent_loss)
//short
short_take_limit = strategy.position_avg_price - (candleFromEntry*profitMultiplier)
short_target_percent_profit = strategy.position_avg_price / short_take_limit - 1
short_target_percent_loss = (short_target_percent_profit / profitMultiplier) * lossMultiplier
short_stop_limit = high[barsSinceEntry] * (1 + short_target_percent_loss)

// EXIT THE TRADE //
if strategy.position_size > 0 or strategy.position_size < 0
    if isTrailingStop
        strategy.exit(id="exit", from_entry="buy", trail_price = long_take_limit, stop=long_stop_limit)
        strategy.exit(id="exit", from_entry="sell", trail_price = short_take_limit, stop=short_stop_limit)
    else
        strategy.exit(id="exit", from_entry="buy", limit = long_take_limit, stop=long_stop_limit)
        strategy.exit(id="exit", from_entry="sell", limit = short_take_limit, stop=short_stop_limit)
    if isCloseOnOppositSignal
        strategy.close("buy", when = shortSignal)
        strategy.close("sell", when = longSignal)

// PLOT SIGNALS //
plotshape(longSignal, style=shape.arrowup, color=color.new(color.green, 0), size=size.large, location=location.belowbar)
plotshape(shortSignal, style=shape.arrowdown, color=color.new(color.red, 0), size=size.large, location=location.abovebar)

مزید