মসৃণ চলমান গড় কৌশল সমন্বয় অপ্টিমাইজেশান


সৃষ্টির তারিখ: 2024-01-26 14:57:08 অবশেষে সংশোধন করুন: 2024-01-26 14:57:08
অনুলিপি: 1 ক্লিকের সংখ্যা: 583
1
ফোকাস
1617
অনুসারী

মসৃণ চলমান গড় কৌশল সমন্বয় অপ্টিমাইজেশান

ওভারভিউ

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

কৌশল নীতি

এই কৌশলটি 12 পিরিয়ড এবং 26 পিরিয়ডের দুটি মসৃণ চলমান গড় ব্যবহার করে। যখন দ্রুত লাইনটি নীচে থেকে ধীর লাইনটি অতিক্রম করে, তখন অতিরিক্ত করুন; যখন দ্রুত লাইনটি উপরে থেকে ধীর লাইনটি অতিক্রম করে, তখন ফাঁকা করুন। জাল সংকেতগুলি ফিল্টার করার জন্য, এটি দ্রুত লাইন এবং ধীর লাইনের সমান্তরাল প্রয়োজন, দ্রুত লাইনটি ধীর লাইনের উপরে বেশি করতে পারে এবং দ্রুত লাইনটি ধীর লাইনের নীচে ফাঁকা করতে পারে।

স্টোক্যাস্টিক সূচকের K লাইনটি D লাইনের সাথে ক্রস করার সময় প্রবেশের সময় হিসাবে বেছে নিন। K লাইনটি ওভারবয় লাইনের নীচে D লাইনের সাথে ক্রস করার সময়, অতিরিক্ত করুন; যখন K লাইনটি ওভারসোল এলাকার নীচে D লাইনের সাথে ক্রস করে, ফাঁকা করুন।

স্লাইড মুভিং এভারেজ ট্রেন্ডের দিক নির্ধারণ করে, স্টোক্যাস্টিক সূচকটি নয়েজ ফিল্টার করে এবং প্রবেশের সময় বেছে নেয়। তাদের সংমিশ্রণটি ট্রেন্ডে আরও বেশি লাভের সুযোগ দেয়।

কৌশলগত সুবিধা

  • সমতল চলমান গড় কৌশল নিজেই একটি চলমান এবং প্রবণতা অনুসরণ করা সহজ বৈশিষ্ট্যযুক্ত
  • স্টোক্যাস্টিক সূচকগুলি ব্যবহার করে নয়েজ ফিল্টার করুন এবং মুনাফা অর্জনের সম্ভাবনা বাড়ান
  • ধীরে ধীরে সমান্তরাল সমন্বয়, যখন দ্রুত লাইনটি ধীর লাইনের কাছাকাছি ফিরে আসে, তখন আরও ভাল খেলার সুযোগ পাওয়া যায়
  • স্টোক্যাস্টিক সূচকের K লাইন এবং D লাইন ক্রস-কম্পোজিশন ব্যবহার করে আরও ভাল প্রবেশের পয়েন্ট বেছে নেওয়া যেতে পারে

সুতরাং, এই কৌশলটি ক্রমানুসারে এবং নির্বাচনীভাবে সুযোগ গ্রহণ করে, যার ফলে উচ্চতর লাভের হার পাওয়া যায়।

ঝুঁকি বিশ্লেষণ

  • সংক্ষিপ্ত সময়ের মধ্যে খেলার বাইরে যাওয়ার ঝুঁকি বেশি। যখন দ্রুত লাইনটি ধীর লাইনে ফিরে আসে, তখন সিগন্যাল প্রত্যাখ্যান করা বা আটকে যাওয়া হতে পারে
  • এর সুষম প্রকৃতির কারণে, বাজারের তীব্র বিপর্যয়ের সময়, এটি দ্রুত অভিযোজিত হতে পারে না, যা বড় ক্ষতির কারণ হতে পারে

এই ঝুঁকি কমানোর জন্য, আমরা স্টপ লস সেট করতে পারি, অথবা একটি আরো স্বাচ্ছন্দ্যময় চলমান গড় প্যারামিটার সমন্বয় ব্যবহার করতে পারি।

অপ্টিমাইজেশান দিক

এই কৌশলটি নিম্নলিখিত দিকগুলি থেকে আরও উন্নত করা যেতে পারেঃ

  1. চলমান গড়ের বিভিন্ন সমন্বয় পরীক্ষা করে সেরাটি খুঁজে বের করুন
  2. বিভিন্ন স্টোক্যাস্টিক প্যারামিটারের সমন্বয় পরীক্ষা করুন
  3. স্টপ লস বাড়ান
  4. অস্থিরতার উপর ভিত্তি করে গতিশীল ক্ষতির বৃদ্ধি
  5. বিভিন্ন জাতের বিভিন্ন চক্রের প্যারামিটারগুলির সমন্বয় অপ্টিমাইজেশন পরীক্ষা করা
  6. মেশিন লার্নিং অ্যালগরিদমের অপ্টিমাইজেশান প্যারামিটার পরীক্ষা করা

