অনুভূতি ভিত্তিক এক্সবিটি ফিউচার ট্রেডিং কৌশল

লেখক:চাওঝাং, তারিখ: ২০২৩-১২-২২ 14:48:44
ট্যাগঃ

img

সারসংক্ষেপ

এই কৌশলটি এক্সবিটি ইউএসডি ফিউচার চুক্তিতে দীর্ঘ বা সংক্ষিপ্ত যেতে মাল্টি-চক্রের আবেগ বিশ্লেষণের পদ্ধতি গ্রহণ করে। এটি বিভিন্ন চক্র জুড়ে দামের ওঠানামা পরিসীমা এবং সর্বোচ্চ এবং সর্বনিম্ন দামগুলি ব্যাপকভাবে বিবেচনা করে এবং ওজন সমন্বয়গুলির একটি সিরিজের মাধ্যমে সামগ্রিক বাজারের আবেগ গণনা করে। আবেগ মানের পরিবর্তিত নিদর্শনগুলির উপর ভিত্তি করে কিনুন এবং বিক্রয় সংকেত উত্পন্ন হয়।

কৌশলগত যুক্তি

  1. সর্বোচ্চ মূল্য, সর্বনিম্ন মূল্য, গড় মূল্য, দামের ওঠানামা পরিসীমা এবং অন্যান্য সূচকগুলি a থেকে j (1 থেকে 89 বার) পর্যন্ত চক্র জুড়ে গণনা করুন।

  2. মূল্য পরিসীমা (স্থান পরিবর্তনশীল) এর মধ্যে বন্ধের মূল্যের মানক অবস্থান সংজ্ঞায়িত করুন। বিভিন্ন চক্রের জন্য আবেগ মান পেতে প্রতিটি চক্রের দামের ওঠানামা পরিসীমা সঙ্গে এটি একত্রিত করুন।

  3. সামগ্রিক আবেগ মান (আবেগ) পেতে আবেগ মানগুলি ওজন (ডাব্লু ভেরিয়েবল) সমন্বয়গুলির একটি সিরিজের মধ্য দিয়ে যায়। আবেগ বর্তমান সামগ্রিক বাজারের মেজাজকে প্রতিফলিত করে।

  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)

আরো