یہ حکمت عملی مارکیٹ کے جذبات کا اندازہ کرنے اور ممکنہ بریک آؤٹ کے مواقع کی نشاندہی کرنے کے لئے Ichimoku کلاؤڈ اشارے کو جوڑتی ہے۔ اس میں Ichimoku پر مبنی رجحان فلٹرنگ ، ATR / فیصد ٹریلنگ اسٹاپس ، اور اختیاری منافع لینے کا طریقہ کار ہے۔
دو بنیادی اجزاء ہیں - اچیموکو کلاؤڈ سگنل جو تیزی / کمی کی رفتار کا تعین کرتے ہیں اور ممکنہ بریکآؤٹس کو پکڑنے کے لئے طاقت کے دھماکے کے سگنل۔
رجحان سگنل کی ضرورت ہوتی ہے تبادلوں کی لائن کو اوپر کی لائن کے اوپر عبور کرنے کے لئے ایک اپ ٹرینڈ کی نشاندہی کرنے کے لئے، قیمت کی سلاخوں سے اوپر کی لاگنگ اسپین مضبوط رفتار کی نشاندہی کرتی ہے، اور قیمت کو توڑنے Ichimoku Cloud
اضافی اندراج کے مواقع کے لئے طاقت کے پھٹنے کے سگنل کی ضرورت ہوتی ہے کہ قیمت Cloud
طویل اندراجات اس وقت شروع ہوتے ہیں جب کسی بھی سگنل کو فائر کیا جاتا ہے۔ منافع میں مقفل کرنے کے لئے ATR ، فیصد ، یا Ichimoku قوانین کی بنیاد پر باہر نکلنے والے رک جائیں گے۔
سب سے بڑا فائدہ رجحان اور رفتار تجزیہ دونوں کے لئے Ichimoku کلاؤڈ کا استعمال کرنے سے آتا ہے، سگنل کو الگ الگ اشارے جیسے چلتی اوسط سے زیادہ درست بناتا ہے.
اے ٹی آر / فیصد ٹریلنگ اسٹاپس سے خطرہ کا انتظام بھی ہر تجارت میں نقصان کو کم رکھتا ہے۔ اختیاری منافع لینے سے انعامی مستقل مزاجی میں مزید اضافہ ہوتا ہے۔
Ichimoku بادل کچھ پسماندہ مسائل ہیں. طاقت سگنل بھی رفتار کا پیچھا کرنے کا امکان بڑھاتا ہے.
تاخیر کے خطرے سے نمٹنے کے لئے ، کلاؤڈ کو تیز تر ترتیبات کو بہتر بنائیں۔ رفتار کے خطرے کے ل tight ، تنگ ٹریلنگ اسٹاپس الٹ جانے پر تیزی سے رد عمل ظاہر کرتے ہیں۔
ممکنہ بہتریوں میں شامل ہیں:
مضبوطی کے لئے زیادہ مارکیٹ کے اعداد و شمار پر ٹیسٹ کریں.
مخصوص آلات کے لئے کلاؤڈ پیرامیٹرز کو بہتر بنائیں.
بہتر سگنل ریٹنگ کے لئے LSTM کی طرح ML کی کوشش کریں.
ٹول ٹریپس سے بچنے کے لئے حجم تجزیہ شامل کریں.
یہ Ichimoku نظام مؤثر طریقے سے رجحان کی تجارت کے لئے مارکیٹ کے جذبات کا اندازہ کرتا ہے۔ رفتار کو پکڑنے اور خطرے کو سنبھالنے پر متوازن توجہ بھی اسے عملی بناتی ہے۔ بہتری کی گنجائش ہے لیکن مجموعی طور پر ایک ٹھوس رجحان مندرجہ ذیل فریم ورک ہے۔
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 3h basePeriod: 15m 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/ // © mikul_se //@version=5 strategy("mikul's Ichimoku Cloud Strategy v 2.0", shorttitle="mikul's Ichi strat", overlay=true, margin_long=100, margin_short=100, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // Strategy settings strategySettingsGroup = "Strategy settings" trailSource = input.string(title="Trail Source", defval="Lows/Highs", options=["Lows/Highs", "Close", "Open"], confirm=true, group=strategySettingsGroup) trailMethod = input.string(title="Trail Method", defval="ATR", options=["ATR", "Percent", "Ichi exit"], confirm=true, tooltip="Ichi rules means it follows the rules of the Ichimoku cloud for exiting the trade.", group=strategySettingsGroup) trailPercent = input.float(title="Trail Percent", defval=10, minval=0.1, confirm=true, group=strategySettingsGroup) swingLookback = input.int(title="Lookback", defval=7, confirm=true, group=strategySettingsGroup) atrPeriod = input.int(title="ATR Period", defval=14, confirm=true, group=strategySettingsGroup) atrMultiplier = input.float(title="ATR Multiplier", defval=1.0, confirm=true, group=strategySettingsGroup) addIchiExit = input.bool(false, "Add Ichimoku exit", "You can use this to add Ichimoku cloud exit signals on top of Percent or ATR", group=strategySettingsGroup) useTakeProfit = input.bool(false, "Use Take Profit", confirm=true, group=strategySettingsGroup) takeProfitPercent = input.float(title="Take Profit Percentage", defval=5, minval=0.1, confirm=true, group=strategySettingsGroup) // Ichimoku settings ichimokuSettingsGroup = "Ichimoku settings" conversionPeriods = input.int(9, minval=1, title="Conversion Line Length", group=ichimokuSettingsGroup) basePeriods = input.int(26, minval=1, title="Base Line Length", group=ichimokuSettingsGroup) laggingSpan2Periods = input.int(52, minval=1, title="Leading Span B Length", group=ichimokuSettingsGroup) displacement = input.int(26, minval=1, title="Lagging Span", group=ichimokuSettingsGroup) delta = input.int(26, minval=1, title="Delta", group=ichimokuSettingsGroup) donchian(len) => math.avg(ta.lowest(len), ta.highest(len)) conversionLine = donchian(conversionPeriods) baseLine = donchian(basePeriods) leadLine1 = math.avg(conversionLine, baseLine) leadLine2 = donchian(laggingSpan2Periods) uppercloud = leadLine1[displacement-1] bottomcloud = leadLine2[displacement-1] // Ichi exit variables and calculations delta2 = delta-3 average(len) => math.avg(ta.lowest(len), ta.highest(len)) conversion_line = average(conversionPeriods) base_line = average(basePeriods) lead_line_a = math.avg(conversion_line, base_line) lead_line_b = average(laggingSpan2Periods) lagging_span = close lead_line_a_delta = lead_line_a[delta] lead_line_b_delta = lead_line_b[delta] lagging_span_delta = lagging_span[delta] prisgris = hlc3[delta] prisgris2 = hlc3[delta2] // Declare trailing price variable (stores our trail stop value) var float trailPrice = na float next_trailPrice = na // Get required trailing stop variables atrValue = ta.atr(atrPeriod) * atrMultiplier swingLow = ta.lowest(low, swingLookback) swingHigh = ta.highest(high, swingLookback) // Ichi plotting plot(conversionLine, color=#2962FF, title="Conversion Line") plot(baseLine, color=#B71C1C, title="Base Line") plot(close, offset=-displacement + 1, color=#43A047, title="Lagging Span") p1 = plot(leadLine1, offset=displacement - 1, color=#A5D6A7, title="Leading Span A") p2 = plot(leadLine2, offset=displacement - 1, color=#EF9A9A, title="Leading Span B") fill(p1, p2, color=leadLine1 > leadLine2 ? color.rgb(67, 160, 71, 90) : color.rgb(244, 67, 54, 90)) // Plotting ichi crossover signals ichiup = ta.crossover(conversionLine, baseLine) ichidown = ta.crossover(baseLine, conversionLine) plotshape(ichiup ? conversionLine : na, 'Ichi long 1', style=shape.circle, location=location.absolute, offset=0, color=#00ff00b0, size=size.tiny) plotshape(ichidown ? conversionLine : na, 'Ichi short 1', style=shape.circle, location=location.absolute, offset=0, color=#ff1100c7, size=size.tiny) // Pamp signal signal5 = close > bottomcloud[displacement] and close > uppercloud[displacement] and close > high[displacement] signal5b = close[1] <= bottomcloud[displacement+1] or close[1] <= uppercloud[displacement+1] or close <= high[displacement+1] signal6 = close > bottomcloud and close > uppercloud and close > open signal6b = close[1] <= bottomcloud[1] or close[1] <= uppercloud[1] signal7 = leadLine1 > leadLine2 signal7b = leadLine1[1] <= leadLine2[1] signal8 = conversionLine > baseLine pamp = signal5 and signal6 and signal7 and signal8 and strategy.position_size == 0 and (signal5b or signal6b or signal7b) // Trend signal nsignal5 = close > close[displacement] nsignal6 = close > bottomcloud and close > uppercloud and close > open nsignal8 = ta.crossover(conversionLine, baseLine) and conversionLine > bottomcloud and conversionLine > uppercloud and baseLine > bottomcloud and baseLine > uppercloud trend = nsignal5 and nsignal6 and nsignal8 and strategy.position_size == 0 plotshape(trend, style=shape.triangleup, location=location.belowbar, color=color.green) if (trend or pamp) trailPrice := na strategy.entry(trend ? "Trend" : "Pamp", direction = strategy.long) // Get trailing stop price if trailMethod == "ATR" next_trailPrice := switch trailSource "Close" => strategy.position_size > 0 ? close - atrValue : close + atrValue "Open" => strategy.position_size > 0 ? open - atrValue : open + atrValue => strategy.position_size > 0 ? swingLow - atrValue : swingHigh + atrValue else if trailMethod == "Percent" float percentMulti = strategy.position_size > 0 ? (100 - trailPercent) / 100 : (100 + trailPercent) / 100 next_trailPrice := switch trailSource "Close" => close * percentMulti "Open" => open * percentMulti => strategy.position_size > 0 ? swingLow * percentMulti : swingHigh * percentMulti else short_signal = (ta.crossunder(lagging_span, prisgris)) or ta.crossover(base_line, conversion_line) and ((close)) < ((lead_line_a)) or ta.crossunder(lagging_span, prisgris) or (ta.crossover(base_line, conversion_line) and ((lagging_span) < (lead_line_a)) and ((lagging_span) < (lead_line_b))) if short_signal strategy.close("Trend", "Ichi trend over") strategy.close("Pamp", "Ichi pamp over") alert("Sell") if (addIchiExit) short_signal = (ta.crossunder(lagging_span, prisgris)) or ta.crossover(base_line, conversion_line) and ((close)) < ((lead_line_a)) or ta.crossunder(lagging_span, prisgris) or (ta.crossover(base_line, conversion_line) and ((lagging_span) < (lead_line_a)) and ((lagging_span) < (lead_line_b))) if short_signal strategy.close("Trend", "Ichi trend over") strategy.close("Pamp", "Ichi pamp over") alert("Sell") // Check for trailing stop update if strategy.position_size != 0 and barstate.isconfirmed if (next_trailPrice > trailPrice or na(trailPrice)) and strategy.position_size > 0 trailPrice := next_trailPrice alert(message="Trailing Stop updated for " + syminfo.tickerid + ": " + str.tostring(trailPrice, "#.#####"), freq=alert.freq_once_per_bar_close) if (next_trailPrice < trailPrice or na(trailPrice)) and strategy.position_size < 0 trailPrice := next_trailPrice alert(message="Trailing Stop updated for " + syminfo.tickerid + ": " + str.tostring(trailPrice, "#.#####"), freq=alert.freq_once_per_bar_close) // Draw data to chart plot(strategy.position_size != 0 ? trailPrice : na, color=color.red, title="Trailing Stop") // Take Profit float profitTarget = strategy.position_avg_price * (1 + takeProfitPercent / 100) // Exit trade if stop is hit strategy.exit(id="trend Exit", from_entry="Trend", stop=trailPrice, limit=useTakeProfit ? profitTarget : na) strategy.exit(id="pamp Exit", from_entry="Pamp", stop=trailPrice, limit=useTakeProfit ? profitTarget : na) if strategy.position_size == 0 trailPrice = 0