کثیر اشارے کا مجموعہ حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-07 15:34:33
ٹیگز:

جائزہ

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

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

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

  1. سپر ٹرینڈ: جب قیمت اوپری بینڈ سے اوپر ٹوٹ جاتی ہے تو خریدیں ، جب نیچے کی بینڈ سے نیچے ٹوٹ جاتی ہے تو فروخت کریں۔

  2. ایس ایم اے: جب قیمت ایس ایم اے سے اوپر ہوتی ہے تو خریدیں ، جب ایس ایم اے سے نیچے ہوتی ہے تو فروخت کریں۔

  3. رفتار: جب رفتار مثبت ہو تو لمبی ہو، منفی ہو تو مختصر ہو.

  4. ایم اے سی ڈی: جب ڈی آئی ایف ایف ڈی ای اے سے اوپر جاتا ہے تو خریدیں، جب نیچے جاتا ہے تو فروخت کریں.

  5. بیل اور ریچھ: جب بیل کی طاقت > ریچھ کی طاقت ، اور اس کے برعکس ، طویل سفر کریں۔

  6. آر ایس آئی: جب آر ایس آئی 30 سے اوپر جاتا ہے تو خریدیں ، جب 70 سے نیچے جاتا ہے تو فروخت کریں۔

  7. موم بتیاں: N بولش سلاخوں کے بعد لمبی جائیں، N bearish سلاخوں کے بعد مختصر جائیں۔

  8. CCI: جب CCI > 100 ہو تو خریدیں، جب CCI < -100 ہو تو فروخت کریں۔

  9. ڈی ایم آئی: جب ڈی ایم آئی+ > ڈی ایم آئی- ہو تو لمبا ہو، ورنہ مختصر ہو جائے۔

  10. مارکیٹ کی لہر: اوپر کی لہر میں لمبی، نیچے کی لہر میں مختصر۔

  11. اسٹوکاسٹکس: جب %K 20 سے اوپر جاتا ہے تو خریدیں، جب 80 سے نیچے جاتا ہے تو فروخت کریں.

اشارے کے اشارے کو اوپر یا نیچے کی سمت کے لحاظ سے 1 یا -1 کے طور پر شمار کیا جاتا ہے۔ کل پوائنٹس کا خلاصہ کیا جاتا ہے۔ جب کل پوائنٹس 0 سے اوپر ہوتے ہیں تو خریدیں ، جب 0 سے نیچے ہوتے ہیں تو فروخت کریں۔

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

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

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

خطرے کا تجزیہ

اس طرح کے کمبو حکمت عملی میں نوٹ کرنے کے لئے کچھ خطرات:

  1. اشارے کے مابین اعلی ارتباط سے نقل شدہ سگنل پیدا ہوسکتے ہیں۔ اشارے کو کم تعلق رکھنے کے لئے منتخب کیا جانا چاہئے۔

  2. بہت سے اشارے تاخیر سے سگنل پیدا کرتے ہیں۔ اشارے کی مقدار اور بروقت ہونے کے درمیان سمجھوتہ ہوتا ہے۔

  3. اشارے کے نامناسب پیرامیٹرز حکمت عملی کی کارکردگی کو متاثر کرتے ہیں۔ بہترین پیرامیٹرز کو مکمل بیک ٹسٹنگ کے ذریعے تلاش کرنے کی ضرورت ہے۔

  4. اشارے کی کارکردگی مارکیٹ کے مختلف نظاموں میں مختلف ہوتی ہے۔ رولنگ بیک ٹسٹوں کو اشارے کی صداقت کی جانچ کرنی چاہئے۔

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

اس حکمت عملی کو کئی طریقوں سے بہتر بنایا جا سکتا ہے:

  1. بہترین مجموعہ تلاش کرنے کے لئے اشارے کے انتخاب اور تعداد کو بہتر بنائیں.

  2. ہر اشارے کے لئے پیرامیٹرز کو بہتر بنائیں.

  3. اہم اشارے پر زور دینے کے لئے اشارے کے وزن کو ایڈجسٹ کریں.

  4. جھوٹے بریک آؤٹ سے بچنے کے لیے حجم سپائیک جیسے فلٹرز شامل کریں۔

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

