/////////////////////////////////////////////////////// // // SaherElm IT Center MQL5 Helper Class Library // ---------------------------------------------- // Name: XSCXTDHelper // Description: provides all Indicator // Helper requirements ... // // // Maintainer: // ------------ // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) // ////////////////////////////////////////////////////// // // Global Properties ... #property library #property copyright "Copyright 2023, SaherElm IT Center" #property link "https://www.saherelm.ir" #property version "1.00" #property strict // // Imports ... #include "../Classes/x-saherelm.xhelper.class.mq5" // // Definitions ... // enum ENUM_XTD_BUFFERS { XTD_BULLISH_LINE = 0, XTD_BEARISH_LINE = 1, XTD_SIGNAL_LINE = 2, }; // // Input Models ... struct XXTDInputs { // // Props ... // int length; // Market Length bool drawCrosses; // Draw Cross Arrows // // Bullish ... uchar bullishArrowCode; // Cross Over Arrow Code color bullishArrowColor; // Cross Over Arrow Color // // Bearish ... uchar bearishArrowCode; // Cross Under Arrow Code color bearishArrowColor; // Cross Under Arrow Color // // Constructor(s) ... XXTDInputs() { // Clean(); } // // Tools ... // // Clean ... void Clean() { // length = 0; drawCrosses = true; // // Bullish ... bullishArrowCode = 228; bullishArrowColor = CLR_NONE; // // Bearish ... bearishArrowCode = 230; bearishArrowColor = CLR_NONE; } // // Default ... void Default() { // length = 14; drawCrosses = true; // // Bullish ... bullishArrowCode = 228; bullishArrowColor = CLR_NONE; // // Bearish ... bearishArrowCode = 230; bearishArrowColor = CLR_NONE; } // // Validate ... bool IsValid() { // bool result = false; // result = // length >= 2 // ; // return result; } // // Retrieve MAx Length ... int Max() { // int result = 0; // result = MathMax(result, length); // return result; } }; // // Class ... class XSCXTDHelper : public XSCBaseHelper { // // Public ... public: // // Props ... // // Constructors ... XSCXTDHelper() : XSCBaseHelper(_Symbol, _Period) { } // // Deconstructor ... ~XSCXTDHelper() {} // // Tools ... bool Init( string symbol, // Trading Symbol ENUM_TIMEFRAMES period, // Trading Period XXTDInputs &inputs // Inputs ) { // bool result = false; // mSymbol = symbol; mPeriod = period; // result = inputs.IsValid(); if (!result) { return result; } // mInputs = inputs; // ArraySetAsSeries(bullishBuffer, true); ArraySetAsSeries(bearishBuffer, true); ArraySetAsSeries(signalBuffer, true); // mHandler = iCustom( mSymbol, mPeriod, "x-saherelm.xtd", // // Inputs ... // mInputs.length, // Market Length mInputs.drawCrosses, // Draw Cross Arrows // // Bullish ... mInputs.bullishArrowCode, // Cross Over Arrow Code mInputs.bullishArrowColor, // Cross Over Arrow Color // // Bearish ... mInputs.bearishArrowCode, // Cross Under Arrow Code mInputs.bearishArrowColor // Cross Under Arrow Color // ); result = mHandler != INVALID_HANDLE; if (!result) { return result; } // return result; } // // Inputs ... // XXTDInputs GetInputs() { return mInputs; } // bool SetInputs( XXTDInputs &inputs // Configs ) { // return Init( mSymbol, mPeriod, inputs // ); } // // Buffers ... // double GetBullish( int barIndex // Bar Index ) { // if (barIndex < 0) { barIndex = 0; } // Calculate(); // int count = ArraySize(bullishBuffer); if (barIndex >= count) { barIndex = count - 1; } // return bullishBuffer[barIndex]; } // // Copy Required Items ... int CopyBullish( int start, // Start int count, // Number of Items for read double &buffer[], // Dest Buffer bool forceClean = true // Force To Clean buffer ) { // // Update Calculations ... Calculate(); // // Copy Items ... return Copy( start, count, bullishBuffer, buffer, forceClean // ); } // double GetBearish( int barIndex // Bar Index ) { // if (barIndex < 0) { barIndex = 0; } // Calculate(); // int count = ArraySize(bearishBuffer); if (barIndex >= count) { barIndex = count - 1; } // return bearishBuffer[barIndex]; } // // Copy Required Items ... int CopyBearish( int start, // Start int count, // Number of Items for read double &buffer[], // Dest Buffer bool forceClean = true // Force To Clean buffer ) { // // Update Calculations ... Calculate(); // // Copy Items ... return Copy( start, count, bearishBuffer, buffer, forceClean // ); } // double GetSignal( int barIndex // Bar Index ) { // if (barIndex < 0) { barIndex = 0; } // Calculate(); // int count = ArraySize(signalBuffer); if (barIndex >= count) { barIndex = count - 1; } // return signalBuffer[barIndex]; } // // Copy Required Items ... int CopySignal( int start, // Start int count, // Number of Items for read double &buffer[], // Dest Buffer bool forceClean = true // Force To Clean buffer ) { // // Update Calculations ... Calculate(); // // Copy Items ... return Copy( start, count, signalBuffer, buffer, forceClean // ); } // // Protected ... protected: // // Private ... private: // // Props ... XXTDInputs mInputs; // Inputs ... // // Buffers ... double bullishBuffer[]; double bearishBuffer[]; double signalBuffer[]; // // Tools ... // // Calculate Values Until Now ... void Calculate() { // int totalBars = CountBars(); // // Bullish ... CopyBuffer( mHandler, XTD_BULLISH_LINE, 0, totalBars, bullishBuffer // ); // // Bearish ... CopyBuffer( mHandler, XTD_BEARISH_LINE, 0, totalBars, bearishBuffer // ); // // Signal ... CopyBuffer( mHandler, XTD_SIGNAL_LINE, 0, totalBars, signalBuffer // ); } } // // Tools ...