From 536f5c59e2086e894697fb9191d7daa336235039 Mon Sep 17 00:00:00 2001 From: Hadi Khazaee Asl Date: Mon, 17 Aug 2026 13:58:19 +0330 Subject: [PATCH] Complete x-121.x-rply tool ... --- .../X121 XReplay - Documentation.html | 318 ++++ .../X121 XReplay - Documentation.pdf | Bin 0 -> 282171 bytes .../X121XReplay/x-saherelm.x121.x-reply.mq5 | 1550 +++++++++++++++++ Indicators/x-saherelm.x121.x-reply.mq5 | 472 +++-- 4 files changed, 2185 insertions(+), 155 deletions(-) create mode 100644 Documents/Docs/X121XReplay/X121 XReplay - Documentation.html create mode 100644 Documents/Docs/X121XReplay/X121 XReplay - Documentation.pdf create mode 100644 Documents/Docs/X121XReplay/x-saherelm.x121.x-reply.mq5 diff --git a/Documents/Docs/X121XReplay/X121 XReplay - Documentation.html b/Documents/Docs/X121XReplay/X121 XReplay - Documentation.html new file mode 100644 index 00000000..73b522b3 --- /dev/null +++ b/Documents/Docs/X121XReplay/X121 XReplay - Documentation.html @@ -0,0 +1,318 @@ + + + + + + X121 XReplay - سند پروژه + + + + + +
+

X121 XReplay

+
ابزار پخش مجدد کندل‌ها در متاتریدر ۵
+
TradingView-Style Candle Replay Tool for MetaTrader 5
+
+

نسخه: 1.00

+

توسعه‌دهنده: هادی خزاعی اصل

+

شرکت: فن آوران ساحر علم

+

SaherElm IT Center

+
+
+ + +
+

۱. شرح نیازمندی

+ +

۱.۱ مسئله

+

+ معامله‌گران برای تمرین و بک‌تست دستی استراتژی‌های خود به ابزاری نیاز دارند که بتواند + کندل‌های بازار را از یک نقطه زمانی مشخص پنهان کند و سپس به‌صورت تدریجی + (کندل به کندل) آن‌ها را نمایش دهد. این قابلیت در پلتفرم TradingView با نام + Bar Replay وجود دارد، اما در MetaTrader 5 به‌صورت پیش‌فرض + در دسترس نیست. +

+ +

۱.۲ نیازمندی‌های عملکردی

+ + + + + + + + +
#نیازمندیتوضیح
۱پنهان‌سازی کندل‌هاکندل‌های بعد از نقطه cutoff باید از دید کاربر پنهان شوند
۲نمایش تدریجیامکان نمایش کندل‌ها یکی‌یکی با دکمه یا کیبورد
۳پخش خودکارامکان پخش خودکار کندل‌ها با سرعت قابل تنظیم
۴بازنشانیامکان بازگشت به نقطه شروع با یک کلیک
۵تغییر تایم‌فریمحفظ وضعیت Replay هنگام تغییر تایم‌فریم چارت
۶بازیابی خودکاربازیابی خودکار حالت چارت پس از حذف اندیکاتور
+ +

۱.۳ محدودیت‌های فنی MQL5

+ +
+ + +
+

۲. معرفی ابزار

+ +

۲.۱ مشخصات کلی

+ + + + + + + + + + + +
مشخصهمقدار
نامX121 XReplay
نوعاندیکاتور (Indicator)
پلتفرمMetaTrader 5 (MQL5)
نسخه1.00
فایلx-saherelm.x121.x-reply.mq5
مسیر نصبMQL5/Indicators/
وابستگیx-saherelm.common.lib.mq5
توسعه‌دهندههادی خزاعی اصل
شرکتفن آوران ساحر علم (SaherElm IT Center)
+ +

۲.۲ روش کار

+

+ ابزار از روش DRAW_COLOR_CANDLES با ۵ بافر برای رسم کندل‌ها استفاده می‌کند. + کندل‌های واقعی چارت با تغییر استایل چارت (تبدیل رنگ‌ها به CLR_NONE) + پنهان می‌شوند و کندل‌های Replay توسط بافرهای اندیکاتور رسم می‌شوند. +

+ +

۲.۳ بافرها

+ + + + + + + +
بافرنوعکاربرد
pBarOpenBufferINDICATOR_DATAقیمت Open
pBarHighBufferINDICATOR_DATAقیمت High
pBarLowBufferINDICATOR_DATAقیمت Low
pBarCloseBufferINDICATOR_DATAقیمت Close
pBarColorBufferINDICATOR_COLOR_INDEXایندکس رنگ کندل
+ +

۲.۴ ایندکس‌های رنگ

+ + + + + + +
ایندکسنامکاربرد
0hideColorIDXکندل پنهان (CLR_NONE)
1bullishColorIDXکندل صعودی (clrDodgerBlue)
2bearishColorIDXکندل نزولی (clrDarkOrange)
3neuturalColorIDXکندل خنثی
+ +

۲.۵ پارامترهای ورودی

+ + + + + + + + +
گروهپارامترپیش‌فرضتوضیح
Replay SettingsstartBar20تعداد کندل‌های cutoff
autoPlaySpeed1000سرعت پخش خودکار (ms)
PresentationpanelButtonTextColorclrYellowرنگ متن دکمه‌ها
panelBackgroundColorclrBlackرنگ پس‌زمینه پنل
infoColorclrWhiteرنگ متن اطلاعات
infoPanelBorderColorclrBlackرنگ حاشیه پنل
+ +

۲.۶ کنترل‌ها

+ + + + + + + +
دکمهمتنعملکردکیبورد
Prev|<یک کندل به عقب← / ↓
Play>شروع پخش خودکارSpace
Pause||توقف پخشSpace
Next>|یک کندل به جلو→ / ↑
ResetRبازنشانی به نقطه شروعR
+
+ + +
+

۳. معماری فنی

+ +

۳.۱ ساختار فایل

+ + + + + + + + + + + + + + +
بخشمحتوا
#region Importsکتابخانه‌های مورد نیاز
#region Definitionsثابت‌ها، ساختار XChartStyle، ایندکس‌های رنگ
#region Inputsپارامترهای ورودی کاربر
#region Buffersتعریف ۵ بافر و پلات
#region Variablesمتغیرهای سراسری
#region Event HandlersOnInit، OnDeinit، OnCalculate، OnTimer، OnChartEvent
#region Custm Functionsتوابع کمکی و اعتبارسنجی
#region Value Calculatorsمحاسبه مقادیر بافرها
#region Chart Styleمدیریت استایل چارت
#region UIپنل کنترل و دکمه‌ها
#region Control Actionsاکشن‌های پخش
#region TimeFrame Changeمدیریت تغییر تایم‌فریم
+ +

۳.۲ ساختار XChartStyle

+

این ساختار ۲۱ فیلد دارد و برای ذخیره و بازیابی کامل حالت چارت استفاده می‌شود:

+ + + + + +
دستهفیلدها
شناساییchartId, mode
نمایشshowBidLine, showAskLine, showGrid, showVolumes, showTradeLevels, autoScroll, quickNavigation
رنگ‌هاforeGroundColor, backGroundColor, upColor, downColor, bullishColor, bearishColor, gridColor, bidLineColor, askLineColor, lineColor, stopColor, volumesColor
+ +

۳.۳ مکانیزم پنهان‌سازی

+
+
    +
  1. ReadChartStyle: خواندن حالت فعلی چارت و ذخیره در xReplyChartStyle
  2. +
  3. SaveChartStyleToFile: ذخیره در فایل باینری با FileWriteStruct
  4. +
  5. ساخت clearStyle: کپی از حالت اصلی با رنگ‌های CLR_NONE
  6. +
  7. HideBars: اعمال clearStyle بر چارت → کندل‌های واقعی نامرئی می‌شوند
  8. +
+
+ +

۳.۴ مکانیزم رسم کندل‌های Replay

+
+
    +
  1. OnCalculate: پر کردن بافرهای OHLC از داده‌های واقعی
  2. +
  3. UpdateVisibleColors: تنظیم رنگ بافر بر اساس وضعیت Replay
  4. +
  5. کندل‌های قبل از cutoff → رنگ عادی (صعودی/نزولی)
  6. +
  7. کندل‌های بعد از cutoff → hideColorIDX (پنهان)
  8. +
  9. کندل‌های قابل نمایش Replay → رنگ عادی (صعودی/نزولی)
  10. +
+
+ +

۳.۵ مدیریت تغییر تایم‌فریم

+
+

هنگام تغییر تایم‌فریم (OnDeinit با REASON_CHARTCHANGE):

+
    +
  1. محاسبه ایندکس آخرین کندل نمایش داده شده
  2. +
  3. ذخیره زمان آن کندل در Global Variable
  4. +
  5. ذخیره وضعیت فعال بودن در Global Variable
  6. +
  7. ذخیره تعداد کندل‌های قابل نمایش در Global Variable
  8. +
+

در تایم‌فریم جدید (OnInit):

+
    +
  1. بررسی وجود Global Variables
  2. +
  3. یافتن اولین کندل در تایم‌فریم جدید که شامل زمان ذخیره‌شده است
  4. +
  5. تنظیم xReplyStartBarIndex بر اساس کندل یافت‌شده
  6. +
  7. بازیابی تعداد کندل‌های قابل نمایش
  8. +
  9. حذف Global Variables
  10. +
