সংমিশ্রণ কৌশল অনুসরণ করে গতির ভাঙ্গন এবং প্রবণতা

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

img

সারসংক্ষেপ

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

কৌশল নীতি

কৌশলটি নিম্নলিখিত সূচকগুলির সমন্বয়ে গঠিতঃ

  1. ইএমএ লাইনঃ প্রধান প্রবণতা নির্ধারণের জন্য ইএমএ 25, 50, 100 এবং 200 ব্যবহার করুন। যখন ইএমএ 25 ইএমএ 50 এর উপরে এবং ইএমএ 100 ইএমএ 200 এর উপরে অতিক্রম করে, এটি একটি আপ ট্রেন্ড, অন্যথায় এটি একটি ডাউন ট্রেন্ড।

  2. সুপারট্রেন্ড ট্রেন্ড অনুসরণকারী সূচকঃ বর্তমান মূল্য একটি আপট্রেন্ড বা ডাউনট্রেন্ডে রয়েছে কিনা তা বিচার করার জন্য পরামিতিগুলি ফ্যাক্টর 3 এবং এটিআর 10। যখন সুপারট্রেন্ড সবুজ হয়, এটি একটি আপট্রেন্ড। যখন এটি লাল হয়, এটি একটি ডাউনট্রেন্ড।

  3. স্টোকাস্টিক গতির সূচকঃ %K 8 এবং %D 3 স্টোকাস্টিক গোল্ডেন ক্রস বা মৃত ক্রস তৈরি করে কিনা তা নির্ধারণ করতে। যখন %K লাইন নীচে থেকে %D লাইন অতিক্রম করে, এটি একটি গোল্ডেন ক্রস সংকেত, এবং বিপরীতভাবে মৃত ক্রসের জন্য।

ক্রয় কৌশলটি হলঃ ইএমএ আপট্রেন্ড দেখায় + সুপারট্রেন্ড আপট্রেন্ড দেখায় + স্টোকাস্টিক গোল্ডেন ক্রস।
বিক্রয় কৌশল হলঃ ইএমএ ডাউনট্রেন্ড + সুপারট্রেন্ড ডাউনট্রেন্ড + স্টোকাস্টিক ডেড ক্রস দেখায়।

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

সুবিধা বিশ্লেষণ

এই কৌশলটির প্রধান সুবিধাগুলো হল:

  1. একাধিক সূচককে একত্রিত করে দৃঢ়তা বৃদ্ধি পায় এবং কার্যকরভাবে ভুয়া ব্রেকআউটগুলি ফিল্টার করে।

  2. গতির সূচক যোগ করা দ্রুত পালা পয়েন্টগুলি সনাক্ত করতে পারে।

  3. কাস্টমাইজযোগ্য প্যারামিটারগুলি বিভিন্ন বাজারের পরিবেশে উপযুক্ত।

  4. তুলনামূলকভাবে দক্ষ স্টপ লস এবং লাভের সেটিং উপলব্ধি করে।

  5. প্রতিদিনের মতো দীর্ঘ সময়ের মধ্যে ব্যাকটেস্ট করলে ভালো কাজ করে।

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

এছাড়াও কিছু ঝুঁকি আছেঃ

  1. অনুপযুক্ত পরামিতি সেটিং খুব ঘন ঘন ট্রেডিং বা অস্থির সংকেত হতে পারে। পরামিতি অপ্টিমাইজ করা প্রয়োজন।

  2. সময়সূচিতে ভুল ধারণা থাকতে পারে। আরও ফিল্টার সূচক যোগ করা যেতে পারে।

  3. স্টোকাস্টিক এক্সট্রিমেন্টে স্টপ লস সেট করা খুব কাছাকাছি হতে পারে। বৃহত্তর স্টপ পরীক্ষা করার যোগ্য।

  4. অপর্যাপ্ত ব্যাকটেস্ট ডেটা প্যারামিটার ফিটিংয়ে পক্ষপাতের কারণ হতে পারে। ব্যাকটেস্টের সময়কাল বাড়ান।

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি নিম্নলিখিত উপায়ে অপ্টিমাইজ করা যেতে পারেঃ

  1. সর্বোত্তম খুঁজে পেতে আরো প্যারামিটার সেট পরীক্ষা করুন। উদাহরণস্বরূপ সুপার ট্রেন্ড ফ্যাক্টর সামঞ্জস্য করুন।

  2. ভুল বিচার হ্রাস করার জন্য শক্তি বা অস্থিরতার মতো আরও ফিল্টার সূচক যুক্ত করুন।

  3. বিভিন্ন স্টপ লস পদ্ধতি পরীক্ষা করুন, উদাহরণস্বরূপ শতাংশ ভিত্তিক স্টপ লস।

  4. অপ্টিমাইজ করুন মুনাফা অর্জন করুন, যেমন আরও বেশি মুনাফা অর্জন করার জন্য ট্রেলিং স্টপ।

  5. পরিসরের সম্প্রসারণ, আরও পণ্য বা আরও দীর্ঘ সময়সীমার সাথে মানিয়ে নেওয়া।

