جذبات پر مبنی ایکس بی ٹی فیوچر ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-22 14:48:44
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

  1. سب سے زیادہ قیمت، سب سے کم قیمت، اوسط قیمت، قیمت میں اتار چڑھاؤ کی حد اور دیگر اشارے کا حساب لگانا ایک سے j (1 سے 89 بار) تک سائیکلوں میں۔

  2. قیمت کی حد کے اندر اختتامی قیمت کی معیاری پوزیشن کی وضاحت کریں (مقام متغیر) ۔ مختلف سائیکلوں کے لئے جذبات کی قیمت حاصل کرنے کے لئے اسے ہر سائیکل کی قیمت میں اتار چڑھاؤ کی حد کے ساتھ جوڑیں۔

  3. جذبات کی اقدار مجموعی جذبات کی قدر (جذبے) حاصل کرنے کے لئے وزن (w متغیر) کی ایک سیریز سے گزرتی ہیں۔ جذبات موجودہ مجموعی مارکیٹ کے مزاج کی عکاسی کرتا ہے۔

  4. جذبات کی قیمت میں اتار چڑھاؤ کا تجزیہ کریں۔ جب جذبات مثبت سے منفی ہوجاتے ہیں تو فروخت کا اشارہ پیدا ہوتا ہے۔ جب جذبات منفی سے مثبت ہوجاتے ہیں تو خرید کا اشارہ پیدا ہوتا ہے۔

  5. داخلہ رفتار کا تعین کریں اور جذبات کی اتار چڑھاؤ (ڈیلٹا متغیر) کی مطلق قیمت کی بنیاد پر منافع اور سٹاپ نقصان کی شرائط مقرر کریں۔

فوائد

  1. مارکیٹ کے رجحان کا زیادہ جامع اندازہ لگانے کے لئے مختلف دوروں میں جذبات پر غور کریں۔

  2. وزن ایڈجسٹمنٹ میکانزم حکمت عملی کو زیادہ مستحکم بناتا ہے.

  3. جذباتی قدر اور اس کے اتار چڑھاؤ کو ملا کر داخل ہونے کا زیادہ عین مطابق وقت.

  4. سب سے زیادہ قیمت، سب سے کم قیمت کے ساتھ خطرات کا انتظام کریں، منافع لے اور نقصان کو روکیں.

خطرات

  1. پیرامیٹرز کی غلط ترتیبات بہت کثرت سے ٹریڈنگ یا کھوئے ہوئے مواقع کا سبب بن سکتی ہیں۔

  2. بلیک سوان واقعات حکمت عملی منطق کو باطل کر سکتے ہیں.

  3. معاہدے کی اصلاحات اور قواعد کی تبدیلیاں حکمت عملی کی کارکردگی کو متاثر کرسکتی ہیں۔

  4. جذبات کا حساب کتاب تاریخی اعداد و شمار پر مبنی ہے۔ جب مارکیٹ کے نظام میں تبدیلی آتی ہے تو دوبارہ تشخیص کی ضرورت ہوتی ہے۔

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

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

  1. جذباتی فیصلے کے لئے امیر بنیاد بنانے کے لئے تجزیہ کے دوروں کو بڑھانا.

  2. ایک مشترکہ نقطہ نظر کے لئے زیادہ تکنیکی اشارے شامل کریں.

  3. مشین لرننگ کے طریقوں کے ساتھ جذبات کی خصوصیات نکالیں.

  4. متحرک طور پر وزن کی ترتیبات کو ایڈجسٹ کریں.

  5. منافع حاصل کرنے اور نقصان کو روکنے کی حکمت عملی کو بہتر بنائیں.

نتیجہ

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


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Jomy

//@version=4

//2h chart BITMEX:XBTUSD
//use on low leverage 1-2x only

strategy("expected range STRATEGY",overlay=false,initial_capital=1000,precision=2)
leverage=input(1,"leverage",step=.5)
tp=input(53,"take profit %",step=1)
sl=input(7,"stoploss %",step=1)
stoploss=1-(sl/100)
plot(stoploss)
level=input(.70,"level to initiate trade",step=.02)
closelevel=input(0.0,"level to close trade",step=.02)
levelshort=input(.68,"level to initiate trade",step=.02)
closelevelshort=input(0.0,"level to close trade",step=.02)

wa=input(1.158,"weight a",step=.2)
wb=input(1.119,"weight b",step=.2)
wc=input(1.153,"weight c",step=.2)
wd=input(1.272,"weight d",step=.2)
we=input(1.295,"weight e",step=.2)
wf=input(1.523,"weight f",step=.2)
wg=input(1.588,"weight g",step=.2)
wh=input(2.100,"weight h",step=.2)
wi=input(1.816,"weight i",step=.2)
wj=input(2.832,"weight j",step=.2)
a=1
b=2
c=3
d=5
e=8
f=13
g=21
h=34
i=55
j=89

n=0
n:=if volume > -1
    nz(n[1])+1



ra=highest(high,a)-lowest(low,a)
aa=sma(ohlc4,a)
ha=aa[1]+ra[1]/2
la=aa[1]-ra[1]/2

rb=highest(high,b)-lowest(low,b)
ab=sma(ohlc4,b)
hb=ab[1]+rb[1]/2
lb=ab[1]-rb[1]/2

rc=highest(high,c)-lowest(low,c)
ac=sma(ohlc4,c)
hc=ac[1]+rc[1]/2
lc=ac[1]-rc[1]/2

rd=highest(high,d)-lowest(low,d)
ad=sma(ohlc4,d)
hd=ad[1]+rd[1]/2
ld=ad[1]-rd[1]/2

