وسائل لوڈ ہو رہے ہیں... لوڈنگ...

حجم تناسب پر مبنی حکمت عملی کے بعد رجحان

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

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

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

اس حکمت عملی کا بنیادی اشارے تیزی اور کمی کا حجم ہے۔ حساب کتاب کے مخصوص اقدامات یہ ہیں:

  1. کل روزانہ حجم کا حساب لگائیں.

  2. روزانہ بار بند ہونے پر حجم کو بول حجم کے طور پر اور بند ہونے پر ریچھ حجم کے طور پر لیبل کریں.

  3. بیل اور ریچھ کے حجم کے لئے الگ الگ چلنے والے اوسط کا حساب لگائیں۔

  4. خریدنے کا اشارہ اس وقت پیدا ہوتا ہے جب بیل حجم ایم اے ہیرے حجم ایم اے سے اوپر گزر جاتا ہے اور اس کے برعکس۔

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

  6. منافع میں مقفل کرنے کے لئے سگنلز کی بنیاد پر سٹاپ نقصان اور منافع لے.

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

II۔ اسٹریٹیجی کے فوائد

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

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

آخر میں، قیمت کی شرح تبدیلی کے ساتھ فلٹرنگ بھی سگنل کی کیفیت کو بہتر بناتا ہے.

III. ممکنہ خطرات

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

سب سے پہلے، غلط سگنل سے بچنے کے لئے حجم کے اشارے کے پیرامیٹرز کو محتاط طریقے سے مقرر کرنے کی ضرورت ہے۔

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

آخر میں، بہت قریب سٹاپ نقصان مقرر کرنے سے قبل روکنے کا خطرہ ہے.

IV. خلاصہ

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


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// Based on Volume Flow v3 indicator by oh92
strategy("Volume Flow BF", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0)

/////////////// Time Frame ///////////////
testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true
    
maType =    input(title="Moving Average Type", options=["Simple", "Exponential", "Double Exponential"], defval="Simple")
length =    input(6, title="MA Length")
x      =    input(3.1, title="Factor For Breakout Candle")

// Basic Volume Calcs //
vol  =  volume
bull =  close>open?vol:0 
bear =  open>close?vol:0

// Double EMA Function //
dema(src, len) => (2 * ema(src, len) - ema(ema(src, len), len))

// BULL Moving Average Calculation
bullma = maType == "Exponential" ?        ema(bull, length) :
         maType == "Double Exponential" ? dema(bull, length) :
         sma(bull, length)

// BEAR Moving Average Calculation //
bearma = maType == "Exponential" ?        ema(bear, length) :
         maType == "Double Exponential" ? dema(bear, length) :
         sma(bear, length)

///////////// Rate Of Change ///////////// 
source = close
roclength = input(12, minval=1)
pcntChange = input(2, minval=1)
roc = 100 * (source - source[roclength]) / source[roclength]
emaroc = ema(roc, roclength / 2)
isMoving() => emaroc > (pcntChange / 2) or emaroc < (0 - (pcntChange / 2))

/////////////// Strategy ///////////////
long = bullma > bearma and isMoving()
short = bullma < bearma and isMoving()

last_long = 0.0
last_short = 0.0
last_long := long ? time : nz(last_long[1])
last_short := short ? time : nz(last_short[1])

long_signal = crossover(last_long, last_short)
short_signal = crossover(last_short, last_long)

last_open_long_signal = 0.0
last_open_short_signal = 0.0
last_open_long_signal := long_signal ? open : nz(last_open_long_signal[1])
last_open_short_signal := short_signal ? open : nz(last_open_short_signal[1])

last_long_signal = 0.0
last_short_signal = 0.0
last_long_signal := long_signal ? time : nz(last_long_signal[1])
last_short_signal := short_signal ? time : nz(last_short_signal[1])

in_long_signal = last_long_signal > last_short_signal
in_short_signal = last_short_signal > last_long_signal

last_high = 0.0
last_low = 0.0
last_high := not in_long_signal ? na : in_long_signal and (na(last_high[1]) or high > nz(last_high[1])) ? high : nz(last_high[1])
last_low := not in_short_signal ? na : in_short_signal and (na(last_low[1]) or low < nz(last_low[1])) ? low : nz(last_low[1])
sl_inp = input(2.0, title='Stop Loss %') / 100
tp_inp = input(900.0, title='Take Profit %') / 100 
 
take_level_l = strategy.position_avg_price * (1 + tp_inp)
take_level_s = strategy.position_avg_price * (1 - tp_inp) 

since_longEntry = barssince(last_open_long_signal != last_open_long_signal[1]) 
since_shortEntry = barssince(last_open_short_signal != last_open_short_signal[1]) 

slLong = in_long_signal ? strategy.position_avg_price * (1 - sl_inp) : na
slShort = strategy.position_avg_price * (1 + sl_inp)
long_sl = in_long_signal ? slLong : na
short_sl = in_short_signal ? slShort : na

/////////////// Execution /////////////// 
if testPeriod()
    strategy.entry("Long",  strategy.long, when=long)
    strategy.entry("Short", strategy.short, when=short)
    strategy.exit("Long Ex", "Long", stop=long_sl, limit=take_level_l, when=since_longEntry > 0)
    strategy.exit("Short Ex", "Short", stop=short_sl, limit=take_level_s, when=since_shortEntry > 0)
    
///////////// Plotting /////////////
bgcolor(isMoving() ? long ? color.green : short ? color.red : na : color.white, transp=80)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30) 
plot(bullma, color=color.lime, linewidth=1, transp=0, title="Bull MA", transp=10)
plot(bearma, color=color.red, linewidth=1, transp=0, title="Bear MA", transp=10)

مزید