منتقل اوسط تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-10-30 15:53:25 آخر میں ترمیم کریں: 2023-10-30 15:53:25
کاپی: 3 کلکس کی تعداد: 611
1
پر توجہ دیں
1617
پیروکار

منتقل اوسط تجارتی حکمت عملی

جائزہ

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

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

  1. ایک مخصوص دورانیہ (ڈیفالٹ 400 دورانیہ) کی ایک وزن والی حرکت پذیری اوسط vWMA کو اوسط اشارے کے طور پر شمار کریں۔

  2. اوسط لکیری وی وی ایم اے میں اضافہ ہوا ہے یا نہیں اس کا تعین کرنے کے لئے ، اگر یہ بڑھتا ہے تو ، ایک سے زیادہ سگنل اپ ٹرینڈ لگائیں۔ اگر یہ گرتا ہے تو ، اس کی نشاندہی کرنے کے لئے ایک ڈاون ٹرینڈ لگائیں۔

  3. جب اپ ٹرینڈ سچ ہو تو ، زیادہ کام کریں۔ جب ڈاون ٹرینڈ سچ ہو تو ، خالی پوزیشن خالی کریں۔

  4. ہر K لائن کے لئے حکمت عملی کی واپسی bar_pnl اور خرید و فروخت کی واپسی bar_bh ◄ کا حساب لگائیں۔

  5. سہ ماہی اور سالانہ وقفے کے مطابق ، ہر سہ ماہی اور سال کے لئے حکمت عملی کی واپسی quarter_pnl اور سالانہ واپسی year_pnl اور اس کے مطابق خرید و فروخت کی واپسی quarter_bh اور year_bh ◄ کا حساب لگائیں۔

  6. ٹیبل میں ہر سال کی ہر سہ ماہی کے لئے حکمت عملی کی واپسی اور خرید و فروخت کی واپسی کی شرح دکھائی گئی ہے۔

حکمت عملی کا تجزیہ

اس حکمت عملی میں مارکیٹ کے رجحانات کی سمت کا اندازہ لگانے کے لئے بنیادی طور پر مساوی لائن پر انحصار کیا جاتا ہے ، جس میں درج ذیل فوائد ہیں:

  1. آپریٹنگ آسان ہے، اوسط اشارے کی طرف سے مارکیٹ کی تحریک کا فیصلہ کرنے کے لئے، آسانی سے سمجھنے اور کنٹرول کرنے کے لئے.

  2. مضبوط واپسی کنٹرول کی صلاحیت، رجحان آپریشن کے ساتھ، غیر رجحان مارکیٹ میں نقصان کو مؤثر طریقے سے کنٹرول کرنے کے قابل.

  3. کم ترتیب دینے والے پیرامیٹرز ، بنیادی طور پر اوسط لکیری دورانیے کو ایڈجسٹ کریں ، آسانی سے ٹیسٹ اور اصلاح کریں۔

  4. اس کے علاوہ، یہ ایک سادہ اور آسان طریقہ ہے، جس میں آپ کو ایک ٹیبل کے ذریعے اپنے منافع کو ظاہر کرنے کے لئے استعمال کیا جا سکتا ہے.

  5. آمدنی کے ٹیبل میں خرید اور انعقاد آمدنی کا موازنہ کریں ، تاکہ حکمت عملی میں اضافے کی آمدنی کو واضح کیا جاسکے۔

  6. ٹیبل کی پوزیشن کو لچکدار بنانے کے لئے، دیگر پالیسیوں کے ساتھ استعمال کرنے کے لئے آسان ہے.

حکمت عملی کے خطرے کا تجزیہ

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

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

  2. ہلچل کے حالات میں whipsaw کا خطرہ زیادہ ہوتا ہے۔ بار بار ٹرانزیکشنز کو کم کرنے کے لئے فلٹرنگ کے حالات کو شامل کرنے پر غور کیا جاسکتا ہے ، جیسے کہ اعلی درجے کی حد سے پہلے۔

  3. اوسط لکیری نظام منحنی خطوط کے لئے مناسب نہیں ہے ، اور رجحان کی تبدیلی کے نقطہ کو یاد کرسکتا ہے۔ مختلف قسم کے اوسط لکیری اشارے آزمائشی ہوسکتے ہیں۔

  4. نقصان سے باہر نکلنے کے طریقہ کار کو روکنے کے لئے، ایک بڑے پیمانے پر واپسی کا خطرہ ہے. متحرک نقصان کو روکنے یا پوزیشن کو کم کرنے پر غور کرنے کے لئے مقرر کیا جا سکتا ہے.

  5. شیڈول کی اصلاح کے لئے ، خطرہ کے اشارے جیسے شارپ تناسب ، زیادہ سے زیادہ واپسی وغیرہ شامل کرنے پر غور کیا جاسکتا ہے۔

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

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

  1. اوسط لکیری پیرامیٹرز کو بہتر بنائیں ، اور اوسط لکیری سائیکل کو مختلف مارکیٹ کے حالات کے مطابق بنائیں۔

  2. whipsaw کو کم کرنے کے لئے فلٹرنگ کی شرائط شامل کریں ، جیسے اعلی درجے سے پہلے کی حد۔

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

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

  5. شیڈول مواد کو بہتر بنائیں ، شارپ ریشو ، زیادہ سے زیادہ ریٹرو وغیرہ شامل کریں۔

  6. میکڈ ، بولنگر بینڈ اور دیگر اشارے کے ساتھ مل کر رجحانات کا تعین کریں۔

  7. پوزیشن مینجمنٹ کو بہتر بنانا ، مارکیٹ کی صورتحال کے مطابق پوزیشنوں کو متحرک طور پر ایڈجسٹ کرنا

  8. مختلف معیارات کی کارکردگی کی جانچ اور ان کے بہترین اطلاق کی تلاش۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 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/