সিদ্ধান্ত

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


/*backtest
start: 2023-12-05 00:00:00
end: 2023-12-06 07:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Supertrend + Stoch Strategy", overlay=true)

// ---inputs---
pl = input(1.5, title="P/L", minval=0.1)
lossPercentage = input(1, title="Loss Percentage", minval=1, maxval=100)
atrPeriod = input(10, "ATR Length")
factor = input(3, "Supertrend Factor")
periodK = input(8, title="%K Length", minval=1)
smoothK = input(3, title="%K Smoothing", minval=1)
periodD = input(3, title="%D Smoothing", minval=1)
ema1l = input(25, title="EMA 1 Length", minval=1)
ema2l = input(50, title="EMA 2 Length", minval=1)
ema3l = input(100, title="EMA 3 Length", minval=1)
ema4l = input(200, title="EMA 4 Length", minval=1)

// ---lines---
ema1 = ema(close, ema1l)
ema2 = ema(close, ema2l)
ema3 = ema(close, ema3l)
ema4 = ema(close, ema4l)
trendUpper = ema1 > ema2 and ema3 > ema4
trendLower = ema1 < ema2 and ema3 < ema4

[supertrend, direction] = supertrend(factor, atrPeriod)
supertrendUpper = direction < 0
supertrendLower = direction > 0

k = sma(stoch(close, high, low, periodK), smoothK)
d = sma(k, periodD)
stochCrossOver = crossover(k, d)
stochCrossUnder = crossunder(k, d)

// ---plot---
plot(ema1, color=color.green)
plot(ema2, color=color.orange)
plot(ema3, color=color.blue)
plot(ema4, color=color.purple)

bodyMiddle = plot((open + close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0 ? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)
fill(bodyMiddle, upTrend, color.new(color.green, 95), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 95), fillgaps=false)

// ---stop place compute---
edge = 0.  // periodly high/low
edge := stochCrossOver ? high : stochCrossUnder ? low : k > d ? max(edge[1], high) : k < d ? min(edge[1], low) : edge[1]

// plot(edge)

// ---trade condition---
// longCond = trendUpper and supertrendUpper and stochCrossOver
// shortCond = trendLower and supertrendLower and stochCrossUnder
longCond = trendUpper and supertrendUpper and stochCrossOver and strategy.position_size == 0
shortCond = trendLower and supertrendLower and stochCrossUnder and strategy.position_size == 0

// ---stop & take---
stop = 0.
stop := nz(stop[1], stop)
take = 0.
take := nz(take[1], take)

if longCond
    stop := edge[1]
    take := close + (close - stop) * pl
if shortCond
    stop := edge[1]
    take := close - (stop - close) * pl

// ---trade---
qty = strategy.equity / abs(stop - close) / 100 * lossPercentage

strategy.entry("Buy", strategy.long, when=longCond, qty=qty)
strategy.exit("Close Buy","Buy", limit=take, stop=stop)

strategy.entry("Sell", strategy.short, when=shortCond, qty=qty)
strategy.exit("Close Sell","Sell", limit=take, stop=stop)

stopLine = plot(strategy.position_size != 0 ? stop : na, color=color.red, style=plot.style_linebr)
takeLine = plot(strategy.position_size != 0 ? take : na, color=color.green, style=plot.style_linebr)
entryLine = plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.blue, style=plot.style_linebr)
fill(entryLine, stopLine, color.new(color.red, 90), fillgaps=false)
fill(entryLine, takeLine, color.new(color.green, 90), fillgaps=false)

আরো