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


تخلیق کی تاریخ: 2023-09-14 19:53:55 آخر میں ترمیم کریں: 2023-09-14 19:53:55
کاپی: 3 کلکس کی تعداد: 713
1
پر توجہ دیں
1617
پیروکار

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

حکمت عملی

اس حکمت عملی کا بنیادی اشارے فضائی ٹرانزیکشن حجم ہے۔ اس کا حساب کتاب کرنے کے لئے درج ذیل اقدامات ہیں:

  1. اس دن کے کاروبار کا حساب لگائیں:

  2. جب K لائن کو کثیر سر سمجھا جائے تو ، لین دین کی مقدار کو کثیر طرفہ لین دین کی مقدار کے طور پر لکھا جائے گا۔

  3. جب K لائن کو خالی سر سمجھا جاتا ہے تو ، لین دین کی مقدار کو خالی فاصلے پر لین دین کی مقدار (بیئر حجم) کے طور پر لکھا جاتا ہے۔

  4. متغیر اوسط کو کثیر اور خالی فریقوں کے تبادلے کے حساب سے حساب لگائیں۔

  5. جب کثیر طرفہ منتقل اوسط پر خالی طرفہ منتقل اوسط سے گزرتا ہے تو ، خریدنے کا اشارہ پیدا ہوتا ہے۔ اس کے برعکس ، فروخت کا اشارہ پیدا ہوتا ہے۔

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

  7. منافع کو لاک کرنے کے لئے سگنل کے مطابق اسٹاپ نقصان کا اسٹاپ پوائنٹ ترتیب دیں۔

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

دوئم، حکمت عملی کے فوائد

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

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

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

تیسرا، ممکنہ خطرات

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

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

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

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

چار مضامین، خلاصہ

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

حکمت عملی کا ماخذ کوڈ
/*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)