+
+
+ + +
+

۴. فرآیند و مراحل انجام کار

+ +

۴.۱ خلاصه مراحل توسعه

+ + + + + + + + + + + +
مرحلهشرحنتیجه
۱تحلیل نیازمندی و بررسی محدودیت‌های MQL5شناسایی روش پنهان‌سازی
۲طراحی معماری با DRAW_COLOR_CANDLESتعریف ۵ بافر و ۴ رنگ
۳پیاده‌سازی مدیریت Chart Styleساختار XChartStyle با ۲۱ فیلد
۴پیاده‌سازی ذخیره/بازیابی فایل باینریFileWriteStruct / FileReadStruct
۵پیاده‌سازی پنل UI و کنترل‌ها۵ دکمه + برچسب اطلاعات
۶پیاده‌سازی میانبرهای کیبوردArrow Keys + Space + R
۷پیاده‌سازی تایمر و پخش خودکارStartTimer / StopTimer
۸پیاده‌سازی مدیریت تغییر تایم‌فریمGlobal Variables
۹بهینه‌سازی و تست نهایینسخه 1.00
+ +

۴.۲ تصمیمات فنی کلیدی

+ + + + + + + +
تصمیمدلیل
استفاده از DRAW_COLOR_CANDLESکارآمدترین روش رسم کندل در MQL5 بدون ایجاد اشیاء گرافیکی
پنهان‌سازی با CLR_NONEتنها روش ممکن برای نامرئی کردن کندل‌های واقعی بدون حذف آن‌ها
ذخیره Chart Style در فایل باینریبازیابی خودکار پس از حذف اندیکاتور یا کرش ترمینال
Global Variables برای تایم‌فریمحفظ وضعیت بین OnDeinit و OnInit هنگام تغییر تایم‌فریم
تایمر فقط در حالت Playبهینه‌سازی مصرف CPU در حالت Pause
+ +

۴.۳ ساختار کدنویسی

+

کد بر اساس دستخط کدنویسی شرکت فن آوران ساحر علم نوشته شده است:

+ +
+ + +
+

۵. راهنمای استفاده

+ +

۵.۱ نصب

+
    +
  1. فایل x-saherelm.x121.x-reply.mq5 را در مسیر MQL5/Indicators/ قرار دهید
  2. +
  3. در MetaEditor با F7 کامپایل کنید
  4. +
  5. اندیکاتور را از Navigator روی چارت بکشید
  6. +
  7. پارامتر startBar را تنظیم کنید (تعداد کندل‌های cutoff)
  8. +
+ +

۵.۲ استفاده

+ + +

۵.۳ حذف

+

+ با حذف اندیکاتور از چارت، حالت چارت به‌طور خودکار بازیابی می‌شود، + فایل Chart Style حذف می‌شود و اشیاء UI پاک می‌شوند. +

+ +
+ ✅ نکته: در صورت کرش ترمینال، فایل Chart Style باقی می‌ماند و در اجرای بعدی + به‌جای خواندن از چارت، از فایل خوانده می‌شود. این تضمین می‌کند که حالت چارت همیشه درست بازیابی شود. +
+
+ + + + + + \ No newline at end of file diff --git a/Documents/Docs/X121XReplay/X121 XReplay - Documentation.pdf b/Documents/Docs/X121XReplay/X121 XReplay - Documentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dab7ffeae01a2e560541da4d7af7c52d19d01891 GIT binary patch literal 282171 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 z

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

