سپر ٹرینڈ انڈیکیٹر اور ایکویٹی کریو ٹریڈنگ پر مبنی مقداری حکمت عملی


تخلیق کی تاریخ: 2024-01-15 11:41:53 آخر میں ترمیم کریں: 2024-01-15 11:41:53
کاپی: 1 کلکس کی تعداد: 601
1
پر توجہ دیں
1617
پیروکار

سپر ٹرینڈ انڈیکیٹر اور ایکویٹی کریو ٹریڈنگ پر مبنی مقداری حکمت عملی

جائزہ

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

حکمت عملی کا اصول

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

  1. ٹرانس رجحان اشارے
  2. خالص مالیت کی تجارت

ٹرانس ٹرینڈ اشارے کے لئے حساب کتاب کا فارمولا مندرجہ ذیل ہے:

ٹریک اپ = قیمت - اے ٹی آر کی تعداد * اے ٹی آر نیچے ریل = قیمت + ATR * ATR

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

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

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

طاقت کا تجزیہ

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

  1. ایک اعلی رجحان اشارے کے خطرے کو مؤثر طریقے سے روکنے کے لئے. اعلی رجحان اشارے خود کو مؤثر طریقے سے نقصان سے بچنے کے لئے نہیں کر سکتے ہیں.

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

  3. پوزیشنوں کا خود کار طریقے سے انتظام کیا جاسکتا ہے ، بغیر کسی انسانی مداخلت کی ضرورت ہوتی ہے۔ جب خالص قیمت کا منحنی خطوط حرکت پذیر اوسط سے کم ہوتا ہے تو خود بخود معطل ہوجاتا ہے ، جب زیادہ ہوتا ہے تو خود بخود شروع ہوتا ہے۔

خطرے کا تجزیہ

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

  1. پیرامیٹرز کی غلط سیٹنگ سے نیٹ ورک وولٹیج وکر ٹریڈنگ کا اثر مؤثر طریقے سے نہیں چل سکتا ہے۔ مناسب منتقل اوسط کی مدت کا انتخاب کرنے کی ضرورت ہے۔

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

  3. اس کے نتیجے میں ، آپ کو اپنے کاروبار میں داخل ہونے کا ایک اچھا موقع ضائع کرنا پڑے گا کیونکہ آپ کو نیٹو وولٹیج وکر کے اوپر جانے کا انتظار کرنا پڑے گا۔

ردعمل:

  1. آپٹمائزڈ پیرامیٹرز، بہترین منتقل اوسط مدت کا انتخاب کریں

  2. دوسرے اشارے کے ساتھ رجحانات کا اندازہ لگانے کے ساتھ ، پوزیشن کو بروقت ایڈجسٹ کریں۔

  3. مناسب طریقے سے ٹریڈنگ کی روک تھام کے وقت کو کم کرنے کے لئے، داخلہ کو یاد کرنے کے امکانات کو کم کرنا.

اصلاح کی سمت

یہ حکمت عملی مندرجہ ذیل پہلوؤں سے بہتر بنائی جا سکتی ہے۔

  1. مختلف پیرامیٹرز کے مجموعے کو آزمائیں اور بہترین اے ٹی آر کی مدت اور اے ٹی آر کی ضرب تلاش کریں۔

  2. دوسرے قسم کے متحرک اوسط کو آزمائیں ، جیسے اشاریہ متحرک اوسط ، ہل متحرک اوسط ، وغیرہ

  3. دوسرے اشارے کے ساتھ مارکیٹ کے رجحانات کا اندازہ لگائیں ، اور جب رجحانات بدل جاتے ہیں تو بروقت پوزیشن کو ایڈجسٹ کریں۔

  4. متحرک اوسط سائیکل کو بہتر بنائیں ، بہترین توازن پوائنٹ تلاش کریں۔ سائیکل بہت لمبا ہوتا ہے ، مواقع سے محروم ہوجاتا ہے ، اور سائیکل بہت مختصر ہوتا ہے ، اکثر معطل ہوجاتا ہے۔

  5. تجارت کو روکنے کے لئے بہتر شرائط ، جیسے اسٹاپ نقصان کی حد ، جو نقصان کی ایک خاص حد تک پہنچنے کے بعد ہی روک دی جاتی ہے۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-01-14 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Supertrend & Equity curve with EMA', overlay=false, format=format.price, precision=2, initial_capital=100000)

eqlen = input.int(25, "EQ EMA len", group = "New Equity Curve Settings")
shEQandMA = input.bool(true, "Show Original Equity Curve and MA")
shEQfilt = input.bool(true, "Show Filtered Equity Curve by MA")

Periods = input(title='ATR Period', defval=10, group = "SuperTrend Settings")
src = input(hl2, title='Source', group = "SuperTrend Settings")
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0, group = "SuperTrend Settings")
changeATR = input(title='Change ATR Calculation Method ?', defval=true, group = "SuperTrend Settings")

//SuperTrend Code
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

// Strategy main code
buySignal = trend == 1 and trend[1] == -1
sellSignal = trend == -1 and trend[1] == 1
if buySignal
    strategy.entry('Long', strategy.long)
if sellSignal
    strategy.entry('Short', strategy.short)



//Equity Curve calcs
eq = strategy.netprofit
ch = ta.change(eq)
neq = ch != 0 ? eq : na
mova = ta.ema(neq,eqlen)

// New Equity Curve
var float neweq = 0
var int ttrades = 0
var int wintrades = 0
var int losetrades = 0