re=highest(high,e)-lowest(low,e)
ae=sma(ohlc4,e)
he=ae[1]+re[1]/2
le=ae[1]-re[1]/2

rf=highest(high,f)-lowest(low,f)
af=sma(ohlc4,f)
hf=af[1]+rf[1]/2
lf=af[1]-rf[1]/2

rg=highest(high,g)-lowest(low,g)
ag=sma(ohlc4,g)
hg=ag[1]+rg[1]/2
lg=ag[1]-rg[1]/2

rh=highest(high,h)-lowest(low,h)
ah=sma(ohlc4,h)
hh=ah[1]+rh[1]/2
lh=ah[1]-rh[1]/2

ri=highest(high,i)-lowest(low,i)
ai=sma(ohlc4,i)
hi=ai[1]+ri[1]/2
li=ai[1]-ri[1]/2

rj=highest(high,j)-lowest(low,j)
aj=sma(ohlc4,j)
hj=aj[1]+rj[1]/2
lj=aj[1]-rj[1]/2

placea=((close-la)/(ha-la)-.5)*-100
placeb=((close-lb)/(hb-lb)-.5)*-100
placec=((close-lc)/(hc-lc)-.5)*-100
placed=((close-ld)/(hd-ld)-.5)*-100
placee=((close-le)/(he-le)-.5)*-100
placef=((close-lf)/(hf-lf)-.5)*-100
placeg=((close-lg)/(hg-lg)-.5)*-100
placeh=((close-lh)/(hh-lh)-.5)*-100
placei=((close-li)/(hi-li)-.5)*-100
placej=((close-lj)/(hj-lj)-.5)*-100

sentiment=((placea/j)*ra*wa+(placeb/i)*rb*wb+(placec/h)*rc*wc+(placed/g)*rd*wd+(placee/f)*re*we+(placef/e)*rf*wf+(placeg/d)*rg*wg+(placeh/c)*rh*wh+(placei/b)*ri*wi+(placej/a)*rj*wj)/(wa+wb+wc+wd+we+wf+wg+wh+wi+wj)

deltalong=0.0
deltalong:=if sentiment>0
    nz(deltalong[1])+sentiment-sentiment[1]
else
    0
deltashort=0.0   
deltashort:=if sentiment<0
    nz(deltashort[1])+((sentiment-sentiment[1])*-1)
else
    0

//plot(sentiment*-1,color=color.blue)    
//plot(deltalong,color=color.red)
//plot(deltashort,color=color.lime)

peakfindlong=highest(deltalong,j)*level


peakfindshort=highest(deltashort,j)*levelshort


contracts=(strategy.equity/close)*leverage


//reason for o is this strategy makes dumb trades before the sentiment line crosses the 0 point the first time
o=0
o:=if cross(0,sentiment) and n>j
    1
else
    nz(o[1])

long=deltashort>peakfindlong and o==1

short=deltalong>peakfindshort and o==1


longstart=0.0
longstart:=if strategy.position_size>0 and strategy.position_size[1]<=0
    close
else
    nz(longstart[1])

shortstart=0.0
shortstart:=if strategy.position_size<0 and strategy.position_size[1]>=0 
    close
else
    nz(shortstart[1])    

highsincelong = 0.0
highsincelong := if strategy.position_size>0
    max(max(highsincelong[1],high),high[1])
else
    0

lowsinceshort = 1000000.0
lowsinceshort := if strategy.position_size<0
    min(min(lowsinceshort[1],low),low[1])
else
    10000000 

closelong=strategy.position_size > 0 and ((highsincelong/longstart-1)*100) > tp
closeshort=strategy.position_size < 0 and ((shortstart/lowsinceshort-1)*100) > tp

stoptrade=0
stoptrade:= if closelong
    1
else
    nz(stoptrade[1])

stoptrade:= if short and stoptrade[1]==1
    0
else
    stoptrade 

stoptrade:= if closeshort 
    -1
else
    stoptrade 
    
stoptrade:= if long and stoptrade[1]==-1
    0
else
    stoptrade     

if(closelong)
    strategy.close("Long1")   

pnllong = ((close - strategy.position_avg_price) / strategy.position_avg_price)*100
pnlshort = ((strategy.position_avg_price-close) / strategy.position_avg_price) *100
plot (strategy.position_size > 0 ?(highsincelong/longstart-1)*100 : 0.0,color=color.lime,linewidth=2)
plot (strategy.position_size < 0 ?(shortstart/lowsinceshort-1)*100 : 0.0,color=color.red,linewidth=2)  
plot( strategy.position_size > 0 ? pnllong:0, color=strategy.position_size > 0 ?color.yellow:color.black,linewidth=2 )
plot( strategy.position_size < 0 ? pnlshort:0, color=strategy.position_size < 0 ?color.orange:color.black,linewidth=2)
longuntilshort=0
longuntilshort:=if long
    1
else
    if short
        -1
    else
        nz(longuntilshort[1]) 
bgcolor(stoptrade!=0?color.black:longuntilshort==1?color.lime:longuntilshort==-1?color.red:na,transp=70)   

if(long and stoptrade==0)
    strategy.entry("Long1",strategy.long,qty=max(1,min(contracts,1000000000)))

if(closelong)
    strategy.close("Long1")
    
strategy.exit("Long1",stop=longstart * stoploss,when = strategy.position_size>0)

if(short and stoptrade==0)    
    strategy.entry("Short1",strategy.short,max(1,min(contracts,1000000000)))

if(closeshort)
    strategy.close("Short1")

strategy.exit("Long1",stop=shortstart / stoploss,when = strategy.position_size<0)

مزید