نتیجہ

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


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

//@version=4
strategy("Super indicator ", overlay=true, precision=2, 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 ///////////////
_0 = input(false,  "════════ Test Period ═══════")
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


hilow = ((high - low)*100)
openclose = ((close - open)*100)
vol1 = (volume / hilow)
spreadvol = (openclose * vol1)
VPT = spreadvol + cum(spreadvol)
window_len = 28

v_len = 14
price_spread = stdev(high-low, window_len)

vp =  spreadvol + cum(spreadvol)
smooth = sma(vp, v_len)
v_spread = stdev(vp - smooth, window_len)
shadow = (vp - smooth) / v_spread * price_spread

out1 = shadow > 0 ? high + shadow : low + shadow

//plot(out, style=line,linewidth=3, color=color)
len=5
vpt=ema(out1,len)


// INPUTS //
st_mult   =3
st_period = 7

// CALCULATIONS //
up_lev = vpt - (st_mult * atr(st_period))
dn_lev = vpt + (st_mult * atr(st_period))

up_trend   = 0.0
up_trend   := close[1] > up_trend[1]   ? max(up_lev, up_trend[1])   : up_lev

down_trend = 0.0
down_trend := close[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend10 = 0
trend10 := close > down_trend[1] ? 1: close < up_trend[1] ? -1 : nz(trend10[1], 1)

// Calculate SuperTrend Line
st_line = trend10 ==1 ? up_trend : down_trend

//
src = input(close, title="Source")
//sma
sma20 = sma(src, 20)
smapoint = 0
smapoint := src > sma20 ? smapoint + 1 : smapoint - 1


//AO
ao = sma(hl2,5) - sma(hl2,34)
aopoint = ao > 0 ? 1 : ao < 0 ? -1 : 0
//momentum
mom = src - src[14]
mompoint = mom > 0 ? 1 : mom < 0 ? -1 : 0
//MACD
fast_ma = ema(src, 12)
slow_ma = ema(src, 26)
macd = fast_ma - slow_ma
signal = ema(macd, 9)
hist = macd - signal
histpoint = hist > hist[1] ? 3 : -3

//Bull bear
Length = 30
r1=iff(close[1]<open,max(open-close[1],high-low),high-low)
r2=iff(close[1]>open,max(close[1]-open,high-low),high-low)
bull=iff(close==open,iff(high-close==close-low,iff(close[1]>open,max(high-open,close-low),r1),iff(high-close>close-low,iff(close[1]<open, max(high-close[1],close-low), high-open),r1)),iff(close<open,iff(close[1]<open,max(high-close[1],close-low), max(high-open,close-low)),r1))
bear=iff(close==open,iff(high-close==close-low,iff(close[1]<open,max(open-low,high-close),r2),iff(high-close>close-low,r2,iff(close[1]>open,max(close[1]-low,high-close), open-low))),iff(close<open,r2,iff(close[1]>open,max(close[1]-low,high-close),max(open-low,high-close))))
colors=iff(sma(bull-bear,Length)>0, color.green, color.red)
// barcolor(colors)
bbpoint = sma(bull-bear,Length)>0 ? 1 : -1
//UO
length7 = 7,
length14 = 14,
length28 = 28
average(bp, tr_, length) => sum(bp, length) / sum(tr_, length)
high_ = max(high, src[1])
low_ = min(low, src[1])
bp = src - low_
tr_ = high_ - low_
avg7 = average(bp, tr_, length7)
avg14 = average(bp, tr_, length14)
avg28 = average(bp, tr_, length28)
uoout = 100 * (4*avg7 + 2*avg14 + avg28)/7
uopoint = uoout > 70 ? 1 : uoout < 30 ? -1 : 0
//IC
conversionPeriods = 9
basePeriods = 26
laggingSpan2Periods = 52
displacement = 26
donchian(len) => avg(lowest(len), highest(len))
baseLine = donchian(basePeriods)
icpoint = src > baseLine ? 1 : -1

//HMA
hullma = wma(2*wma(src, 9/2)-wma(src, 21), round(sqrt(21)))
hmapoint = src > hullma ? 2 : -2
//
//
trendDetectionLength =4
float trend = na
float wave = na
float vol = na
mov = close>close[1] ? 1 : close<close[1] ? -1 : 0
trend := (mov != 0) and (mov != mov[1]) ? mov : nz(trend[1])
isTrending = rising(close, trendDetectionLength) or falling(close, trendDetectionLength)
wave := (trend != nz(wave[1])) and isTrending ? trend : nz(wave[1])
vol := wave == wave[1] ? (nz(vol[1])+volume) : volume
up1 = wave == 1 ? vol : 0
dn1 = wave == 1 ? 0 : vol
Weis= up1 > dn1 ? 2 : -2


//

roclen =20
ccilen =21
dilen = 5
dirmov(len) =>
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]

f_draw_infopanel(_x, _y, _line, _text, _color)=>
    _rep_text = ""
    for _l = 0 to _line
        _rep_text := _rep_text + "\n"
    _rep_text := _rep_text + _text
    var label _la = na
    label.delete(_la)
    _la := label.new(
         x=_x, y=_y, 
         text=_rep_text, xloc=xloc.bar_time, yloc=yloc.price, 
         color=color.black, style=label.style_labelup, textcolor=_color, size=size.normal)

TD = 0
TS = 0
TD := close > close[4] ? nz(TD[1]) + 1 : 0
TS := close < close[4] ? nz(TS[1]) + 1 : 0
TDUp = TD - valuewhen(TD < TD[1], TD , 1 )
TDDn = TS - valuewhen(TS < TS[1], TS , 1 )
td = TDUp > 0 ? 2 : TDDn > 0 ? -2 : 0
roc = roc(close, roclen)
Roc=roc > 0 ? 1 : -1
cci = cci(close, ccilen)
CCI=cci > 0? 2 : -2
[plus, minus] = dirmov(dilen)
dmi = plus - minus
DMI= dmi >= 0? 2 : -2
//
STT=trend10 == 1 ? 1 : -1
//
periods = 2
smooth1 =  14
price = close
fn(src, length) => 
    MA_s= 0.0
    MA_s:=(src + nz(MA_s[1] * (length-1)))/length
    MA_s
r11 = ema( price, periods ) 
r22 = iff( price > r11, price - r11, 0 ) 
r3 = iff( price < r11, r11 - price, 0 ) 
r4 = fn( r22, smooth1 ) 
r5 = fn( r3, smooth1 ) 
rr = iff( r5 == 0, 100, 100 - ( 100 / ( 1 + ( r4 / r5 ) ) ) ) 

length = 20,fast = 7,slow = 13
//
src10 = rr
er = abs(change(src,length))/sum(abs(change(src10)),length)
dev = er*stdev(src10*2,fast) + (1-er)*stdev(src10*2,slow)
a = 0.
a := bar_index < 9 ? src10 : src10 > a[1] + dev ? src10 : src10 < a[1] - dev ? src10 : a[1]
//

rsi=fixnan(a > a[1] ? 3 : a < a[1] ?-3 : na)
//
totalpoints =rsi+td+STT+Roc+DMI+ CCI+Weis+smapoint  + aopoint + mompoint + histpoint  + bbpoint  + icpoint  + hmapoint
//
piz=input(1)
tt=sma(totalpoints,piz)

//

zero=0
down = crossunder(tt, 0) 
up = crossover(tt, -0) 

//Alerts
/////// Alerts /////
alertcondition(down,title="sell")
alertcondition(up,title="buy")
//
/////////////// Strategy /////////////// 
long = up
short = down

strategy.entry("Long", strategy.long, when = long) 
strategy.entry("Short", strategy.short, when = short) 


مزید