603Kx*!Jq` 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 Wf!y!l;7cf|sSl}JH=<)?$o~SjRQdh@ literal 0 HcmV?d00001 diff --git a/Documents/Docs/X121XReplay/x-saherelm.x121.x-reply.mq5 b/Documents/Docs/X121XReplay/x-saherelm.x121.x-reply.mq5 new file mode 100644 index 00000000..27681cd9 --- /dev/null +++ b/Documents/Docs/X121XReplay/x-saherelm.x121.x-reply.mq5 @@ -0,0 +1,1550 @@ +/////////////////////////////////////////////////////// +// +// SaherElm IT Center MQL5 Indicator +// --------------------------------------------------- +// Name: X121 XReplay +// Description: SaherElm Replay Tool ... +// +// +// Maintainer: +// ------------ +// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) +// +////////////////////////////////////////////////////// +// +// Global Properties ... +#property copyright "Copyright 2023, SaherElm IT Center" +#property link "https://saherelm.ir" +#property version "1.00" +#property description "SaherElm X121 XReplay Indicator" +#property icon "../Images/SaherElm_Logo_Color.ico" +#property strict + +// #region Imports ... +#include "../Libraries/x-saherelm.common.lib.mq5" +// #endregion + +// #region Definitions ... + +// +#define ShortName "X121-XReplay" + +// +// Global Variable Keys for TimeFrame Change ... +#define GV_ACTIVE_SUFFIX "_Active" +#define GV_TIME_SUFFIX "_LastVisibleTime" +#define GV_VISIBLE_BARS_SUFFIX "_VisibleBars" + +// +#define hideColorIDX 0 +#define bullishColorIDX 1 +#define bearishColorIDX 2 +#define neuturalColorIDX 3 + +// +#define bullishState 1 +#define neuturalState 0 +#define bearishState -1 + +// +#define emptyValue 0.0 + +// +// an strucutre to save Chart Style ... +struct XChartStyle +{ + long chartId; // chart's ID ... + ENUM_CHART_MODE mode; // chart's mode ... + bool showBidLine; // show bid line ... + bool showAskLine; // show ask line ... + bool showGrid; // show grids on chart ... + bool showVolumes; // show volumes ... + bool showTradeLevels; // Displaying trade levels in the chart (levels of open positions, Stop Loss, Take Profit and pending orders) ... + bool autoScroll; // chart autoscroll ... + bool quickNavigation; // chart quick navigation state ... + color foreGroundColor; // chart's foreground color ... + color backGroundColor; // chart's background color ... + color upColor; // Up Color ... + color downColor; // Down Color ... + color bullishColor; // Bullish color ... + color bearishColor; // Bearish color ... + color gridColor; // grid color ... + color bidLineColor; // bid line color ... + color askLineColor; // ask line color ... + color lineColor; // line mode and doji candlestick color ... + color stopColor; // Color of stop order levels (Stop Loss and Take Profit) ... + color volumesColor; // volumes color ... +}; +// #endregion + +// #region Inputs ... +input group "Replay Settings"; +input int startBar = 20; // Cutof Bars +input int autoPlaySpeed = 1000; // Auto-Play Speed (ms) + +input group "Presentation"; +input color panelButtonTextColor = clrYellow; // Button Text Color +input color panelBackgroundColor = clrBlack; // Panel Background +input color infoColor = clrWhite; // Info Color +input color infoPanelBorderColor = clrBlack; // Info Panel Border Color +// #endregion + +// #region Buffers ... +#define buffersCount 0 +#property indicator_chart_window +#property indicator_buffers 5 +#property indicator_plots 1 + +// +// Played Bar ... + +// +#define pBarOpenBufferIndex buffersCount +double pBarOpenBuffer[]; + +// +#define pBarHighBufferIndex buffersCount + 1 +double pBarHighBuffer[]; + +// +#define pBarLowBufferIndex buffersCount + 2 +double pBarLowBuffer[]; + +// +#define pBarCloseBufferIndex buffersCount + 3 +double pBarCloseBuffer[]; + +// +#define pBarColorBufferIndex buffersCount + 4 +double pBarColorBuffer[]; + +// +#define pBarBufferPlotIndex 0 +#property indicator_label1 "XPBar Open;XPBar High;XPBar Low;XPBar Close" +#property indicator_type1 DRAW_COLOR_CANDLES +#property indicator_color1 CLR_NONE, clrDodgerBlue, clrDarkOrange +// #endregion + +// #region Variables ... + +// +int xReplyLimit; +int xReplyMaxLength; +int xReplyFirstBarIndex; + +// +XChartStyle xReplyChartStyle; +XChartStyle xReplyClearStyle; +string xReplyChartStyleFileName = "XChartStyle_" + ShortName + "_" + _Symbol + "_" + ToXString(_Period) + ".bin"; + +// +// UI Object Names ... +string xReplyBtnPlay; +string xReplyBtnPrev; +string xReplyBtnNext; +string xReplyLblInfo; +string xReplyBtnPause; +string xReplyBtnReset; + +// +// Replay State ... +int xReplyCandlesCount = 0; +int xReplyStartBarIndex = 0; +int xReplyCurrentBarIndex = 0; +bool xReplyIsPlaying = false; +ulong xReplyLastPlayTick = 0; +datetime xReplyStartTime = NULL; +int xReplyCurrentVisibleBars = 0; + +// +bool xReplyTimerActive = false; // Timer is active only when playing +int xReplyLastDrawnBarCount = 0; // Track last drawn bar count for incremental draw +bool xReplyIsResumedFromTFChange = false; // Flag: resumed from timeframe change +// #endregion + +// #region Event Handlers ... +/** + * Initialize Indicator ... + * + * @return ( int ) + */ +int OnInit() +{ + // + bool has = false; + + // + // Validate Inputs ... + has = ValidateInputs(); + if (!has) + { + return INIT_PARAMETERS_INCORRECT; + } + + // + // because in some cases we may have more than one input for + // calculation and we must prevent any calculation + // untill we pass the biggest input length, here we get max Input length + // and then wait until pass it ... + xReplyMaxLength = ExtractxReplyMaxLengthOfInputs(); + + // + // Initial Requirements ... + has = InitRequirements(); + if (!has) + { + return INIT_FAILED; + } + + // + // Define Index Buffers ... + DefineBuffers(); + + // + // Set Indicator ShortName ... + SetIndicatorName(); + + // + // Apply Chart Style ... + ApplyCustomChartStyle(); + + // + xReplyIsResumedFromTFChange = TryResumeFromTimeFrameChange(); + if (!xReplyIsResumedFromTFChange) + { + // + int idx = startBar; + if (idx >= Bars(_Symbol, _Period)) + { + idx = Bars(_Symbol, _Period) - 10; + } + + // + xReplyStartTime = iTime(_Symbol, _Period, idx); + xReplyStartBarIndex = iBarShift(_Symbol, _Period, xReplyStartTime, false); + has = xReplyStartBarIndex >= 0; + if (!has) + { + return INIT_PARAMETERS_INCORRECT; + } + + // + xReplyCurrentVisibleBars = 1; + xReplyCurrentBarIndex = xReplyStartBarIndex; + } + else + { + // + // Validate Resumed State ... + if (xReplyStartBarIndex < 0) + { + return INIT_PARAMETERS_INCORRECT; + } + } + + // + // Create UI Panel ... + CreatePanel(); + + // + // Initial Draw ... + DrawVisibleCandles(); + UpdateInfoLabel(); + + // + // Init Succeed ... + return INIT_SUCCEEDED; + + // +} + +/** + * De Initialize Indicator ... + * + * @param reason: Integer, De Initialization Reason ... + * - REASON_PROGRAM 0 The EA has stopped working calling the ExpertRemove() function + * - REASON_REMOVE 1 Program removed from a chart + * - REASON_RECOMPILE 2 Program recompiled + * - REASON_CHARTCHANGE 3 A symbol or a chart period is changed + * - REASON_CHARTCLOSE 4 Chart closed + * - REASON_PARAMETERS 5 Inputs changed by a user + * - REASON_ACCOUNT 6 Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings + * - REASON_TEMPLATE 7 Another chart template applied + * - REASON_INITFAILED 8 The OnInit() handler returned a non-zero value + * - REASON_CLOSE 9 Terminal closed + */ +void OnDeinit(const int reason) +{ + if (reason == REASON_CHARTCHANGE) + { + // + // Save Global Variables ... + SaveReplayStateForTimeFrameChange(); + } + else + { + // + // Remove Global Variables for Other Reasons ... + RemoveReplayGlobalVariables(); + } + + // + // Kill Timer if it's Activated ... + if (xReplyTimerActive) + { + StopTimer(); + } + + // + // Show Saved Chart Style ... + ShowBars(); + + // + // Remove Chart Style File ... + FileDelete(xReplyChartStyleFileName); + + // + // Remove UI Objects ... + RemoveUIObjects(); +} + +/** + * Calculate Bars ... + * + * @param rates_total: Integer, Total Bars on Chart ... + * @param prev_calculated: Integer, Total Calculated Bars on Charts ... + * @param time: DateTime Array, History of Open Time ... + * @param open: Double Array, History of Open Prices ... + * @param high: Double Array, History of High Prices ... + * @param low: Double Array, History of Low Prices ... + * @param close: Double Array, History of Close Prices ... + * @param tick_volume: Long, History of Tick Volumes on Bar ... + * @param volume: Long, History of Trade Volumes ... + * @param spread: Double, History of Spread Price ... + * + * @return ( int ) + */ +int OnCalculate( + const int rates_total, + const int prev_calculated, + const datetime &time[], + const double &open[], + const double &high[], + const double &low[], + const double &close[], + const long &tick_volume[], + const long &volume[], + const int &spread[] // +) +{ + // + // Prepare Buffers ... + ArraySetAsSeries(time, true); + ArraySetAsSeries(open, true); + ArraySetAsSeries(high, true); + ArraySetAsSeries(low, true); + ArraySetAsSeries(close, true); + ArraySetAsSeries(tick_volume, true); + ArraySetAsSeries(volume, true); + ArraySetAsSeries(spread, true); + + // + // Calculate Size of Loop ... + xReplyLimit = (prev_calculated > rates_total || prev_calculated <= 0) + // + // First Call ... + ? rates_total - 1 + // + // Subsequent calls: only new bars + current forming bar ... + : (rates_total - prev_calculated) + 1; + + // + // Main Loop ... + for (int i = xReplyLimit - 1; i >= 0 && !IsStopped(); i--) + { + // + CalculateBuffers( + i, + prev_calculated, + rates_total, + // + open, + high, + close, + low, + tick_volume // + ); + } + + // + // Incremental color update ... + UpdateVisibleColors(); + + // + return rates_total; +} + +/** + * Handle Timer Event ... + */ +void OnTimer() +{ + // + if (!xReplyIsPlaying) + { + // + // Stop Timer ... + if (xReplyTimerActive) + { + StopTimer(); + } + return; + } + + // + ulong now = GetTickCount64(); + if (now - xReplyLastPlayTick >= (ulong)autoPlaySpeed) + { + // + xReplyLastPlayTick = now; + StepForward(); + + // + // Auto Stop at Current Market Bar ... + if (xReplyCurrentBarIndex <= 0) + { + // + xReplyIsPlaying = false; + ObjectSetInteger(0, xReplyBtnPlay, OBJPROP_STATE, false); + ObjectSetInteger(0, xReplyBtnPause, OBJPROP_STATE, true); + } + } +} + +/** + * Handle Chart Events ... + * + * @param id: int, Event id ... + * @param lparam: long, Event Long Parameter ... + * @param dparam: double, Event Double Parameter ... + * @param sparam: string, Event String Parameter ... + */ +void OnChartEvent( + const int id, // Event id ... + const long &lparam, // Event Long Parameter ... + const double &dparam, // Event Double Parameter ... + const string &sparam // Event String Parameter ... +) +{ + // + // Button Clicks ... + if (id == CHARTEVENT_OBJECT_CLICK) + { + // + if (sparam == xReplyBtnNext) + { + // + StepForward(); + ObjectSetInteger(0, xReplyBtnNext, OBJPROP_STATE, false); + ChartRedraw(); + } + else if (sparam == xReplyBtnPrev) + { + // + StepBackward(); + ObjectSetInteger(0, xReplyBtnPrev, OBJPROP_STATE, false); + ChartRedraw(); + } + else if (sparam == xReplyBtnPlay) + { + // + xReplyIsPlaying = true; + ObjectSetInteger(0, xReplyBtnPlay, OBJPROP_STATE, true); + ObjectSetInteger(0, xReplyBtnPause, OBJPROP_STATE, false); + ChartRedraw(); + } + else if (sparam == xReplyBtnPause) + { + // + xReplyIsPlaying = false; + ObjectSetInteger(0, xReplyBtnPause, OBJPROP_STATE, true); + ObjectSetInteger(0, xReplyBtnPlay, OBJPROP_STATE, false); + ChartRedraw(); + } + else if (sparam == xReplyBtnReset) + { + // + ResetReplay(); + ObjectSetInteger(0, xReplyBtnReset, OBJPROP_STATE, false); + ChartRedraw(); + } + // + return; + } + + // + // Keyboard Shortcuts ... + if (id == CHARTEVENT_KEYDOWN) + { + // + switch ((int)lparam) + { + // + // Arrow Right ... + case 38: + case 39: + StepForward(); + break; + // + // Arrow Left ... + case 37: + case 40: + StepBackward(); + break; + // + // Space ... + case 32: + xReplyIsPlaying = !xReplyIsPlaying; + ObjectSetInteger(0, xReplyBtnPlay, OBJPROP_STATE, xReplyIsPlaying); + ObjectSetInteger(0, xReplyBtnPause, OBJPROP_STATE, !xReplyIsPlaying); + ChartRedraw(); + break; + // + // R ... + case 82: + ResetReplay(); + break; + } + + // + return; + } +} +// #endregion + +// #region Custm Functions ... +/** + * Set Indicator Short Name and also we can define Buffers Labels ... + */ +void SetIndicatorName() +{ + // + IndicatorSetInteger(INDICATOR_DIGITS, _Digits); + IndicatorSetString(INDICATOR_SHORTNAME, ShortName); +} + +/** + * Validate Input Args for Initialization ... + * + * @return ( bool ) + */ +bool ValidateInputs() +{ + // + bool result = false; + + // + result = + // + startBar > 0 + // + ; + + // + return result; +} + +/** + * Extract Max Length of Inputs ... + * + * @return ( int ) + */ +int ExtractxReplyMaxLengthOfInputs() +{ + // + int result = 0; + + // + + // + return result; +} + +/** + * Initial all Indicator Requirements ... + * + * @return ( false ) + * + */ +bool InitRequirements() +{ + // + bool result = false; + + // + // Handlers ... + result = true; + + // + return result; +} + +/** + * Define Required Buffers ... + */ +void DefineBuffers() +{ + // #region Plot Buffers ... + + // + // SIGNAL Bar ... + + // + // Signal Bars Color ... + ArraySetAsSeries(pBarColorBuffer, true); + SetIndexBuffer(pBarColorBufferIndex, pBarColorBuffer, INDICATOR_COLOR_INDEX); + + // + // Set EMPTY_VALUE on XHK Bar Buffer ... + PlotIndexSetDouble(pBarBufferPlotIndex, PLOT_EMPTY_VALUE, emptyValue); + PlotIndexSetInteger(pBarBufferPlotIndex, PLOT_SHOW_DATA, false); + + // + // Open ... + ArraySetAsSeries(pBarOpenBuffer, true); + SetIndexBuffer(pBarOpenBufferIndex, pBarOpenBuffer, INDICATOR_DATA); + + // + // High ... + ArraySetAsSeries(pBarHighBuffer, true); + SetIndexBuffer(pBarHighBufferIndex, pBarHighBuffer, INDICATOR_DATA); + + // + // Low ... + ArraySetAsSeries(pBarLowBuffer, true); + SetIndexBuffer(pBarLowBufferIndex, pBarLowBuffer, INDICATOR_DATA); + + // + // Close ... + ArraySetAsSeries(pBarCloseBuffer, true); + SetIndexBuffer(pBarCloseBufferIndex, pBarCloseBuffer, INDICATOR_DATA); + // #endregion +} + +/** + * Calculate Custom Buffers ... + * + * @param barIndex: Integer, Represent Current Bar ... + * @param prevCalculated: Integer, Represent Previous Calculated Bars ... + * @param ratesTotal: Integer, Represents All Available Bars ... + * @param open: Double Array, History of Open Prices ... + * @param high: Double Array, History of High Prices ... + * @param close: Double Array, History of Close Prices ... + * @param low: Double Array, History of Low Prices ... + * @param tickVolume: Long, History of Tick Volumes on Bar ... + */ +void CalculateBuffers( + int barIndex, + const int prevCalculated, + const int ratesTotal, + const double &open[], + const double &high[], + const double &close[], + const double &low[], + const long &tickVolume[] // +) +{ + // + int barsxReplyLimit = ratesTotal; + xReplyFirstBarIndex = barsxReplyLimit - 1; + + // + bool canCalculate = + barIndex <= barsxReplyLimit; + if (canCalculate) + { + // + // Calculate Values ... + CalculateValues( + barIndex, + prevCalculated, + ratesTotal, + open, + high, + close, + low, + tickVolume // + ); + } + else + { + FillBuffersZero(barIndex); + } +} + +/** + * Fill All Bufers to Zero Vlue for Specified Bar Index ... + * + * @param barIndex: Integer ... + */ +void FillBuffersZero(int barIndex) +{ + pBarColorBuffer[barIndex] = hideColorIDX; +} + +/** + * Start Timer only when needed ... + */ +void StartTimer() +{ + // + if (!xReplyTimerActive) + { + EventSetMillisecondTimer(100); + xReplyTimerActive = true; + } +} + +/** + * Stop Timer to save resources ... + */ +void StopTimer() +{ + // + if (xReplyTimerActive) + { + EventKillTimer(); + xReplyTimerActive = false; + } +} +// #endregion + +// #region Value Calculators ... +/** + * Calculate Values ... + * + * @param barIndex: int, Specified Bar Index ... + * @param prevCalculated: int, Provides Previous Calculated Bars ... + * @param ratesTotal: int, Provides All Availabled Bars ... + * @param open: double Collection, Provides Open Prices Time Series ... + * @param high: double Collection, Provides High Prices Time Series ... + * @param close: double Collection, Provides Close Prices Time Series ... + * @param low: double Collection, Provides Low Prices Time Series ... + * @param tickVolume: long Collection, Provides Ticks Volume Prices Time Series ... + */ +void CalculateValues( + int barIndex, + const int prevCalculated, + const int ratesTotal, + const double &open[], + const double &high[], + const double &close[], + const double &low[], + const long &tickVolume[] // +) +{ + // + int lastBarIndex = barIndex + 1; + int maxBarIndex = ratesTotal; + bool isFirstBar = barIndex == xReplyFirstBarIndex; + + // + // Filling Buffers ... + pBarLowBuffer[barIndex] = low[barIndex]; + pBarOpenBuffer[barIndex] = open[barIndex]; + pBarHighBuffer[barIndex] = high[barIndex]; + pBarCloseBuffer[barIndex] = close[barIndex]; + + // + // Actually Bars Color Index ... + int colorIDX = + close[barIndex] >= open[barIndex] + ? bullishColorIDX + : close[barIndex] < open[barIndex] + ? bearishColorIDX + : neuturalColorIDX; + + // + int selectedColorIDX = colorIDX; + if (barIndex <= startBar) + { + selectedColorIDX = hideColorIDX; + } + pBarColorBuffer[barIndex] = selectedColorIDX; +} +// #endregion + +// #region Chart Style ... +/** + * Show Bars ... + */ +void ShowBars() +{ + LoadChartStyleFromFile(xReplyChartStyle); + SetChartStyle(xReplyChartStyle); +} + +/** + * Show Hide ... + */ +void HideBars() +{ + SetChartStyle(xReplyClearStyle); +} + +/** + * Read and Save Chart Style ... + */ +void ReadChartStyle() +{ + // + if (LoadChartStyleFromFile(xReplyChartStyle)) + { + return; + } + + // + // Retrieve Current Chart ID ... + long chartId = ChartID(); + xReplyChartStyle.chartId = chartId; + + // + // Retrieve Chart Mode ... + xReplyChartStyle.mode = (ENUM_CHART_MODE)ChartGetInteger(chartId, CHART_MODE); + + // + xReplyChartStyle.showBidLine = (bool)ChartGetInteger(chartId, CHART_SHOW_BID_LINE); + xReplyChartStyle.showAskLine = (bool)ChartGetInteger(chartId, CHART_SHOW_ASK_LINE); + xReplyChartStyle.showGrid = (bool)ChartGetInteger(chartId, CHART_SHOW_GRID); + xReplyChartStyle.showVolumes = (bool)ChartGetInteger(chartId, CHART_SHOW_VOLUMES); + xReplyChartStyle.showTradeLevels = (bool)ChartGetInteger(chartId, CHART_SHOW_TRADE_LEVELS); + xReplyChartStyle.autoScroll = (bool)ChartGetInteger(chartId, CHART_AUTOSCROLL); + xReplyChartStyle.quickNavigation = (bool)ChartGetInteger(chartId, CHART_QUICK_NAVIGATION); + + // + xReplyChartStyle.foreGroundColor = (color)ChartGetInteger(chartId, CHART_COLOR_FOREGROUND); + xReplyChartStyle.backGroundColor = (color)ChartGetInteger(chartId, CHART_COLOR_BACKGROUND); + xReplyChartStyle.upColor = (color)ChartGetInteger(chartId, CHART_COLOR_CHART_UP); + xReplyChartStyle.downColor = (color)ChartGetInteger(chartId, CHART_COLOR_CHART_DOWN); + xReplyChartStyle.bullishColor = (color)ChartGetInteger(chartId, CHART_COLOR_CANDLE_BULL); + xReplyChartStyle.bearishColor = (color)ChartGetInteger(chartId, CHART_COLOR_CANDLE_BEAR); + xReplyChartStyle.gridColor = (color)ChartGetInteger(chartId, CHART_COLOR_GRID); + xReplyChartStyle.bidLineColor = (color)ChartGetInteger(chartId, CHART_COLOR_BID); + xReplyChartStyle.askLineColor = (color)ChartGetInteger(chartId, CHART_COLOR_ASK); + xReplyChartStyle.stopColor = (color)ChartGetInteger(chartId, CHART_COLOR_STOP_LEVEL); + xReplyChartStyle.lineColor = (color)ChartGetInteger(chartId, CHART_COLOR_CHART_LINE); + xReplyChartStyle.volumesColor = (color)ChartGetInteger(chartId, CHART_COLOR_VOLUME); + + // + SaveChartStyleToFile(xReplyChartStyle); +} + +/** + * Setting Chart Style based on given Configuration ... + * + * @param mChartStyle: XChartStyle instance ... + */ +void SetChartStyle( + XChartStyle &mChartStyle // Chart Style to Apply +) +{ + // + ApplyChartStyle( + mChartStyle.chartId, + mChartStyle.mode, + mChartStyle.showBidLine, + mChartStyle.showAskLine, + mChartStyle.showGrid, + mChartStyle.showVolumes, + mChartStyle.showTradeLevels, + mChartStyle.autoScroll, + mChartStyle.quickNavigation, + mChartStyle.foreGroundColor, + mChartStyle.backGroundColor, + mChartStyle.upColor, + mChartStyle.downColor, + mChartStyle.bullishColor, + mChartStyle.bearishColor, + mChartStyle.gridColor, + mChartStyle.bidLineColor, + mChartStyle.askLineColor, + mChartStyle.lineColor, + mChartStyle.stopColor, + mChartStyle.volumesColor); +} + +/** + * Setting Chart Style by Providing required data ... + * + * @param mChartId: int, Chart ID ... + * @param mMode: ENUM_CHART_MODE, Chart Bars Style ... + * @param mShowBidLine: bool, Show Bid Line ... + * @param mShowAskLine: bool, Show Ask Line ... + * @param mShowGrid: bool, Show Grids ... + * @param mShowVolumes: bool, Show Volumes ... + * @param mShowTradeLevels: bool, Show Trade Levels ... + * @param mAutoScroll: bool, Auto Scroll Chart ... + * @param mQuickNavigation: bool, Show Quick Navigations ... + * @param mForeGroundColor: color, Foreground Color ... + * @param mBackGroundColor: color, Background Color ... + * @param mUpColor: color, Up Bars Color ... + * @param mDownColor: color, Down Bars Color ... + * @param mBullishColor: color, Bullish Bars Color ... + * @param mBearishColor: color, Bearish Bars Color ... + * @param mGridColor: color, Chart Grid Color ... + * @param mBidLineColor: color, Bid Line Color ... + * @param mAskLineColor: color, Ask Line Color ... + * @param mLineColor: color, Bars Line Color ... + * @param mStopColor: color, Trading Stop Color ... + * @param mVolumesColor: color, Volumes Bar Color ... + */ +void ApplyChartStyle( + long mChartId = -1, // chart's ID + ENUM_CHART_MODE mMode = CHART_CANDLES, // chart's mMode + bool mShowBidLine = true, // show bid line + bool mShowAskLine = true, // show ask line + bool mShowGrid = false, // show grids on chart + bool mShowVolumes = false, // show volumes + bool mShowTradeLevels = true, // Displaying trade levels in the chart (levels of open positions, Stop Loss, Take Profit and pending orders) + bool mAutoScroll = true, // chart autoscroll + bool mQuickNavigation = true, // chart quick navigation state + color mForeGroundColor = clrWhite, // chart's foreground color + color mBackGroundColor = clrBlack, // chart's background color + color mUpColor = clrGreen, // Up Color + color mDownColor = clrRed, // Down Color + color mBullishColor = clrGreen, // Bullish color + color mBearishColor = clrRed, // Bearish color + color mGridColor = clrGray, // grid color + color mBidLineColor = clrGray, // bid line color + color mAskLineColor = clrRed, // ask line color + color mLineColor = clrLime, // line mMode and doji candlestick color + color mStopColor = clrGold, // Color of stop order levels (Stop Loss and Take Profit) + color mVolumesColor = clrGreen // volumes color +) +{ + // + // Validate Args ... + if (mChartId == -1) + { + mChartId = 0; + } + + // + ChartSetInteger(mChartId, CHART_MODE, mMode); + ChartSetInteger(mChartId, CHART_SHOW_BID_LINE, mShowBidLine); + ChartSetInteger(mChartId, CHART_SHOW_ASK_LINE, mShowAskLine); + ChartSetInteger(mChartId, CHART_SHOW_GRID, mShowGrid); + ChartSetInteger(mChartId, CHART_SHOW_VOLUMES, mShowVolumes); + ChartSetInteger(mChartId, CHART_SHOW_TRADE_LEVELS, mShowTradeLevels); + ChartSetInteger(mChartId, CHART_AUTOSCROLL, mAutoScroll); + ChartSetInteger(mChartId, CHART_QUICK_NAVIGATION, mQuickNavigation); + ChartSetInteger(mChartId, CHART_COLOR_FOREGROUND, mForeGroundColor); + ChartSetInteger(mChartId, CHART_COLOR_BACKGROUND, mBackGroundColor); + ChartSetInteger(mChartId, CHART_COLOR_CHART_UP, mUpColor); + ChartSetInteger(mChartId, CHART_COLOR_CHART_DOWN, mDownColor); + ChartSetInteger(mChartId, CHART_COLOR_CANDLE_BULL, mBullishColor); + ChartSetInteger(mChartId, CHART_COLOR_CANDLE_BEAR, mBearishColor); + ChartSetInteger(mChartId, CHART_COLOR_GRID, mGridColor); + ChartSetInteger(mChartId, CHART_COLOR_BID, mBidLineColor); + ChartSetInteger(mChartId, CHART_COLOR_ASK, mAskLineColor); + ChartSetInteger(mChartId, CHART_COLOR_STOP_LEVEL, mStopColor); + ChartSetInteger(mChartId, CHART_COLOR_CHART_LINE, mLineColor); + ChartSetInteger(mChartId, CHART_COLOR_VOLUME, mVolumesColor); + + // + ChartRedraw(); +} + +/** + * Apply Custom Chart Style ... + */ +void ApplyCustomChartStyle() +{ + // + // Read Current Chart Config and Store it ... + ReadChartStyle(); + + // + // After Reading Current Chart Style ... + // we have to Save Configs and Change Styles ... + xReplyClearStyle = xReplyChartStyle; + + // + xReplyClearStyle.upColor = CLR_NONE; + xReplyClearStyle.downColor = CLR_NONE; + xReplyClearStyle.lineColor = CLR_NONE; + xReplyClearStyle.bullishColor = CLR_NONE; + xReplyClearStyle.bearishColor = CLR_NONE; + + // + // Decide to Show or not Candles based on User Input ... + HideBars(); +} + +/** + * Save Chart Style ... + * + * @param style: XChartStyle instance ... + * + * @return ( bool ) + */ +bool SaveChartStyleToFile( + const XChartStyle &style // +) +{ + // + bool result = false; + + // + // Create a File Handler for Writing Content to File ... + int fileHandler = FileOpen(xReplyChartStyleFileName, FILE_WRITE | FILE_BIN | FILE_COMMON); + result = fileHandler != INVALID_HANDLE; + if (!result) + { + return result; + } + + // + // Writing Struct to File ... + uint bytesWritten = FileWriteStruct(fileHandler, style); + FileClose(fileHandler); + result = bytesWritten > 0; + + // + return result; +} + +/** + * Load Chart Style ... + * + * @param style: XChartStyle instance ... + * + * @return ( bool ) + */ +bool LoadChartStyleFromFile( + XChartStyle &style // +) +{ + // + bool result = false; + + // + // Create a File Handler for Reading File Content ... + int fileHandler = FileOpen(xReplyChartStyleFileName, FILE_READ | FILE_BIN | FILE_COMMON); + result = fileHandler != INVALID_HANDLE; + if (!result) + { + return result; + } + + // + // Read File Content and Fill Struct ... + uint bytesRead = FileReadStruct(fileHandler, style); + FileClose(fileHandler); + + // + result = bytesRead > 0; + if (!result) + { + return result; + } + + // + return result; +} +// #endregion + +// #region UI ... +/** + * Create UI Panel ... + */ +void CreatePanel() +{ + // + xReplyBtnPlay = ShortName + "_BTN_PLAY"; + xReplyBtnPause = ShortName + "_BTN_PAUSE"; + xReplyBtnPrev = ShortName + "_BTN_PREV"; + xReplyBtnNext = ShortName + "_BTN_NEXT"; + xReplyBtnReset = ShortName + "_BTN_RESET"; + xReplyLblInfo = ShortName + "_LBL_INFO"; + + // + int x = 20; + int y = 30; + int w = 45; + int h = 30; + int gap = 5; + + // + // Prev Button ... + CreateButton( + xReplyBtnPrev, + x, + y, + w, + h, + "|<", + clrLightSkyBlue // + ); + + // + // Play Button ... + CreateButton( + xReplyBtnPlay, + x + (w + gap) * 1, + y, + w, + h, + ">", + clrLimeGreen // + ); + + // + // Pause Button ... + CreateButton( + xReplyBtnPause, + x + (w + gap) * 2, + y, + w, + h, + "||", + clrGoldenrod // + ); + + // + // Next Button ... + CreateButton( + xReplyBtnNext, + x + (w + gap) * 3, + y, + w, + h, + ">|", + clrLightSkyBlue // + ); + + // + // Reset Button ... + CreateButton( + xReplyBtnReset, + x + (w + gap) * 4, + y, + w, + h, + "R", + clrTomato // + ); + + // + // Info Label ... + ObjectCreate(0, xReplyLblInfo, OBJ_EDIT, 0, 0, 0); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_XDISTANCE, x); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_YDISTANCE, y + h + gap); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_XSIZE, (w + gap) * 5 - gap); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_YSIZE, 22); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_BGCOLOR, panelBackgroundColor); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_COLOR, infoColor); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_BORDER_COLOR, infoPanelBorderColor); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_READONLY, true); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_FONTSIZE, 9); + ObjectSetString(0, xReplyLblInfo, OBJPROP_FONT, "Arial"); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_CORNER, CORNER_LEFT_UPPER); + ObjectSetInteger(0, xReplyLblInfo, OBJPROP_SELECTABLE, false); + + // + ChartRedraw(); +} + +/** + * Create Specified Button ... + * + * @param name: string, Object Name ... + * @param x: int, X Position ... + * @param y: int, Y Position ... + * @param w: int, Width ... + * @param h: int, Height ... + * @param text: int Button Text ... + * @param borderClr: color, Border Color ... + */ +void CreateButton( + string name, // Button Name ... + int x, // X Position ... + int y, // Y Position ... + int w, // Width ... + int h, // Height ... + string text, // Button Text ... + color borderClr // Border Color ... +) +{ + // + ObjectCreate(0, name, OBJ_BUTTON, 0, 0, 0); + ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x); + ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y); + ObjectSetInteger(0, name, OBJPROP_XSIZE, w); + ObjectSetInteger(0, name, OBJPROP_YSIZE, h); + ObjectSetInteger(0, name, OBJPROP_BGCOLOR, panelBackgroundColor); + ObjectSetInteger(0, name, OBJPROP_COLOR, panelButtonTextColor); + ObjectSetInteger(0, name, OBJPROP_BORDER_COLOR, borderClr); + ObjectSetInteger(0, name, OBJPROP_FONTSIZE, 11); + ObjectSetString(0, name, OBJPROP_FONT, "Arial Bold"); + ObjectSetString(0, name, OBJPROP_TEXT, text); + ObjectSetInteger(0, name, OBJPROP_CORNER, CORNER_LEFT_UPPER); + ObjectSetInteger(0, name, OBJPROP_STATE, false); + ObjectSetInteger(0, name, OBJPROP_SELECTABLE, false); +} + +/** + * Remove All Drawn Objects ... + */ +void RemoveUIObjects() +{ + // + long cid = ChartID(); + for (int i = ObjectsTotal(cid, 0) - 1; i >= 0; i--) + { + // + string name = ObjectName(cid, i, 0); + if (StringFind(name, ShortName + "_") >= 0) + { + ObjectDelete(cid, name); + } + } + + // + ChartRedraw(); +} + +/** + * Update Information Label ... + */ +void UpdateInfoLabel() +{ + // + int totalBars = Bars(_Symbol, _Period); + int shownBars = totalBars - xReplyCurrentBarIndex; + + // + datetime barTime = iTime(_Symbol, _Period, xReplyCurrentBarIndex); + string status = xReplyIsPlaying + ? "PLAYING" + : "PAUSED"; + // + string info = StringFormat( + "Bar: %d / %d | %s | %s", + shownBars, + totalBars, + TimeToString(barTime, TIME_DATE | TIME_MINUTES), + status // + ); + + // + ObjectSetString(0, xReplyLblInfo, OBJPROP_TEXT, info); + + // + ChartRedraw(); +} + +/** + * Handle Show Visible Bars ... + */ +void DrawVisibleCandles() +{ + // + if (ArraySize(pBarColorBuffer) <= 0) + { + return; + } + + // + UpdateVisibleColors(); + + // + // Track drawn count for future optimization ... + xReplyLastDrawnBarCount = xReplyCurrentVisibleBars; + + // + ChartRedraw(); +} + +/** + * Called after OHLC buffers are filled in OnCalculate + */ +void UpdateVisibleColors() +{ + // + int bufferSize = ArraySize(pBarColorBuffer); + if (bufferSize <= 0) + { + return; + } + + // + \ for (int i = 0; i < xReplyCurrentBarIndex && i < bufferSize; i++) + { + pBarColorBuffer[i] = hideColorIDX; + } + + // + for (int i = xReplyCurrentBarIndex; i < bufferSize; i++) + { + // + bool isBullish = pBarCloseBuffer[i] >= pBarOpenBuffer[i]; + pBarColorBuffer[i] = isBullish ? bullishColorIDX : bearishColorIDX; + } + + // + ChartRedraw(); +} +// #endregion + +// #region Control Actions ... +/** + * Handle Step Forward Action ... + */ +void StepForward() +{ + // + if (xReplyCurrentBarIndex > 0) + { + // + xReplyCurrentBarIndex--; + DrawVisibleCandles(); + UpdateInfoLabel(); + ScrollToBar(xReplyCurrentBarIndex); + } +} + +/** + * Handle Step Backward Action ... + */ +void StepBackward() +{ + // + int totalBars = Bars(_Symbol, _Period); + if (xReplyCurrentBarIndex < totalBars - 1) + { + // + xReplyCurrentBarIndex++; + DrawVisibleCandles(); + UpdateInfoLabel(); + ScrollToBar(xReplyCurrentBarIndex); + } +} + +/** + * Handle Reset Reply Action ... + */ +void ResetReplay() +{ + // + xReplyCurrentBarIndex = xReplyStartBarIndex; + xReplyIsPlaying = false; + + // + ObjectSetInteger(0, xReplyBtnPlay, OBJPROP_STATE, false); + ObjectSetInteger(0, xReplyBtnPause, OBJPROP_STATE, true); + + // + DrawVisibleCandles(); + UpdateInfoLabel(); + + // + ScrollToBar(xReplyStartBarIndex); +} + +/** + * Scroll Chart to Specified Bar Index ... + * + * @param barIndex: int, Specified Bar Index ... + */ +void ScrollToBar(int barIndex) +{ + // + // Validate Bar Index ... + int totalBars = Bars(_Symbol, _Period); + if (barIndex < 0 || barIndex >= totalBars) + { + return; + } + + // + // Set First Visible Bar to Specified Index ... + ChartSetInteger(ChartID(), CHART_FIRST_VISIBLE_BAR, barIndex); + ChartRedraw(); +} +// #endregion + +// #region TimeFrame Change State Management ... +/** + * Save Replay State for TimeFrame Change ... + * Called in OnDeinit when REASON_CHARTCHANGE + */ +void SaveReplayStateForTimeFrameChange() +{ + // + // Calculate Last Visible Bar Index ... + int lastVisibleBarIndex = xReplyStartBarIndex - xReplyCurrentVisibleBars + 1; + if (lastVisibleBarIndex < 0) + { + lastVisibleBarIndex = 0; + } + + // + // Retrieve Last Visible Bar Time ... + datetime lastVisibleTime = iTime(_Symbol, _Period, lastVisibleBarIndex); + + // + // Validate Time ... + if (!IsXValid(lastVisibleTime)) + { + return; + } + + // + // Generate Global Variable Names ... + string gvTimeName = ShortName + _Symbol + GV_TIME_SUFFIX; + string gvActiveName = ShortName + _Symbol + GV_ACTIVE_SUFFIX; + string gvVisibleBarsName = ShortName + _Symbol + GV_VISIBLE_BARS_SUFFIX; + + // + // Save Last Visible Time ... + GlobalVariableSet(gvTimeName, (double)lastVisibleTime); + + // + // Save Active State ... + GlobalVariableSet(gvActiveName, 1.0); + + // + // Save Visible Bars Count ... + GlobalVariableSet(gvVisibleBarsName, (double)xReplyCurrentVisibleBars); +} + +/** + * Try to Resume Replay from TimeFrame Change ... + * Called in OnInit to check if we should resume + * + * @return ( bool ) - true if resumed successfully + */ +bool TryResumeFromTimeFrameChange() +{ + // + bool result = false; + + // + // Generate Global Variable Names ... + string gvTimeName = ShortName + _Symbol + GV_TIME_SUFFIX; + string gvActiveName = ShortName + _Symbol + GV_ACTIVE_SUFFIX; + string gvVisibleBarsName = ShortName + _Symbol + GV_VISIBLE_BARS_SUFFIX; + + // + // Check Global Variables Exists ... + bool wasActive = GlobalVariableCheck(gvActiveName); + bool hasSavedTime = GlobalVariableCheck(gvTimeName); + + // + result = wasActive && hasSavedTime; + if (!result) + { + // + // Clean up if partial state exists ... + RemoveReplayGlobalVariables(); + return result; + } + + // + // Retrieve Saved Time ... + double savedTimeDouble = GlobalVariableGet(gvTimeName); + datetime savedTime = (datetime)savedTimeDouble; + + // + // Validate Saved Time ... + result = IsXValid(savedTime); + if (!result) + { + // + // Clean up if partial state exists ... + RemoveReplayGlobalVariables(); + return result; + } + + // + // Find First Bar in New TimeFrame at or after Saved Time ... + // iBarShift with exact=false returns the bar containing or before the time + int newBarIndex = iBarShift(_Symbol, _Period, savedTime, false); + + // + // Validate New Bar Index ... + result = newBarIndex >= 0; + if (!result) + { + // + // Clean up if partial state exists ... + RemoveReplayGlobalVariables(); + return result; + } + + // + // Set Replay State for New TimeFrame ... + xReplyStartTime = iTime(_Symbol, _Period, newBarIndex); + xReplyStartBarIndex = newBarIndex; + + // + // Try to restore visible bars count ... + if (GlobalVariableCheck(gvVisibleBarsName)) + { + // + double savedVisibleBars = GlobalVariableGet(gvVisibleBarsName); + xReplyCurrentVisibleBars = (int)savedVisibleBars; + + // + // Clamp to valid range ... + int maxBars = xReplyStartBarIndex + 1; + if (xReplyCurrentVisibleBars > maxBars) + { + xReplyCurrentVisibleBars = maxBars; + } + if (xReplyCurrentVisibleBars < 1) + { + xReplyCurrentVisibleBars = 1; + } + } + else + { + xReplyCurrentVisibleBars = 1; + } + + // + // Clean Global Variables after successful restore ... + RemoveReplayGlobalVariables(); + + // + return result; +} + +/** + * Remove Replay Global Variables ... + */ +void RemoveReplayGlobalVariables() +{ + // + string gvTimeName = ShortName + _Symbol + GV_TIME_SUFFIX; + if (GlobalVariableCheck(gvTimeName)) + { + GlobalVariableDel(gvTimeName); + } + + // + string gvActiveName = ShortName + _Symbol + GV_ACTIVE_SUFFIX; + if (GlobalVariableCheck(gvActiveName)) + { + GlobalVariableDel(gvActiveName); + } + + // + string gvVisibleBarsName = ShortName + _Symbol + GV_VISIBLE_BARS_SUFFIX; + if (GlobalVariableCheck(gvVisibleBarsName)) + { + GlobalVariableDel(gvVisibleBarsName); + } +} +// #endregion \ No newline at end of file diff --git a/Indicators/x-saherelm.x121.x-reply.mq5 b/Indicators/x-saherelm.x121.x-reply.mq5 index 40d2a75f..27681cd9 100644 --- a/Indicators/x-saherelm.x121.x-reply.mq5 +++ b/Indicators/x-saherelm.x121.x-reply.mq5 @@ -15,7 +15,7 @@ // Global Properties ... #property copyright "Copyright 2023, SaherElm IT Center" #property link "https://saherelm.ir" -#property version "2.00" +#property version "1.00" #property description "SaherElm X121 XReplay Indicator" #property icon "../Images/SaherElm_Logo_Color.ico" #property strict @@ -25,8 +25,15 @@ // #endregion // #region Definitions ... + // -#define ShortName "X121 XReplay" +#define ShortName "X121-XReplay" + +// +// Global Variable Keys for TimeFrame Change ... +#define GV_ACTIVE_SUFFIX "_Active" +#define GV_TIME_SUFFIX "_LastVisibleTime" +#define GV_VISIBLE_BARS_SUFFIX "_VisibleBars" // #define hideColorIDX 0 @@ -116,28 +123,10 @@ double pBarColorBuffer[]; #property indicator_label1 "XPBar Open;XPBar High;XPBar Low;XPBar Close" #property indicator_type1 DRAW_COLOR_CANDLES #property indicator_color1 CLR_NONE, clrDodgerBlue, clrDarkOrange - -// -// Data Buffers ... - -// -// #define pBarTimeBufferIndex buffersCount + 5 -// datetime pBarTimeBuffer[]; - -// -// #define pBarTickVolumeBufferIndex buffersCount + 6 -// long pBarTickVolumeBuffer[]; - -// -// #define pBarVolumeBufferIndex buffersCount + 7 -// long pBarVolumeBuffer[]; - -// -// #define pBarSpreadBufferIndex buffersCount + 8 -// long pBarSpreadBuffer[]; // #endregion // #region Variables ... + // int xReplyLimit; int xReplyMaxLength; @@ -161,10 +150,16 @@ string xReplyBtnReset; // Replay State ... int xReplyCandlesCount = 0; int xReplyStartBarIndex = 0; +int xReplyCurrentBarIndex = 0; bool xReplyIsPlaying = false; ulong xReplyLastPlayTick = 0; datetime xReplyStartTime = NULL; int xReplyCurrentVisibleBars = 0; + +// +bool xReplyTimerActive = false; // Timer is active only when playing +int xReplyLastDrawnBarCount = 0; // Track last drawn bar count for incremental draw +bool xReplyIsResumedFromTFChange = false; // Flag: resumed from timeframe change // #endregion // #region Event Handlers ... @@ -214,19 +209,37 @@ int OnInit() ApplyCustomChartStyle(); // - int idx = startBar; - if (idx >= Bars(_Symbol, _Period)) + xReplyIsResumedFromTFChange = TryResumeFromTimeFrameChange(); + if (!xReplyIsResumedFromTFChange) { - idx = Bars(_Symbol, _Period) - 10; - } + // + int idx = startBar; + if (idx >= Bars(_Symbol, _Period)) + { + idx = Bars(_Symbol, _Period) - 10; + } - // - xReplyStartTime = iTime(_Symbol, _Period, idx); - xReplyStartBarIndex = iBarShift(_Symbol, _Period, xReplyStartTime, false); - has = xReplyStartBarIndex >= 0; - if (!has) + // + xReplyStartTime = iTime(_Symbol, _Period, idx); + xReplyStartBarIndex = iBarShift(_Symbol, _Period, xReplyStartTime, false); + has = xReplyStartBarIndex >= 0; + if (!has) + { + return INIT_PARAMETERS_INCORRECT; + } + + // + xReplyCurrentVisibleBars = 1; + xReplyCurrentBarIndex = xReplyStartBarIndex; + } + else { - return INIT_PARAMETERS_INCORRECT; + // + // Validate Resumed State ... + if (xReplyStartBarIndex < 0) + { + return INIT_PARAMETERS_INCORRECT; + } } // @@ -235,14 +248,9 @@ int OnInit() // // Initial Draw ... - xReplyCurrentVisibleBars = 1; DrawVisibleCandles(); UpdateInfoLabel(); - // - // Enable Timer for Auto Play ... - EventSetMillisecondTimer(100); - // // Init Succeed ... return INIT_SUCCEEDED; @@ -267,6 +275,26 @@ int OnInit() */ void OnDeinit(const int reason) { + if (reason == REASON_CHARTCHANGE) + { + // + // Save Global Variables ... + SaveReplayStateForTimeFrameChange(); + } + else + { + // + // Remove Global Variables for Other Reasons ... + RemoveReplayGlobalVariables(); + } + + // + // Kill Timer if it's Activated ... + if (xReplyTimerActive) + { + StopTimer(); + } + // // Show Saved Chart Style ... ShowBars(); @@ -278,10 +306,6 @@ void OnDeinit(const int reason) // // Remove UI Objects ... RemoveUIObjects(); - - // - // Kill Timer ... - EventKillTimer(); } /** @@ -325,31 +349,15 @@ int OnCalculate( ArraySetAsSeries(spread, true); // - // Validate Calculated Bars ... - - // - bool isPassedRequiredCalculatedBars = true; - if (!isPassedRequiredCalculatedBars) - { - return prev_calculated; - } - - // + // Calculate Size of Loop ... xReplyLimit = (prev_calculated > rates_total || prev_calculated <= 0) - ? rates_total + // + // First Call ... + ? rates_total - 1 + // + // Subsequent calls: only new bars + current forming bar ... : (rates_total - prev_calculated) + 1; - // - // Buffers Copy ... - - // - // Validate Copied Items ... - bool isPassedRequiredCopiedItems = true; - if (!isPassedRequiredCopiedItems) - { - return prev_calculated; - } - // // Main Loop ... for (int i = xReplyLimit - 1; i >= 0 && !IsStopped(); i--) @@ -369,12 +377,8 @@ int OnCalculate( } // - if (prev_calculated == 0) - { - // - string message = "History Finished ..."; - Print(message); - } + // Incremental color update ... + UpdateVisibleColors(); // return rates_total; @@ -388,6 +392,12 @@ void OnTimer() // if (!xReplyIsPlaying) { + // + // Stop Timer ... + if (xReplyTimerActive) + { + StopTimer(); + } return; } @@ -401,7 +411,7 @@ void OnTimer() // // Auto Stop at Current Market Bar ... - if (xReplyStartBarIndex - xReplyCurrentVisibleBars <= 0) + if (xReplyCurrentBarIndex <= 0) { // xReplyIsPlaying = false; @@ -585,6 +595,7 @@ bool InitRequirements() void DefineBuffers() { // #region Plot Buffers ... + // // SIGNAL Bar ... @@ -617,26 +628,6 @@ void DefineBuffers() // Close ... ArraySetAsSeries(pBarCloseBuffer, true); SetIndexBuffer(pBarCloseBufferIndex, pBarCloseBuffer, INDICATOR_DATA); - - // - // Time ... - // ArraySetAsSeries(pBarTimeBuffer, true); - // SetIndexBuffer(pBarTimeBufferIndex, pBarTimeBuffer, INDICATOR_CALCULATIONS); - - // - // Tick Volume ... - // ArraySetAsSeries(pBarTickVolumeBuffer, true); - // SetIndexBuffer(pBarTickVolumeBufferIndex, pBarTickVolumeBuffer, INDICATOR_CALCULATIONS); - - // - // Volume ... - // ArraySetAsSeries(pBarVolumeBuffer, true); - // SetIndexBuffer(pBarVolumeBufferIndex, pBarVolumeBuffer, INDICATOR_CALCULATIONS); - - // - // Spread ... - // ArraySetAsSeries(pBarSpreadBuffer, true); - // SetIndexBuffer(pBarSpreadBufferIndex, pBarSpreadBuffer, INDICATOR_CALCULATIONS); // #endregion } @@ -700,6 +691,32 @@ void FillBuffersZero(int barIndex) { pBarColorBuffer[barIndex] = hideColorIDX; } + +/** + * Start Timer only when needed ... + */ +void StartTimer() +{ + // + if (!xReplyTimerActive) + { + EventSetMillisecondTimer(100); + xReplyTimerActive = true; + } +} + +/** + * Stop Timer to save resources ... + */ +void StopTimer() +{ + // + if (xReplyTimerActive) + { + EventKillTimer(); + xReplyTimerActive = false; + } +} // #endregion // #region Value Calculators ... @@ -1203,35 +1220,27 @@ void RemoveUIObjects() void UpdateInfoLabel() { // - int shownBars = MathMin( - xReplyCurrentVisibleBars, - xReplyStartBarIndex + 1 // - ); + int totalBars = Bars(_Symbol, _Period); + int shownBars = totalBars - xReplyCurrentBarIndex; // - int currentBarIdx = xReplyStartBarIndex - shownBars + 1; - if (currentBarIdx < 0) - { - currentBarIdx = 0; - } - - // - datetime barTime = iTime(_Symbol, _Period, currentBarIdx); + datetime barTime = iTime(_Symbol, _Period, xReplyCurrentBarIndex); string status = xReplyIsPlaying ? "PLAYING" : "PAUSED"; - // string info = StringFormat( "Bar: %d / %d | %s | %s", shownBars, - xReplyStartBarIndex + 1, + totalBars, TimeToString(barTime, TIME_DATE | TIME_MINUTES), status // ); // ObjectSetString(0, xReplyLblInfo, OBJPROP_TEXT, info); + + // ChartRedraw(); } @@ -1247,56 +1256,40 @@ void DrawVisibleCandles() } // - // Destroy Existing Candle Objects ... - ArrayInitialize(pBarColorBuffer, hideColorIDX); + UpdateVisibleColors(); // - int barsToDraw = MathMin( - xReplyCurrentVisibleBars, - xReplyStartBarIndex + 1 // - ); + // Track drawn count for future optimization ... + xReplyLastDrawnBarCount = xReplyCurrentVisibleBars; // - int barSeconds = PeriodSeconds(_Period); + ChartRedraw(); +} +/** + * Called after OHLC buffers are filled in OnCalculate + */ +void UpdateVisibleColors() +{ // - // Resize Candle Array ... - xReplyCandlesCount = barsToDraw; - - // - // Main Loop ... - bool isBullish = false; - int colorIDX = hideColorIDX; - for (int i = 0; i < barsToDraw; i++) + int bufferSize = ArraySize(pBarColorBuffer); + if (bufferSize <= 0) { - // - int barIdx = xReplyStartBarIndex - i; - if (barIdx < 0) - { - break; - } - - // - isBullish = - pBarCloseBuffer[barIdx] >= pBarOpenBuffer[barIdx]; - colorIDX = - isBullish - ? bullishColorIDX - : bearishColorIDX; - pBarColorBuffer[barIdx] = colorIDX; + return; } // - for (int i = xReplyStartBarIndex + 1; i < ArraySize(pBarColorBuffer); i++) + \ for (int i = 0; i < xReplyCurrentBarIndex && i < bufferSize; i++) + { + pBarColorBuffer[i] = hideColorIDX; + } + + // + for (int i = xReplyCurrentBarIndex; i < bufferSize; i++) { // - isBullish = - pBarCloseBuffer[i] >= pBarOpenBuffer[i]; - colorIDX = - isBullish - ? bullishColorIDX - : bearishColorIDX; - pBarColorBuffer[i] = colorIDX; + bool isBullish = pBarCloseBuffer[i] >= pBarOpenBuffer[i]; + pBarColorBuffer[i] = isBullish ? bullishColorIDX : bearishColorIDX; } // @@ -1311,17 +1304,13 @@ void DrawVisibleCandles() void StepForward() { // - int maxBars = xReplyStartBarIndex + 1; - if (xReplyCurrentVisibleBars < maxBars) + if (xReplyCurrentBarIndex > 0) { // - xReplyCurrentVisibleBars++; + xReplyCurrentBarIndex--; DrawVisibleCandles(); UpdateInfoLabel(); - - // - int currentBarIndex = xReplyStartBarIndex - xReplyCurrentVisibleBars + 1; - ScrollToBar(currentBarIndex); + ScrollToBar(xReplyCurrentBarIndex); } } @@ -1331,16 +1320,14 @@ void StepForward() void StepBackward() { // - if (xReplyCurrentVisibleBars > 1) + int totalBars = Bars(_Symbol, _Period); + if (xReplyCurrentBarIndex < totalBars - 1) { // - xReplyCurrentVisibleBars--; + xReplyCurrentBarIndex++; DrawVisibleCandles(); UpdateInfoLabel(); - - // - int currentBarIndex = xReplyStartBarIndex - xReplyCurrentVisibleBars + 1; - ScrollToBar(currentBarIndex); + ScrollToBar(xReplyCurrentBarIndex); } } @@ -1350,7 +1337,7 @@ void StepBackward() void ResetReplay() { // - xReplyCurrentVisibleBars = 1; + xReplyCurrentBarIndex = xReplyStartBarIndex; xReplyIsPlaying = false; // @@ -1385,4 +1372,179 @@ void ScrollToBar(int barIndex) ChartSetInteger(ChartID(), CHART_FIRST_VISIBLE_BAR, barIndex); ChartRedraw(); } +// #endregion + +// #region TimeFrame Change State Management ... +/** + * Save Replay State for TimeFrame Change ... + * Called in OnDeinit when REASON_CHARTCHANGE + */ +void SaveReplayStateForTimeFrameChange() +{ + // + // Calculate Last Visible Bar Index ... + int lastVisibleBarIndex = xReplyStartBarIndex - xReplyCurrentVisibleBars + 1; + if (lastVisibleBarIndex < 0) + { + lastVisibleBarIndex = 0; + } + + // + // Retrieve Last Visible Bar Time ... + datetime lastVisibleTime = iTime(_Symbol, _Period, lastVisibleBarIndex); + + // + // Validate Time ... + if (!IsXValid(lastVisibleTime)) + { + return; + } + + // + // Generate Global Variable Names ... + string gvTimeName = ShortName + _Symbol + GV_TIME_SUFFIX; + string gvActiveName = ShortName + _Symbol + GV_ACTIVE_SUFFIX; + string gvVisibleBarsName = ShortName + _Symbol + GV_VISIBLE_BARS_SUFFIX; + + // + // Save Last Visible Time ... + GlobalVariableSet(gvTimeName, (double)lastVisibleTime); + + // + // Save Active State ... + GlobalVariableSet(gvActiveName, 1.0); + + // + // Save Visible Bars Count ... + GlobalVariableSet(gvVisibleBarsName, (double)xReplyCurrentVisibleBars); +} + +/** + * Try to Resume Replay from TimeFrame Change ... + * Called in OnInit to check if we should resume + * + * @return ( bool ) - true if resumed successfully + */ +bool TryResumeFromTimeFrameChange() +{ + // + bool result = false; + + // + // Generate Global Variable Names ... + string gvTimeName = ShortName + _Symbol + GV_TIME_SUFFIX; + string gvActiveName = ShortName + _Symbol + GV_ACTIVE_SUFFIX; + string gvVisibleBarsName = ShortName + _Symbol + GV_VISIBLE_BARS_SUFFIX; + + // + // Check Global Variables Exists ... + bool wasActive = GlobalVariableCheck(gvActiveName); + bool hasSavedTime = GlobalVariableCheck(gvTimeName); + + // + result = wasActive && hasSavedTime; + if (!result) + { + // + // Clean up if partial state exists ... + RemoveReplayGlobalVariables(); + return result; + } + + // + // Retrieve Saved Time ... + double savedTimeDouble = GlobalVariableGet(gvTimeName); + datetime savedTime = (datetime)savedTimeDouble; + + // + // Validate Saved Time ... + result = IsXValid(savedTime); + if (!result) + { + // + // Clean up if partial state exists ... + RemoveReplayGlobalVariables(); + return result; + } + + // + // Find First Bar in New TimeFrame at or after Saved Time ... + // iBarShift with exact=false returns the bar containing or before the time + int newBarIndex = iBarShift(_Symbol, _Period, savedTime, false); + + // + // Validate New Bar Index ... + result = newBarIndex >= 0; + if (!result) + { + // + // Clean up if partial state exists ... + RemoveReplayGlobalVariables(); + return result; + } + + // + // Set Replay State for New TimeFrame ... + xReplyStartTime = iTime(_Symbol, _Period, newBarIndex); + xReplyStartBarIndex = newBarIndex; + + // + // Try to restore visible bars count ... + if (GlobalVariableCheck(gvVisibleBarsName)) + { + // + double savedVisibleBars = GlobalVariableGet(gvVisibleBarsName); + xReplyCurrentVisibleBars = (int)savedVisibleBars; + + // + // Clamp to valid range ... + int maxBars = xReplyStartBarIndex + 1; + if (xReplyCurrentVisibleBars > maxBars) + { + xReplyCurrentVisibleBars = maxBars; + } + if (xReplyCurrentVisibleBars < 1) + { + xReplyCurrentVisibleBars = 1; + } + } + else + { + xReplyCurrentVisibleBars = 1; + } + + // + // Clean Global Variables after successful restore ... + RemoveReplayGlobalVariables(); + + // + return result; +} + +/** + * Remove Replay Global Variables ... + */ +void RemoveReplayGlobalVariables() +{ + // + string gvTimeName = ShortName + _Symbol + GV_TIME_SUFFIX; + if (GlobalVariableCheck(gvTimeName)) + { + GlobalVariableDel(gvTimeName); + } + + // + string gvActiveName = ShortName + _Symbol + GV_ACTIVE_SUFFIX; + if (GlobalVariableCheck(gvActiveName)) + { + GlobalVariableDel(gvActiveName); + } + + // + string gvVisibleBarsName = ShortName + _Symbol + GV_VISIBLE_BARS_SUFFIX; + if (GlobalVariableCheck(gvVisibleBarsName)) + { + GlobalVariableDel(gvVisibleBarsName); + } +} // #endregion \ No newline at end of file