حجم توڑ اور ٹریلنگ سٹاپ نقصان کے ساتھ سپورٹ اور مزاحمت کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-11 17:58:26
ٹیگز:

img

جائزہ

اس حکمت عملی کا بنیادی خیال یہ ہے کہ انٹری سگنل کا تعین کرنے کے لئے سپورٹ / مزاحمت کی سطح اور حجم کے وقفے کو یکجا کیا جائے اور زیادہ سے زیادہ ممکنہ منافع حاصل کرنے کے لئے منافع لینے کے لئے اسٹاپ نقصان کو متحرک طور پر ایڈجسٹ کرنے کے لئے اے ٹی آر اشارے کا استعمال کیا جائے۔

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

حکمت عملی میں مندرجہ ذیل اہم منطق شامل ہیں:

  1. پچھلی L_Bars موم بتیوں کی سب سے زیادہ قیمت اور پچھلی R_Bars موم بتیوں کی سب سے کم قیمت کا حساب کرنے کے لئے ta.pivothigh اور ta.pivotlow کا استعمال کریں ، مزاحمت اور معاونت کی سطح کے طور پر۔

  2. جب قریبی قیمت مزاحمت کی سطح سے اوپر اور حجم حجم رینج کی حد سے اوپر ٹوٹ جاتا ہے تو ، طویل ہوجائیں۔ جب قریبی قیمت سپورٹ کی سطح سے نیچے ٹوٹ جاتی ہے اور حجم حجم رینج کی حد سے اوپر ٹوٹ جاتا ہے تو ، مختصر ہوجائیں۔

  3. طویل اندراج کے بعد ، اسٹاپ نقصان کو قریب-ATR_LO پر سیٹ کریں۔ مختصر اندراج کے بعد ، اسٹاپ نقصان کو قریب + ATR_SH پر سیٹ کریں۔ اس سے متحرک ٹریلنگ اسٹاپ نقصان کی ایڈجسٹمنٹ کا احساس ہوتا ہے۔

  4. صرف روزانہ ٹریڈنگ کے اوقات (0915-1445) کے اندر پہلا سگنل لیں ۔ روزانہ خطرے کی حد تک پہنچنے کے بعد کوئی نیا آرڈر نہیں ۔

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

  1. انٹری کی درستگی کو بہتر بنانے کے لئے حجم اشارے کے ساتھ مل کر سپورٹ / مزاحمت کا نظریہ استعمال کریں۔

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

  3. روزانہ تجارت کے اوقات اور تجارت کے خطرے پر مناسب کنٹرول رجحان کو پکڑنے اور زیادہ سٹاپ نقصان سے بچنے میں مدد کرتا ہے۔

خطرے کا تجزیہ

  1. حمایت / مزاحمت کی سطح ناکام ہوسکتی ہے اور مؤثر اندراج سگنل فراہم کرنے کے قابل نہیں ہوسکتی ہے.

  2. اے ٹی آر ضارب کو بہت زیادہ مقرر کرنے سے نقصان کو روکنے کے لئے بہت دور ہوسکتا ہے، نقصان کا خطرہ بڑھتا ہے.

  3. حجم کی حد بہت کم مقرر کرنے سے مواقع ضائع ہو سکتے ہیں، بہت زیادہ غلط سگنل کا سبب بن سکتا ہے.

حل:

  • مختلف مصنوعات کی خصوصیات کی بنیاد پر حمایت / مزاحمت پیرامیٹرز کو ایڈجسٹ کریں.

  • ATR ضرب اور حجم کی حد کے پیرامیٹرز کو بہتر بنائیں.

  • داخلہ سگنل کی تصدیق کے لئے دیگر اشارے شامل کریں.

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

  1. داخلہ سگنل کا تعین کرنے میں مدد کے لئے دوسرے اشارے جیسے چلتی اوسط شامل کریں.

  2. پیرامیٹرز کو بہتر بنائیں جیسے اے ٹی آر ضرب اور حجم کی حد۔

  3. متحرک پیرامیٹر کی اصلاح کا احساس کرنے کے لئے مشین لرننگ الگورتھم کا استعمال کریں.

  4. پیرامیٹر پیٹرن تلاش کرنے کے لئے دیگر مصنوعات کو حکمت عملی کو بڑھانے کے.

خلاصہ

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


