/////////////////////////////////////////////////////// // // SaherElm IT Center MQL5 Class Library // -------------------------------------- // Name: XATRSL Indicator Provider // Description: ATR Stop Loss ... // // // 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 // // START Import and Inclused requirements ... // // // Includes ... #include "../Libraries/x-saherelm.alert.lib.mq5" #include "../Libraries/x-saherelm.models.lib.mq5" #include "../Libraries/x-saherelm.common.lib.mq5" // // END Import and Inclused requirements ... // // // START Definitions ... // // // XPeaksAndVales Exported Buffers ... enum ENUM_X_XATRSL_BUFFERS { // X_ATRSL_UP_LINE = 0, X_ATRSL_DOWN_LINE = 1, X_ATRSL_SAR_LINE = 2, X_ATRSL_RMA_LINE = 3, X_ATRSL_WMA_LINE = 4, X_ATRSL_MA1_LINE = 5, X_ATRSL_SMA_LINE = 6, X_ATRSL_EMA_LINE = 7, X_ATRSL_ATR_LINE = 8, }; // // END Definitions ... // // // START Overrides ... // // // END Overrides ... // class XSCXATRSLHelper { // public: // // Properties ... double upBuffer[]; double downBuffer[]; double sarBuffer[]; double rmaBuffer[]; double wmaBuffer[]; double ma1Buffer[]; double smaBuffer[]; double emaBuffer[]; double atrBuffer[]; // // Constructor ... void XSCXATRSLHelper() { mSymbol = _Symbol; mPeriod = _Period; } void XSCXATRSLHelper( // // Symbol ... string symbol, // // Period ... ENUM_TIMEFRAMES period, // // Buffer Reading ... int numberOfItemsReadPerTick = 52, // // MARKET ... int length = 14, // Length double step = 0.02, // Increment Step double maximum = 0.2, // Maximum ENUM_APPLIED_PRICE highAppliedTo = PRICE_HIGH, // High Line Applied To ENUM_APPLIED_PRICE lowAppliedTo = PRICE_LOW // Low Line Applied To // ) { // // Setting Requirements ... // // Symbol ... mSymbol = symbol; // // Period ... mPeriod = period; // // Number of Reading Buffer Items per Tick ... mNumberOfItemsReadPerTick = numberOfItemsReadPerTick; // // MARKET ... mLength = length; mStep = step; mMaximum = maximum; mHighAppliedTo = highAppliedTo; mLowAppliedTo = lowAppliedTo; // mTag = "XATRSL " + mSymbol + ", " + ToString(mPeriod); // // Initial Handler ... mHandler = iCustom( mSymbol, mPeriod, "x-saherelm.x121.xatrsl", // // Inputs ... // // MARKET ... "", mLength, mStep, mMaximum, mHighAppliedTo, mLowAppliedTo, // // PRESENTATION ... "", false, false, false // ); if (mHandler == INVALID_HANDLE) { LogMessage("failed to Initialize Indicator: " + (string)GetLastError()); } // ArraySetAsSeries(upBuffer, true); ArraySetAsSeries(downBuffer, true); ArraySetAsSeries(sarBuffer, true); ArraySetAsSeries(rmaBuffer, true); ArraySetAsSeries(wmaBuffer, true); ArraySetAsSeries(ma1Buffer, true); ArraySetAsSeries(smaBuffer, true); ArraySetAsSeries(emaBuffer, true); ArraySetAsSeries(atrBuffer, true); } // // DeConstructor ... void ~XSCXATRSLHelper() { // // Release Indicators ... IndicatorRelease(mHandler); } // // Reading Buffers ... void ReadBuffers() { // // UP ... CopyBuffer( mHandler, X_ATRSL_UP_LINE, 0, mNumberOfItemsReadPerTick, upBuffer); // // DOWN ... CopyBuffer( mHandler, X_ATRSL_DOWN_LINE, 0, mNumberOfItemsReadPerTick, downBuffer); // // SAR ... CopyBuffer( mHandler, X_ATRSL_SAR_LINE, 0, mNumberOfItemsReadPerTick, sarBuffer); // // RMA ... CopyBuffer( mHandler, X_ATRSL_RMA_LINE, 0, mNumberOfItemsReadPerTick, rmaBuffer); // // WMA ... CopyBuffer( mHandler, X_ATRSL_WMA_LINE, 0, mNumberOfItemsReadPerTick, wmaBuffer); // // MA1 ... CopyBuffer( mHandler, X_ATRSL_MA1_LINE, 0, mNumberOfItemsReadPerTick, ma1Buffer); // // MA 1 ... CopyBuffer( mHandler, X_ATRSL_SMA_LINE, 0, mNumberOfItemsReadPerTick, smaBuffer); // // EMA ... CopyBuffer( mHandler, X_ATRSL_EMA_LINE, 0, mNumberOfItemsReadPerTick, emaBuffer); // // ATR ... CopyBuffer( mHandler, X_ATRSL_ATR_LINE, 0, mNumberOfItemsReadPerTick, atrBuffer); } // // START Tools Functions ... // // // END Tools Functions ... // // protected: // private: // // Symbol ... string mSymbol; // // Period ... ENUM_TIMEFRAMES mPeriod; // // Buffer Reading ... int mNumberOfItemsReadPerTick; // // MARKET ... // // Length ... int mLength; // // Increment Step ... double mStep; // // Maximum ... double mMaximum; // // High Line Applied To ... ENUM_APPLIED_PRICE mHighAppliedTo; // // Low Line Applied To ... ENUM_APPLIED_PRICE mLowAppliedTo; // string mTag; // int mHandler; };