1
0
Derivar 0
EA-Setka-2/logic/rsi_cci/calc_rc.mqh

91 linhas
8,3 KiB
MQL5

2025-05-30 14:50:44 +02:00
<EFBFBD><EFBFBD>#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