رفتار اشارے فیصلہ ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-15 15:31:52
ٹیگز:

img

جائزہ

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

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

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

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

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

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

خطرے کا تجزیہ

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

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

اصلاح کی ہدایات

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

  1. مارکیٹ میں شدید اتار چڑھاؤ کے دوران تجارت سے بچنے کے لئے اتار چڑھاؤ کے اشارے جیسے دیگر فلٹرنگ اشارے شامل کریں.

  2. رجحان کی سمت اور طاقت کا فیصلہ کرنے میں مدد کے لئے مشین لرننگ ماڈل شامل کریں ، جو سگنل کی درستگی کو بہتر بنا سکتا ہے۔

  3. مختلف رفتار کے اشارے جیسے رشتہ دار طاقت انڈیکس، اسٹوکاسٹک آسکیلیٹر کی کوشش کریں تاکہ انٹری اور آؤٹ ٹائمنگ کو بہتر بنایا جا سکے۔

  4. لائیو ٹریڈنگ میں ، پیرامیٹرز کو متحرک طور پر ایڈجسٹ کریں جو مارکیٹ کے حالیہ حالات کے ساتھ مل کر پیرامیٹرز کے بہترین امتزاج کے حصول کے ل.

نتیجہ

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


/*backtest
start: 2022-12-08 00:00:00
end: 2023-11-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Decision 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.075)

/////////////// 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

/////////////// Decision ///////////////
src = input(ohlc4, title="Source")
length1 = input(31, title="First Smoothing")
length2 = input(20, title="Second Smoothing")
siglength = input(9, title="Signal Smoothing")
fr = input(true, title="Fill Region")

calc_csf(src, length) => 
	sm = 2.0 / length
	csf = 0.0
	csf := (src - nz(csf[1])) * sm + nz(csf[1])
	csf
i = (src / nz(src[1], src)) * 100
pmol2 = calc_csf(i - 100, length1)
pmol = calc_csf(10 * pmol2, length2)
pmols = ema(pmol, siglength)
d = pmol - pmols
duml = plot(fr ? (d > 0 ? pmol : pmols) : na, style=plot.style_circles, color=color.yellow, linewidth=0, title="DummyL")

hc = d > 0 ? d > d[1] ? color.lime : color.green : d < d[1] ? color.red : color.orange

///////////// Rate Of Change ///////////// 
source = close
roclength = input(30, minval=1)
pcntChange = input(7, 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 = d > 0 and isMoving() 
short = d < 0 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(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)

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("L Ex", "Long", stop=long_sl, limit=take_level_l, when=since_longEntry > 0)
    strategy.exit("S Ex", "Short", stop=short_sl, limit=take_level_s, when=since_shortEntry > 0)

/////////////// Plotting ///////////////
sigl = plot(false ? na : pmols, title="PMO Signal", color=color.gray, linewidth=2, title="Signal")
mdl = plot(false ? na : pmol, title="PMO", color=color.black, linewidth=2, title="PMO")
fill(duml, sigl, color.green, transp=20, title="PosFill")
fill(duml, mdl, color.red, transp=20, title="NegFill")
bgcolor(isMoving() ? long ? color.lime : short ? color.red : na : color.white, transp=70)
bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=50)

مزید