switch
    strategy.netprofit == strategy.netprofit[1]  => na
    strategy.netprofit < mova and strategy.netprofit[1] > mova  => neweq := neweq + ch
    strategy.netprofit < mova and strategy.netprofit[1] < mova => na
    strategy.netprofit > mova and strategy.netprofit[1] > mova => neweq := neweq + ch

newch = ta.change(neweq)
switch
    newch == 0 => na
    newch > 0 => 
        wintrades := wintrades +1
        ttrades := ttrades +1
    newch < 0 =>
        losetrades := losetrades +1
        ttrades := ttrades +1

//plot(eq, linewidth = 2)
//plot(mova, color=color.red)
//plot(neweq, color= color.green, linewidth = 3)


//Table 
var testTable = table.new(position = position.top_right, columns = 5, rows = 10, bgcolor = color.green, border_width = 1)
table.cell(table_id = testTable, column = 0, row = 0, text = "Strategy: ", bgcolor=color.white)     
table.cell(table_id = testTable, column = 1, row = 0, text = "Original: ", bgcolor=color.white)     
table.cell(table_id = testTable, column = 2, row = 0, text = "Equity Curve EMA: ", bgcolor=color.white)     

table.cell(table_id = testTable, column = 0, row = 1, text = "Total Trades: ", bgcolor=color.white)     
table.cell(table_id = testTable, column = 0, row = 2, text = "Win Trades: ", bgcolor=color.white)     
table.cell(table_id = testTable, column = 0, row = 3, text = "Lose Trades: ", bgcolor=color.white)     
table.cell(table_id = testTable, column = 0, row = 4, text = "Win Rate: ", bgcolor=color.white)     
table.cell(table_id = testTable, column = 0, row = 5, text = "Net Profit: ", bgcolor=color.white)     

//Equity Curve EMA stat
table.cell(table_id = testTable, column = 2, row = 1, text = str.tostring(ttrades), bgcolor=color.white)     
table.cell(table_id = testTable, column = 2, row = 2, text = str.tostring(wintrades), bgcolor=color.white)
table.cell(table_id = testTable, column = 2, row = 3, text = str.tostring(losetrades), bgcolor=color.white)
table.cell(table_id = testTable, column = 2, row = 4, text = str.tostring(math.round(100*wintrades/ttrades,2)), bgcolor=color.white)
table.cell(table_id = testTable, column = 2, row = 5, text = str.tostring(math.round(neweq)), bgcolor=color.white)

//Original Strategy stat
// table.cell(table_id = testTable, column = 1, row = 1, text = str.tostring(strategy.closedtrades), bgcolor=color.white)     
// table.cell(table_id = testTable, column = 1, row = 2, text = str.tostring(strategy.wintrades), bgcolor=color.white)
// table.cell(table_id = testTable, column = 1, row = 3, text = str.tostring(strategy.losstrades), bgcolor=color.white)
// table.cell(table_id = testTable, column = 1, row = 4, text = str.tostring(math.round(100*strategy.wintrades/strategy.closedtrades,2)), bgcolor=color.white)
// table.cell(table_id = testTable, column = 1, row = 5, text = str.tostring(math.round(strategy.netprofit)), bgcolor=color.white)




//New Equity curve
var newcurve = array.new_float(0)
var int ida = 0
var bool printEQ = false
if newch !=0 
    array.push(newcurve, neweq)
if bar_index > last_bar_index - array.size(newcurve) - 1 - 20  and array.size(newcurve) > 20 
    printEQ := true
else
    printEQ := false

plot(printEQ and ida < strategy.closedtrades and shEQfilt ? array.get(newcurve, ida) : na, color=color.green, linewidth = 2)

if printEQ
    ida := ida + 1
if ida >= array.size(newcurve) and printEQ
    ida := array.size(newcurve) -1



//Original Equity curve
var newcurve2 = array.new_float(0)
var int ida2 = 0
var bool printEQ2 = false
if ch !=0 
    array.push(newcurve2, eq)
if bar_index > last_bar_index - array.size(newcurve2) - 1 - 20  and array.size(newcurve2) > 20 
    printEQ2 := true
else
    printEQ2 := false

plot(printEQ2 and ida2 < strategy.closedtrades and shEQandMA  ? array.get(newcurve2, ida2) : na, color=color.blue, linewidth = 2)

if printEQ2
    ida2 := ida2 + 1
if ida2 >= array.size(newcurve2) and printEQ2
    ida2 := array.size(newcurve2) -1



//Moving Average Array
var marray = array.new_float(0)
if ch
    array.push(marray, mova)

plot(printEQ2 and  array.size(marray) > 40 and shEQandMA ? array.get(marray, ida2-1) : na, color=color.red, linewidth = 1)

hline(0,"0 line", color=color.black, linestyle = hline.style_dotted)


if (last_bar_index-1) and array.size(newcurve2) > 20 and array.size(newcurve) > 20
    l = label.new(bar_index+2, array.get(newcurve2, array.size(newcurve2)-1), "Original Equity Curve", color=color.rgb(33, 149, 243, 85), textcolor = color.black, style = label.style_label_left)
    label.delete(l[1])
    f = label.new(bar_index+2, array.get(newcurve, array.size(newcurve)-1), "Filtered Equity Curve", color=color.rgb(69, 238, 97, 85), textcolor = color.black, style = label.style_label_left)
    label.delete(f[1])