/*backtest
start: 2024-01-03 00:00:00
end: 2024-01-10 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//   ____________                _________                      _____________
//  |____________|             ||________|                      ||__________|
//       ||            ____    ||        ||                     ||                    ______ ________    _____ ________
//       ||    |   || ||       ||________|| |   || ||    ||     ||     |   ||   /\\   |   // |______| || ||    |______|
//       ||    |===|| |===     ||__________ |   || ||    ||     ||     |===||  /__\\  |===      ||    ||   \\     ||
//       ||    |   || ||___    ||        || |___|| ||___ ||___  ||     |   || /    \\ |   \\    ||    || ___||    ||
//       ||                    ||________||                     ||__________
//       ||                    ||________|                      ||__________|
  
//@version=5
strategy("SUPPORT RESISTANCE STRATEGY [5MIN TF]",overlay=true )
L_Bars = input.int(defval = 10, minval = 1 , maxval = 50, step =1)
R_Bars = input.int(defval = 15, minval = 1 , maxval = 50, step =1)
volumeRange = input.int(20, title='Volume Break [threshold]', minval = 1)

// ═══════════════════════════ //
// ——————————> INPUT <——————— //
// ═══════════════════════════ //

EMA1 = input.int(title='PRICE CROSS EMA', defval = 150, minval = 10 ,maxval = 400)
factor1 = input.float(title='_ATR LONG',defval = 3.2 , minval = 1 , maxval = 5 , step = 0.1, tooltip = "ATR TRAIL LONG")
factor2 = input.float(title='_ATR SHORT',defval = 3.2 , minval = 1 , maxval = 5 , step = 0.1, tooltip = "ATR TRAIL SHORT")
risk = input.float(title='RISK',defval = 200 , minval = 1 , maxval = 5000 , step = 50, tooltip = "RISK PER TRADE")


var initialCapital = strategy.equity
t = time(timeframe.period, '0915-1445:1234567')
time_cond = not na(t)

// ══════════════════════════════════ //
// ———————————> EMA DATA <——————————— //
// ══════════════════════════════════ //
ema1 = ta.ema(close, EMA1)

plot(ema1, color=color.new(color.yellow, 0), style=plot.style_linebr, title='ema1')

// ══════════════════════════════════ //
// ————————> TRAIL DATA <———————————— //
// ══════════════════════════════════ //
// *******Calculate LONG TRAIL data*****
ATR_LO = ta.atr(14)*factor1

// *******Calculate SHORT TRAIL data*****
ATR_SH = ta.atr(14)*factor2

long_trail = close - ATR_LO
short_trail = close + ATR_SH

// Plot atr data
//plot(longStop, color=color.new(color.green, 0), style=plot.style_linebr, title='Long Trailing Stop')
//plot(shortStop , color=color.new(color.red, 0), style=plot.style_linebr, title='Short Trailing Stop')

// ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ //
// ————————————————————————————————————————————————————————> RESISTANCE/SUPPORT LEVELS DATA <————————————————————————————————————————————————————————————————————————————————————————————— //
// ══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ //

Resistance_pi = fixnan(ta.pivothigh(L_Bars, R_Bars)[1])
Support_pi = fixnan(ta.pivotlow(L_Bars, R_Bars)[1])
r1 = plot(Resistance_pi, color=ta.change(Resistance_pi) ? na : color.red,  offset=-(R_Bars + 1),linewidth=2, title='RESISTANCE')
s1 = plot(Support_pi, color=ta.change(Support_pi) ? na : color.green, offset=-(R_Bars + 1),linewidth=2, title='SUPPORT')

//Volume 
vol_1 = ta.ema(volume, 5)
vol_2 = ta.ema(volume, 10)
osc_vol = 100 * (vol_1 - vol_2) / vol_2

// ══════════════════════════════════//
// ————————> LONG POSITIONS <————————//
// ══════════════════════════════════//
//******barinstate.isconfirmed used to avoid repaint in real time*******

if ( ta.crossover(close, Resistance_pi) and osc_vol > volumeRange and not(open - low > close - open) and strategy.opentrades==0 and barstate.isconfirmed and time_cond and close >= ema1 )
    strategy.entry(id= "Long" ,direction = strategy.long, comment = "BUY")
    
plot(long_trail , color=color.new(color.blue, 0), style=plot.style_linebr, title='long Stop')

if strategy.position_size > 0 
    strategy.exit("long tsl", "Long" , stop = long_trail ,comment='SELL')
 
// ═════════════════════════════════════//
// ————————> SHORT POSITIONS <————————— //
// ═════════════════════════════════════//
if ( ta.crossunder(close, Support_pi) and osc_vol > volumeRange and not(open - close < high - open)  and strategy.opentrades==0 and barstate.isconfirmed and time_cond and close <= ema1 )
    strategy.entry(id = "Short" ,direction = strategy.short,  comment = "SELL") 

if strategy.position_size < 0
    strategy.exit("short tsl", "Short" ,  stop = short_trail ,comment='BUY')

// ════════════════════════════════════════════════//
// ————————> CLOSE ALL POSITIONS BY 3PM <————————— //
// ════════════════════════════════════════════════//
strategy.close_all(when = hour == 14 and minute == 55)

// ════════════════════════════════════════//
// ————————> MAX INTRADAY LOSS  <————————— //
// ════════════════════════════════════════//
// strategy.risk.max_intraday_loss(type = strategy.cash, value = risk)



مزید