#ifndef CALC_RC_MQH #define CALC_RC_MQH //+------------------------------------------------------------------+ //| calc_rc.mqh | //| Capteen | //| capteen.tlp@gmail.com | //+------------------------------------------------------------------+ #property copyright "Capteen" #property link "capteen.tlp@gmail.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #include "../setting.mqh" double RsiBuff[IND_ARRAY_BUFFER_SIZE], RsiBuff1[IND_ARRAY_BUFFER_SIZE], CciBuff[IND_ARRAY_BUFFER_SIZE], CciBuff1[IND_ARRAY_BUFFER_SIZE]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ class calc_rc { private: static bool fill_rc_buffers(setting_t *settings); public: calc_rc(); ~calc_rc(); static int Init(setting_t *settings); static void Deinit(void); static bool is_indicator_signal ( setting_t *settings, layer_order_setting *_order_settings, int orders_count ); public: }; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ calc_rc::calc_rc() { // _signal=false; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ calc_rc::~calc_rc() { } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ static bool calc_rc::is_indicator_signal ( setting_t *settings, layer_order_setting *_order_settings, int orders_count ) { if (!calc_rc::fill_rc_buffers(settings)) return false; bool result = (orders_count == 0)? (!settings.use_for1Order? true: c_order::is_buy_direction ( _order_settings.order_type )? //--- Buy (CP(iClose(CURRENT_SYMBOL, settings.CandleTimeFrame1, 1))>iClose(CURRENT_SYMBOL, settings.CandleTimeFrame1, 2) && (CciBuff1[0] < (-1*settings.CciLevel1)) && (RsiBuff1[0] < (-1*settings.RsiLevel1))): //--- Sell (CP(iClose(CURRENT_SYMBOL, settings.CandleTimeFrame1, 2))>iClose(CURRENT_SYMBOL, settings.CandleTimeFrame1, 1) && (CciBuff1[0] > settings.CciLevel1) && (RsiBuff1[0] > settings.RsiLevel1))): //--- Next steps ((settings.use_for_next_Order == 0) || (orders_count < settings.use_for_next_Order)? true: c_order::is_buy_direction ( _order_settings.order_type )? //--- Buy (CP(iClose(CURRENT_SYMBOL, settings.CandleTimeFrame, 1))>iClose(CURRENT_SYMBOL, settings.CandleTimeFrame, 2) && (CciBuff[0] < (-1*settings.CciLevel)) && (RsiBuff[0] < (-1*settings.RsiLevel))): //--- Sell (CP(iClose(CURRENT_SYMBOL, settings.CandleTimeFrame, 2))>iClose(CURRENT_SYMBOL, settings.CandleTimeFrame, 1) && (CciBuff[0] > settings.CciLevel) && (RsiBuff[0] > (-1*settings.RsiLevel)))); return result; } //+------------------------------------------------------------------+ #ifdef MQL4 #include "mql4/fill_rc_buffers.mqh" #endif #ifdef MQL5 #include "mql5/fill_rc_buffers.mqh" #endif #endif //CALC_RC_MQH