
এক মেঘের মধ্য দিয়ে চাঁদ ডাবল স্টার শোষণ কৌশল একটি পরিমাণগত ট্রেডিং কৌশল যা বাজার প্রযুক্তিগত বিশ্লেষণ সূচক এক মেঘ এবং ব্যাপ্তি ফিল্টার সংযুক্ত করে। এই কৌশলটি বাজারের প্রবণতা এবং গুরুত্বপূর্ণ সমর্থন, প্রতিরোধের স্তর এবং কে-লাইন ফর্ম্যাটের মূল্যায়ন করার জন্য একটি মেঘ সূচক ব্যবহার করে ট্রেডিং সংকেত উত্পন্ন করে। একই সাথে, ব্যাপ্তি ফিল্টারের সাথে ট্রেডিং ফ্রিকোয়েন্সি এবং ঝুঁকি নিয়ন্ত্রণ করে।
এই কৌশলটি মূলত একটি মেঘের সূচক এবং কে-লাইন ফর্মের উপর ভিত্তি করে বাজারের গতিবিধি নির্ধারণ করে। একটি মেঘের সূচকটি ফরোয়ার্ড, বেসলাইন এবং মেঘের লাইন নিয়ে গঠিত, তাদের ক্রস-সম্পর্ক বাজারের প্রবণতা নির্ধারণ করতে পারে; এবং মেঘ লাইনটি সমর্থন এবং প্রতিরোধের পয়েন্ট হিসাবে কাজ করে। এই কৌশলটি বিভিন্ন পরামিতি সমন্বয় সেট করে একটি মেঘের লাইনের সংবেদনশীলতা সামঞ্জস্য করে। এছাড়াও, কৌশলটি ফর্মটি সনাক্ত করে, যখন বেসলাইনটি ফরোয়ার্ড লাইনে অতিক্রম করে তখন একটি ক্রয় সংকেত উত্পন্ন করে এবং যখন এটি অতিক্রম করে তখন বিক্রয় সংকেত উত্পন্ন করে।
উপরন্তু, কৌশলটি একটি তারিখের পরিসীমা ফিল্টার সেট করে, যা কেবলমাত্র নির্দিষ্ট তারিখের মধ্যে লেনদেন করা হয়, যা কৌশলটির লেনদেনের ফ্রিকোয়েন্সি নিয়ন্ত্রণ করতে পারে। একই সাথে, স্টপ লস সেটিংটি ঝুঁকি হ্রাস করতে পারে, যখন দামটি প্রতিকূল দিকের দিকে চলে যায় তখন স্টপলস বিকল্পটি ক্ষতি বন্ধ করে দেয়।
একটি মেঘের সূচক প্যারামিটার, তারিখের পরিসীমা অপ্টিমাইজ করা, স্টপ লস পয়েন্ট সংশোধন করা ইত্যাদির মাধ্যমে ঝুঁকিগুলি উন্নত এবং নিয়ন্ত্রণ করা যেতে পারে।
এক মেঘের মধ্য দিয়ে চাঁদ ডাবল স্টার সুইমিং কৌশল এক মেঘের সূচক, কে লাইন সনাক্তকরণ, পরিসীমা ফিল্টারিং এবং অন্যান্য পদ্ধতির সমন্বিত ব্যবহারের মাধ্যমে বাজারের গতিবিধি নির্ধারণ করতে পারে। প্রবণতা দিকটি আরও স্পষ্টভাবে ধরে নেওয়া যেতে পারে। প্যারামিটার সমন্বয়, ঝুঁকি নিয়ন্ত্রণ ইত্যাদির মাধ্যমে ভাল কৌশলগত প্রভাব অর্জন করা যেতে পারে। তবে এখনও এক মেঘের সূচকের পিছনে থাকা সমস্যাগুলি সম্পর্কে মনোযোগ দেওয়া এবং ক্রমাগত অপ্টিমাইজেশন সমন্বয় করা প্রয়োজন।
/*backtest
start: 2023-11-20 00:00:00
end: 2023-11-27 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="Ichimoku Kumo Twist Strategy (Presets)", shorttitle="Kumo Twist Strategy", overlay=true)
xlowest_(src, len) =>
x = src
for i = 1 to len - 1
v = src[i]
if (na(v))
break
x := min(x, v)
x
xlowest(src, len) =>
na(src[len]) ? xlowest_(src, len) : lowest(src, len)
xhighest_(src, len) =>
x = src
for i = 1 to len - 1
v = src[i]
if (na(v))
break
x := max(x, v)
x
xhighest(src, len) =>
na(src[len]) ? xhighest_(src, len) : highest(src, len)
dropn(src, n) =>
na(src[n]) ? na : src
ichiConversionPeriods(presets) =>
if presets == "Cpt 20 60 120 30"
20
else
if presets == "Cpt 10 30 60 30"
10
else
if presets == "Std 18 52 104 26"
18
else
9
ichiBasePeriods(presets) =>
if presets == "Cpt 20 60 120 30"
60
else
if presets == "Cpt 10 30 60 30"
30
else
if presets == "Std 18 52 104 26"
52
else
26
ichiLaggingSpan2Periods(presets) =>
if presets == "Cpt 20 60 120 30"
120
else
if presets == "Cpt 10 30 60 30"
60
else
if presets == "Std 18 52 104 26"
104
else
52
ichiDisplacement(presets) =>
if presets == "Cpt 20 60 120 30"
30
else
if presets == "Cpt 10 30 60 30"
30
else
if presets == "Std 18 52 104 26"
26
else
26
scaling = input(title="Scaling", options=["Linear", "Log"], defval="Linear")
presets = input(title="Presets", options=["Cpt 20 60 120 30", "Cpt 10 30 60 30", "Std 18 52 104 26", "Std 9 26 52 26"], defval="Cpt 20 60 120 30")
dropCandles = input(1, minval=0, title="Drop first N candles")
showClouds = input(false, "Show Clouds")
stoploss = input(true, title="Stop Loss")
conversionPeriods = ichiConversionPeriods(presets)
basePeriods = ichiBasePeriods(presets)
laggingSpan2Periods = ichiLaggingSpan2Periods(presets)
displacement = ichiDisplacement(presets)
logScaling = scaling == "Log"
lows = dropn(low, dropCandles)
highs = dropn(high, dropCandles)
lowsp = logScaling ? log(lows) : lows
highsp = logScaling ? log(highs) : highs
donchian(len) =>
avg(xlowest(lowsp, len), xhighest(highsp, len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)
// === BACKTEST RANGE ===
FromMonth = input(defval = 10, title = "From Month", minval = 1)
FromDay = input(defval = 3, title = "From Day", minval = 1)
FromYear = input(defval = 2017, title = "From Year", minval = 2014)
ToMonth = input(defval = 1, title = "To Month", minval = 1)
ToDay = input(defval = 1, title = "To Day", minval = 1)
ToYear = input(defval = 9999, title = "To Year", minval = 2014)
golong = crossover(leadLine1, leadLine2)
goshort = crossunder(leadLine1, leadLine2)
strategy.entry("Buy", strategy.long, when=(golong and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
strategy.entry("Sell", strategy.short, when=(goshort and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))
conversionLinep = logScaling ? exp(conversionLine) : conversionLine
baseLinep = logScaling ? exp(baseLine) : baseLine
leadLine1p = logScaling ? exp(leadLine1) : leadLine1
leadLine2p = logScaling ? exp(leadLine2) : leadLine2
plot(showClouds ? conversionLinep : na, color=#0496ff, title="Conversion Line")
plot(showClouds ? baseLinep : na, color=#991515, title="Base Line")
p1 = plot(showClouds ? leadLine1p : na, offset = displacement, color=green, title="Lead 1")
p2 = plot(showClouds ? leadLine2p : na, offset = displacement, color=red, title="Lead 2")
fill(p1, p2, color = showClouds ? (leadLine1p > leadLine2p ? green : red) : na)