ইচিমোকু কুমো টুইস্ট সোনার শোষণ কৌশল একটি পরিমাণগত ট্রেডিং কৌশল যা ইচিমোকু বাজার প্রযুক্তিগত সূচক এবং পরিসীমা ফিল্টারিংকে একত্রিত করে। এটি বাজারের প্রবণতা এবং গুরুত্বপূর্ণ সমর্থন এবং প্রতিরোধের স্তরগুলি নির্ধারণের জন্য ইচিমোকু সূচক ব্যবহার করে, ট্রেডিং সংকেত উত্পন্ন করার জন্য মোমবাতি নিদর্শনগুলির সাথে। এদিকে, পরিসীমা ফিল্টারিং ট্রেডিং ফ্রিকোয়েন্সি এবং ঝুঁকি নিয়ন্ত্রণে সহায়তা করে।
কৌশলটি মূলত ইচিমোকু সূচক এবং মোমবাতি প্যাটার্নের উপর ভিত্তি করে বাজারের প্রবণতা বিচার করে। ইচিমোকুতে রূপান্তর লাইন, বেস লাইন এবং মেঘ লাইন রয়েছে, তাদের ক্রসওভার সম্পর্কগুলি বাজারের প্রবণতা নির্দেশ করে। মেঘ লাইনগুলি সমর্থন এবং প্রতিরোধের স্তর হিসাবেও কাজ করে। কৌশলটি ইচিমোকু লাইনের সংবেদনশীলতা সামঞ্জস্য করতে বিভিন্ন পরামিতি সংমিশ্রণ সেট করে। এছাড়াও, কৌশলটি প্যাটার্নগুলি সনাক্ত করে এবং যখন রূপান্তর লাইনটি বেস লাইনের উপরে অতিক্রম করে তখন ক্রয় সংকেত তৈরি করে এবং নীচে অতিক্রম করার সময় বিক্রয় সংকেত তৈরি করে।
এছাড়াও, কৌশলটিতে তারিখের পরিসীমা ফিল্টারগুলি সেট আপ করা আছে, যাতে এটি কেবল নির্দিষ্ট তারিখের পরিসরের মধ্যে বাণিজ্য করে। এটি ট্রেডিং ফ্রিকোয়েন্সি নিয়ন্ত্রণ করে। এছাড়াও, স্টপ লস সেটিংটি যখন দামটি প্রতিকূল দিকে চলে যায় তখন ক্ষতি বন্ধ করে ঝুঁকি হ্রাস করতে সহায়তা করে।
ইচিমোকু পরামিতিগুলি সামঞ্জস্য করার, তারিখের পরিসীমা অপ্টিমাইজ করার, স্টপ লস পয়েন্টগুলি সংশোধন করার মতো পদ্ধতিগুলি ঝুঁকিগুলি উন্নত এবং নিয়ন্ত্রণ করতে পারে।
ইচিমোকু কুমো টুইস্ট সোনার শোষণ কৌশল বাজারের প্রবণতা নির্ধারণের জন্য ইচিমোকু সূচক, মোমবাতি প্যাটার্ন স্বীকৃতি, পরিসীমা ফিল্টারিংকে সংহত করে। এটি প্রবণতা দিকগুলি বেশ স্পষ্টভাবে উপলব্ধি করতে পারে। প্যারামিটার টিউনিং, ঝুঁকি নিয়ন্ত্রণ ইত্যাদির মতো উপায়ে, ভাল কৌশল কর্মক্ষমতা অর্জন করা যেতে পারে। তবে ইচিমোকু বিলম্ব সমস্যাটি লক্ষ করা উচিত এবং ক্রমাগত অপ্টিমাইজেশন সমন্বয় করা উচিত।
/*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)