
متحرک اشارے کے فیصلے کی ٹریڈنگ حکمت عملی ایک رجحان کی پیروی کی حکمت عملی ہے۔ یہ ایک متحرک اشارے کی تعمیر کرتا ہے جس میں دوہری اشارے کی متحرک اوسط کا استعمال کیا جاتا ہے ، اور پھر قیمت میں تبدیلی کی شرح کے اشارے کے ساتھ مل کر ٹریڈنگ سگنل پیدا کرتا ہے۔ جب متحرک اشارے بڑھتے ہیں تو ، ایک سے زیادہ سگنل پیدا ہوتے ہیں۔ جب متحرک اشارے گر جاتے ہیں تو ، ایک سے کم سگنل پیدا ہوتے ہیں۔ یہ حکمت عملی مارکیٹ کے وسط مدتی رجحانات کی پیروی کرنے والے تاجروں کے لئے موزوں ہے۔
اس حکمت عملی میں حرکت پذیری کی پیمائش کرنے کے لئے ڈبل اشاریہ منتقل اوسط کا استعمال کیا جاتا ہے۔ فیصلہ پوائنٹ آسکیلیٹر۔ پہلے قیمتوں میں روزانہ کی تبدیلی کی شرح کا حساب لگایا جاتا ہے ، پھر قیمتوں میں تبدیلی کی شرح کو ہموار کرنے کے لئے 31 دن اور 20 دن کی لمبائی والی ڈبل اشاریہ منتقل اوسط کا استعمال کیا جاتا ہے ، اور آخر میں 9 دن کی ہموار حرکت پذیری اوسط کے ساتھ تجارتی سگنل جاری کیا جاتا ہے۔ جب تیز لائن سست لائن سے زیادہ ہوتی ہے تو ایک کثیر مارکیٹ ہوتی ہے ، اور جب تیز لائن سست لائن سے کم ہوتی ہے تو خالی مارکیٹ ہوتی ہے۔
اس حکمت عملی میں قیمتوں میں تبدیلی کی شرح کے اشارے بھی متعارف کروائے گئے ہیں تاکہ مارکیٹوں میں غلط سگنل پیدا نہ ہوں۔ خاص طور پر ، قریب 30 دن کی قیمتوں میں فی صد تبدیلی کا حساب کتاب کیا جاتا ہے ، جس کی حرکت پذیری اوسط سے یہ فیصلہ کیا جاتا ہے کہ آیا مارکیٹ متحرک حالت میں ہے۔ صرف اس وقت تجارتی سگنل جاری کیا جاتا ہے جب مارکیٹ متحرک ہو۔
اس حکمت عملی کو متحرک اشارے اور قیمت میں تبدیلی کی شرح کے اشارے کے ساتھ مل کر ، درمیانی مدت کے رجحانات کو مؤثر طریقے سے شناخت کیا جاسکتا ہے ، اور چونکانے والے حالات میں بار بار تجارت سے گریز کیا جاسکتا ہے۔ اس سے ٹریڈنگ کی غلطی کا امکان بہت کم ہوسکتا ہے ، اس کے مقابلے میں کہ صرف ایک حرکت پذیر اوسط جیسے رجحانات کی پیروی کی جاسکتی ہے۔ اس کے علاوہ ، خطرے کے کنٹرول کے لحاظ سے ، اسٹاپ نقصان کی جگہ مقرر کی گئی ہے ، جو بروقت اسٹاپ نقصان کو مؤثر طریقے سے کنٹرول کرسکتی ہے۔
یہ حکمت عملی بنیادی طور پر BASE کے وسط اور لمبی لائن رجحانات پر تجارت کرتی ہے ، جو قلیل مدتی قیمتوں میں اتار چڑھاؤ کو نہیں پکڑ سکتی ہے۔ شدید حالات کی صورت میں ، روک تھام کی حد کو توڑ دیا جاسکتا ہے ، جس سے بڑے نقصانات کا سامنا کرنا پڑتا ہے۔ اس کے علاوہ ، پیرامیٹرز کی غلط ترتیب بھی حکمت عملی پر اثر انداز ہوسکتی ہے۔ مثال کے طور پر ، بائنری اشاریہ کی حرکت پذیری اوسط پیرامیٹرز کو بہت کم ترتیب دیا گیا ہے ، جس سے غلط تجارت کا امکان بڑھ جاتا ہے۔
خطرے سے بچنے کے ل you ، آپ اسٹاپ نقصان کی جگہ کو مناسب طریقے سے ایڈجسٹ کرسکتے ہیں ، اسٹاپ نقصان کی حد کو بڑھا سکتے ہیں۔ شدید حالات آنے پر ، حکمت عملی کو عارضی طور پر بند کردیں ، تاکہ اسٹاپ نقصان کے خلاف ورزی ہونے کے امکانات سے بچا جاسکے۔ پیرامیٹرز کو ایڈجسٹ کرنے کے ل you ، آپ کو بہترین پیرامیٹرز کا انتخاب کرنے کے لئے تفصیلی ریٹرنسنگ کرنی چاہئے۔
اس حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:
دیگر فلٹرنگ اشارے شامل کریں ، جیسے اتار چڑھاؤ کے اشارے ، جس سے مارکیٹ میں شدید اتار چڑھاؤ کے دوران تجارت سے بچا جاسکے۔
مشین لرننگ ماڈل شامل کرنے سے رجحانات کی سمت اور طاقت کا اندازہ لگانے میں مدد ملتی ہے ، جس سے سگنل کی درستگی میں بہتری آسکتی ہے۔
مختلف متحرک اشارے آزمائیں ، جیسے نسبتا strong مضبوط اشارے ، اسٹوکاسٹک آسکیلیٹر وغیرہ ، خرید و فروخت کے وقت کو بہتر بنائیں۔
ریلڈ ڈسک آپریشن کے دوران ، حالیہ حالات کی خصوصیات ، متحرک ایڈجسٹمنٹ پیرامیٹرز کے ساتھ مل کر ، بہترین پیرامیٹرز کے مجموعے کی تلاش کریں۔
متحرک اشارے کی حکمت عملی ٹریڈنگ حکمت عملی مجموعی طور پر ایک مضبوط درمیانی اور طویل مدتی رجحانات کی پیروی کرنے کی حکمت عملی ہے۔ یہ دوہری اشارے کے متحرک اوسط اشارے اور قیمت میں تبدیلی کی شرح کے اشارے کے ساتھ مل کر رجحانات کی شناخت کو مؤثر طریقے سے روک سکتا ہے اور غلط تجارت سے بچا جاسکتا ہے۔ اس کے ساتھ ہی ، خطرے کو کنٹرول کرنے کے لئے اسٹاپ نقصان کی پوزیشن رکھیں۔ اگر پیرامیٹرز کو مناسب طریقے سے ایڈجسٹ کیا جاتا ہے تو ، واپسی کا اثر اچھا ہوتا ہے۔
/*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)