বিভিন্ন প্যারামিটার সমন্বয় পরীক্ষা করে, আরও শক্তিশালী প্যারামিটারগুলি পাওয়া যায়; এবং স্টপ লস কৌশলগুলি কার্যকরভাবে ঝুঁকি হ্রাস করতে এবং কৌশল স্থিতিশীলতা উন্নত করতে পারে।

সারসংক্ষেপ

এই কৌশলটি সমতল চলমান গড় এবং স্টোক্যাস্টিক সূচকগুলির সুবিধাগুলিকে একত্রিত করে, প্রবণতা অনুসরণ করে এবং প্রবেশের জন্য আরও ভাল সময় বেছে নেয়। এটি পরিচালনা করা সহজ, ঝুঁকি নিয়ন্ত্রণযোগ্য এবং প্রচুর ব্যবহারিক মূল্য রয়েছে। ক্রমাগত পরীক্ষা এবং অপ্টিমাইজেশনের মাধ্যমে এর পারফরম্যান্স আরও বাড়ানো যায়। এটি একটি কার্যকর এবং স্থিতিশীল প্রবণতা অনুসরণ কৌশল মডেল সরবরাহ করে।

কৌশল সোর্স কোড
/*backtest
start: 2024-01-18 00:00:00
end: 2024-01-25 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// author SoftKill

strategy(title="Price EMA with stock", shorttitle="EMA STOCH", overlay=true)
src = input(title="Source", type=input.source, defval=close)

src_0 = src[0]
src_1 = src[1]
src_2 = src[2]
src_3 = src[3]
src_4 = src[4]

len50 = input(50, minval=1, title="Length")
src50 = input(close, title="Source")
out50 = ema(src50, len50)
len100 = input(100)
src100 = input(close, title="Source")
out100 = ema(src100, len100)

len1 = input(1, minval=1, title="Length")
src1 = input(close, title="Source")
out1 = sma(src1, len1)

length = input(5, minval=1)
OverBought = input(80)
OverSold = input(20)
smoothK = 3
smoothD = 3

k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
cu = crossover(k,OverSold)
co = crossunder(k,OverBought)

sma_down = crossunder(out1, out50)
sma_up = crossover(out1,out50)

//if (not na(k) and not na(d))
  //  if (co and k < OverSold)
    //    strategy.entry("StochLE", strategy.long, comment="StochLE")
    //if (cu and k > OverBought)
     //   strategy.entry("StochSE", strategy.short, comment="StochSE")

crossCandle_4 = crossover(src[4],out50)
crossCandleUnder_4= cross(src[4],out50)
crossCandle_3 = crossover(src[3],out50)
crossCandleUnder_3= crossunder(src[3],out50)
crossCandle_2 = crossover(src[2],out50)
crossCandleUnder_2= crossunder(src[2],out50)
crossCandle_1 = crossover(src[1],out50)
crossCandleUnder_1= crossunder(src[1],out50)
crossCandle_0 = crossover(src[0],out50)
crossCandleUnder_0= crossunder(src[0],out50)

conditionOver = (crossCandle_4 or crossCandle_3 or crossCandle_2 or crossCandle_1 or crossCandle_0)
conditionUnder =(crossCandleUnder_4 or crossCandleUnder_3 or crossCandleUnder_2 or crossCandleUnder_1 or crossCandleUnder_0)

touch4 = (cross(low[4],out50) or cross(high[4],out50))
touch3 = (cross(low[3],out50) or cross(high[3],out50))
touch2 = (cross(low[2],out50) or cross(high[2],out50))
touch1 = (cross(low[1],out50) or cross(high[1],out50))

touch = touch1 or touch2 or touch3 or touch4

//and sma_up
//and sma_down

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src_macd = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src_macd, fast_length) : ema(src_macd, fast_length)
slow_ma = sma_source ? sma(src_macd, slow_length) : ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
//plot(macd, title="MACD", color=col_macd, transp=0)
//plot(signal, title="Signal", color=col_signal, transp=0)


// plot((conditionOver or conditionUnder or touch)  and src[0] >= out50 and close >= out50 and  (cu) and out50 > out100 and hist>=0 , title="Buy", style=plot.style_columns, color=color.lime)
// plot((conditionOver or conditionUnder or touch)  and src[0] <= out50 and close <= out50 and  (co) and out50< out100 and hist<=0 , title="sell", style=plot.style_columns, color=color.red)


long_cond = ((conditionOver or conditionUnder or touch)  and src[0] >= out50 and close > out50 and  (cu) and out50 > out100 and hist>=0)
short_cond = ((conditionOver or conditionUnder or touch)  and src[0] <= out50 and close < out50 and  (co) and out50< out100 and hist<=0)

tp=input(0.1)
sl=input(0.1)

strategy.entry("long",strategy.long, when=long_cond)
strategy.entry("short",strategy.short, when=short_cond)

strategy.exit("X_long", "long", profit=close * tp / syminfo.mintick,  loss=close * sl / syminfo.mintick, when=touch  )
strategy.exit("x_short", "short",profit=close * tp / syminfo.mintick,loss=close * sl / syminfo.mintick,when = touch )

// //tp = input(0.0003, title="tp")
// tp = 0.0003
// //sl = input(1.0 , title="sl")
// sl = 1.0
// strategy.exit("closelong", "long" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closelong")
// strategy.exit("closeshort", "short" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closeshort")