// © Dannnnnnny

//@version=4
strategy(title="Quarterly Returns in Strategies vs Buy & Hold", initial_capital= 1000, overlay=true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, commission_value = 0.1)
maLength= input(400)

wma= vwma(hl2,maLength)
uptrend= rising(wma, 5)
downtrend= falling(wma,5)

plot(wma)

if uptrend
    strategy.entry("Buy", strategy.long)
else
    strategy.close("Buy")//

///////////////////
// QUARTERLY TABLE //
enableQuarterlyTable = input(title="Enable Quarterly Return table", type=input.bool, defval=false)
enableCompareWithMarket = input(title="Compare with Market Benchmark", type=input.bool, defval=false)
table_position = input(title="Table Position", type=input.string, defval='bottom_right', options=['bottom_right','bottom_left','top_right', 'top_left'])
precision = 2
new_quarter = ceil(month(time)/3)  != ceil(month(time[1])/3)
new_year  = year(time)  != year(time[1])

eq = strategy.equity

bar_pnl = eq / eq[1] - 1
bar_bh = (close-close[1])/close[1]

cur_quarter_pnl = 0.0
cur_year_pnl  = 0.0
cur_quarter_bh = 0.0
cur_year_bh  = 0.0

// Current Quarterly P&L
cur_quarter_pnl := new_quarter ? 0.0 : 
                 (1 + cur_quarter_pnl[1]) * (1 + bar_pnl) - 1 
cur_quarter_bh := new_quarter ? 0.0 : 
                 (1 + cur_quarter_bh[1]) * (1 + bar_bh) - 1

// Current Yearly P&L
cur_year_pnl := new_year ? 0.0 : 
                 (1 + cur_year_pnl[1]) * (1 + bar_pnl) - 1
cur_year_bh := new_year ? 0.0 : 
                 (1 + cur_year_bh[1]) * (1 + bar_bh) - 1

// Arrays to store Yearly and Quarterly P&Ls
var quarter_pnl  = array.new_float(0)
var quarter_time = array.new_int(0)
var quarter_bh  = array.new_float(0)

var year_pnl  = array.new_float(0)
var year_time = array.new_int(0)
var year_bh  = array.new_float(0)

end_time = false

end_time:= time_close + (time_close - time_close[1]) > timenow or barstate.islastconfirmedhistory

if (not na(cur_quarter_pnl[1]) and (new_quarter or end_time))
    if (end_time[1])
        array.pop(quarter_pnl)
        array.pop(quarter_time)
        
    array.push(quarter_pnl , cur_quarter_pnl[1])
    array.push(quarter_time, time[1])
    array.push(quarter_bh , cur_quarter_bh[1])

if (not na(cur_year_pnl[1]) and (new_year or end_time))
    if (end_time[1])
        array.pop(year_pnl)
        array.pop(year_time)
        
    array.push(year_pnl , cur_year_pnl[1])
    array.push(year_time, time[1])
    array.push(year_bh , cur_year_bh[1])

// Quarterly P&L Table    
var quarterly_table = table(na)

getCellColor(pnl, bh)  => 
    if pnl > 0
        if bh < 0 or pnl > 2 * bh
            color.new(color.green, transp = 20)
        else if pnl > bh
            color.new(color.green, transp = 50)
        else
            color.new(color.green, transp = 80)
    else
        if bh > 0 or pnl < 2 * bh
            color.new(color.red, transp = 20)
        else if pnl < bh
            color.new(color.red, transp = 50)
        else
            color.new(color.red, transp = 80)

if (end_time and enableQuarterlyTable)
    quarterly_table := table.new(table_position, columns = 14, rows = array.size(year_pnl) + 1, border_width = 1)

    table.cell(quarterly_table, 0,  0, "",     bgcolor = #cccccc)
    table.cell(quarterly_table, 1,  0, "Q1",  bgcolor = #cccccc)
    table.cell(quarterly_table, 2,  0, "Q2",  bgcolor = #cccccc)
    table.cell(quarterly_table, 3,  0, "Q3",  bgcolor = #cccccc)
    table.cell(quarterly_table, 4,  0, "Q4",  bgcolor = #cccccc)
    table.cell(quarterly_table, 5,  0, "Year", bgcolor = #999999)


    for yi = 0 to array.size(year_pnl) - 1
        table.cell(quarterly_table, 0,  yi + 1, tostring(year(array.get(year_time, yi))), bgcolor = #cccccc)
        
        y_color = getCellColor(array.get(year_pnl, yi), array.get(year_bh, yi))
        table.cell(quarterly_table, 5, yi + 1, enableCompareWithMarket ? tostring(round(array.get(year_pnl, yi) * 100, precision)) + " (" + tostring(round(array.get(year_bh, yi) * 100, precision)) + ")" : tostring(round(array.get(year_pnl, yi) * 100, precision)), bgcolor = y_color, text_color=#bfbfbf)
        
    for mi = 0 to array.size(quarter_time) - 1
        m_row   = year(array.get(quarter_time, mi))  - year(array.get(year_time, 0)) + 1
        m_col   = ceil(month(array.get(quarter_time, mi)) / 3)
        m_color = getCellColor(array.get(quarter_pnl, mi), array.get(quarter_bh, mi))
        
        table.cell(quarterly_table, m_col, m_row, enableCompareWithMarket ?  tostring(round(array.get(quarter_pnl, mi) * 100, precision)) + " (" + tostring(round(array.get(quarter_bh, mi) * 100,precision)) +")" : tostring(round(array.get(quarter_pnl, mi) * 100, precision)), bgcolor = m_color, text_color=#bfbfbf)