او بی وی ای ایم اے کراس اوور ٹرینڈ اسٹریٹیجی کے بعد

مصنف:چاؤ ژانگ، تاریخ: 2024-02-20 15:35:08
ٹیگز:

img

جائزہ

یہ حکمت عملی او بی وی اشارے کی دوہری ای ایم اے لائنوں کے کراس اوور کا استعمال او بی وی کے رجحان کا تعین کرنے کے لئے کرتی ہے ، اور رجحان کی سمت کے مطابق طویل / مختصر پوزیشن لیتی ہے۔ او بی وی اشارے قیمت اور حجم کے مابین تعلقات کو زیادہ واضح طور پر ظاہر کرسکتے ہیں اور مارکیٹ کے شرکاء کے ارادے کا فیصلہ کرسکتے ہیں ، لہذا اسے مارکیٹ کے رجحان کو پکڑنے کے لئے استعمال کیا جاسکتا ہے۔ یہ حکمت عملی حرکت پذیر اوسط کی اشارے کو ہموار کرنے کو جوڑتی ہے ، جو مؤثر طریقے سے مارکیٹ کے شور کو فلٹر کرسکتی ہے اور مرکزی رجحان کو پکڑ سکتی ہے۔

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

یہ حکمت عملی بنیادی طور پر استعمال کرتی ہے کہ آیا او بی وی طویل اندراج کے وقت کا تعین کرنے کے لئے اپ ٹرینڈ میں ہے۔ خاص طور پر ، یہ او بی وی کے 6 دن کے ای ایم اے اور 24 دن کے ای ایم اے کا حساب لگاتا ہے۔ جب 6 دن کا ای ایم اے 24 دن کے ای ایم اے سے اوپر عبور کرتا ہے تو ، ایک لمبا سگنل تیار ہوتا ہے۔ اسی طرح ، جب 6 دن کا ای ایم اے 24 دن کے ای ایم اے سے نیچے عبور کرتا ہے تو ، ایک مختصر سگنل تیار ہوتا ہے۔ اس کے علاوہ ، حکمت عملی میں 3٪ اسٹاپ نقصان بھی طے ہوتا ہے۔

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

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

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

  1. تجارتی حجم پر مبنی او بی وی اشارے سے مارکیٹ کے شرکاء کے ارادے کا واضح اندازہ لگایا جاسکتا ہے ، اور سگنل زیادہ قابل اعتماد ہے۔

  2. دوہری ای ایم اے لائن پروسیسنگ سگنل کو واضح بنانے کے لئے کچھ شور کو فلٹر کر سکتی ہے۔

  3. تیز اور سست ای ایم اے لائنوں کا مجموعہ قیمتوں کی ہموار اور رجحان کی تبدیلیوں کو پکڑنے دونوں کو مدنظر رکھ سکتا ہے۔

خطرے کا تجزیہ

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

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

  2. پرتشدد تجارت میں، ای ایم اے لائنز کے پیچھے اثر پڑتا ہے، جس سے زیادہ سے زیادہ اندراج نقطہ نظر کو یاد ہوسکتا ہے.

  3. سٹاپ نقصان کی مقررہ ترتیب مارکیٹ کی تبدیلیوں کے مطابق ڈھالنے کے لئے بہت سخت ہوسکتی ہے۔

انسداد اقدامات:

  1. غلط سگنل سے بچنے کے لیے دوسرے اشارے سے تصدیق کریں۔

  2. EMA لائنوں کو زیادہ حساس بنانے کے لئے پیرامیٹر کی ترتیبات کو بہتر بنائیں.

  3. متحرک سٹاپ نقصان مقرر کریں.

اصلاح کی سمت

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

  1. EMA پیرامیٹر مجموعہ کو بہتر بنانے کے لئے بہتر میچنگ حرکت پذیر اوسط پیرامیٹرز تلاش کریں.

  2. سگنل کی تصدیق کے لیے دیگر اشارے جیسے MACD، RSI وغیرہ میں اضافہ کریں تاکہ سگنل کی درستگی میں اضافہ ہو۔

  3. متحرک سٹاپ نقصان مقرر کریں، جو مارکیٹ کے اتار چڑھاؤ کے مطابق حقیقی وقت میں سٹاپ نقصان نقطہ کو ایڈجسٹ کر سکتے ہیں.

  4. بہترین پیرامیٹر مجموعہ تلاش کرنے کے لئے پیرامیٹر مجموعہ کی اصلاح.

نتیجہ

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("OBV EMA X 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

/////////////// OBV /////////////// 
src = close
atr = atr(input(title="ATR Period", defval=3, minval=1))
atrmult = input(title="ATR Mult", defval=1, minval=0)
obv = cum(change(src) > 0 ? volume * (volume / atr) : change(src) < 0 ? -volume * (volume / atr) : 0 * volume / atr)
e1 = ema(obv, input(24))
e2 = ema(obv, input(6))

///////////////  Strategy  /////////////// 
long = crossover(e2, e1)
short = crossunder(e2, e1)

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])

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

//////////////// Stop loss /////////////// 
sl_inp = input(3.0, title='Stop Loss %') / 100
tp_inp = input(5000.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)

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("L", strategy.long, when=long)
    strategy.entry("S", strategy.short, when=short)
    strategy.exit("L SL", "L", stop=long_sl, when=since_longEntry > 0)
    strategy.exit("S SL", "S", stop=short_sl, when=since_shortEntry > 0)

/////////////// Plotting /////////////// 
plot(e1, color = e1 > e1[1] ? color.lime : e1 < e1[1] ? color.red : color.white, linewidth = 2, offset = 0)
plot(e2, color = e2 > e2[1] ? color.lime : e2 < e2[1] ? color.red : color.white, linewidth = 1)
bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=90)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=60)

مزید