EA-Setka-2/logic/rsi_cci/mql5/fill_rc_buffers.mqh

162 lines
12 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 14:50:44 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| ProjectName |
//| Copyright 2020, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#ifndef FILL_RC_BUFFERS_MQH
#define FILL_RC_BUFFERS_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
static int calc_rc::Init(setting_t *settings)
{
if(settings.use_for_next_Order != 0)
{
cci=iCCI(CURRENT_SYMBOL,settings.CciTimeFrame,settings.CciPeriod,PRICE_CLOSE);
if(cci==INVALID_HANDLE)
{
//--- A>>1I8< > =5C40G5 8 2K2545< =><5@ >H81:8
log_error("5 C40;>AL A>740BL EM=4; 8=48:0B>@0 iCCI");
//--- @01>B0 8=48:0B>@0 7025@H05BAO 4>A@>G=>
_init_failed = true;
return(INIT_FAILED);
}
rsi=iRSI(CURRENT_SYMBOL,settings.RsiTimeFrame,settings.RsiPeriod,PRICE_CLOSE);
if(rsi==INVALID_HANDLE)
{
//--- A>>1I8< > =5C40G5 8 2K2545< =><5@ >H81:8
log_error("5 C40;>AL A>740BL EM=4; 8=48:0B>@0 iRSI");
//--- @01>B0 8=48:0B>@0 7025@H05BAO 4>A@>G=>
_init_failed = true;
return(INIT_FAILED);
}
}
if(settings.use_for1Order)
{
cci1=iCCI(CURRENT_SYMBOL,settings.CciTimeFrame1,settings.CciPeriod1,PRICE_CLOSE);
if(cci1==INVALID_HANDLE)
{
//--- A>>1I8< > =5C40G5 8 2K2545< =><5@ >H81:8
log_error("5 C40;>AL A>740BL EM=4; 8=48:0B>@0 iCCI1");
//--- @01>B0 8=48:0B>@0 7025@H05BAO 4>A@>G=>
_init_failed = true;
return(INIT_FAILED);
}
rsi1=iRSI(CURRENT_SYMBOL,settings.RsiTimeFrame1,settings.RsiPeriod1,PRICE_CLOSE);
if(rsi1==INVALID_HANDLE)
{
//--- A>>1I8< > =5C40G5 8 2K2545< =><5@ >H81:8
log_error("5 C40;>AL A>740BL EM=4; 8=48:0B>@0 iRSI1");
//--- @01>B0 8=48:0B>@0 7025@H05BAO 4>A@>G=>
_init_failed = true;
return(INIT_FAILED);
}
}
return(INIT_SUCCEEDED);
//---
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void calc_rc::Deinit(void)
{
if(rsi!=INVALID_HANDLE)
IndicatorRelease(rsi);
if(rsi1!=INVALID_HANDLE)
IndicatorRelease(rsi1);
if(cci!=INVALID_HANDLE)
IndicatorRelease(cci);
if(cci!=INVALID_HANDLE)
IndicatorRelease(cci1);
};
//======================================================
bool calc_rc::fill_rc_buffers(setting_t *settings)
{
if(settings.use_for_next_Order != 0)
{
if(OldCci != iTime(CURRENT_SYMBOL,settings.CciTimeFrame,1)
|| (OldRci != iTime(CURRENT_SYMBOL,settings.RsiTimeFrame,1)))
{
OldCci = iTime(CURRENT_SYMBOL,settings.CciTimeFrame,1);
OldRci = iTime(CURRENT_SYMBOL,settings.RsiTimeFrame,1);
if((cci !=0)
&& (CopyBuffer(cci,0,1,IND_ARRAY_BUFFER_SIZE,CciBuff)<0))
{
//--- 5A;8 :>?8@>20=85 =5 C40;>AL, A>>1I8< :>4 >H81:8
log_error(StringFormat("5 C40;>AL A:>?8@>20BL 40==K5 87 8=48:0B>@0 CCI, :>4 >H81:8 %d",GetLastError()));
//--- 7025@H8< A =C;52K< @57C;LB0B>< - MB> >7=0G05B, GB> 8=48:0B>@ 1C45B AG8B0BLAO =5@0AAG8B0==K<
return false;
}
ArrayReverse(CciBuff);
if((rsi !=0)
&& (CopyBuffer(rsi,0,1,IND_ARRAY_BUFFER_SIZE,RsiBuff)<0))
{
//--- 5A;8 :>?8@>20=85 =5 C40;>AL, A>>1I8< :>4 >H81:8
log_error(StringFormat("5 C40;>AL A:>?8@>20BL 40==K5 87 8=48:0B>@0 RSI, :>4 >H81:8 %d",GetLastError()));
//--- 7025@H8< A =C;52K< @57C;LB0B>< - MB> >7=0G05B, GB> 8=48:0B>@ 1C45B AG8B0BLAO =5@0AAG8B0==K<
return false;
}
ArrayReverse(RsiBuff);
for(int i=(IND_ARRAY_BUFFER_SIZE-1); i>=0; i--)
RsiBuff[i] -= 50.0;
}
}
if(settings.use_for1Order)
{
if(OldCci1 != iTime(CURRENT_SYMBOL,settings.CciTimeFrame1,1)
|| (OldRci1 != iTime(CURRENT_SYMBOL,settings.RsiTimeFrame1,1)))
{
OldCci1 = iTime(CURRENT_SYMBOL,settings.CciTimeFrame1,1);
OldRci1 = iTime(CURRENT_SYMBOL,settings.RsiTimeFrame1,1);
if((cci1 != 0)
&& (CopyBuffer(cci1,0,1,IND_ARRAY_BUFFER_SIZE,CciBuff1)<0))
{
//--- 5A;8 :>?8@>20=85 =5 C40;>AL, A>>1I8< :>4 >H81:8
log_error(StringFormat("5 C40;>AL A:>?8@>20BL 40==K5 87 8=48:0B>@0 CCI1, :>4 >H81:8 %d",GetLastError()));
//--- 7025@H8< A =C;52K< @57C;LB0B>< - MB> >7=0G05B, GB> 8=48:0B>@ 1C45B AG8B0BLAO =5@0AAG8B0==K<
return false;
}
ArrayReverse(CciBuff1);
if((rsi1 != 0)
&& (CopyBuffer(rsi1,0,1,IND_ARRAY_BUFFER_SIZE,RsiBuff1)<0))
{
//--- 5A;8 :>?8@>20=85 =5 C40;>AL, A>>1I8< :>4 >H81:8
log_error(StringFormat("5 C40;>AL A:>?8@>20BL 40==K5 87 8=48:0B>@0 RSI1, :>4 >H81:8 %d",GetLastError()));
//--- 7025@H8< A =C;52K< @57C;LB0B>< - MB> >7=0G05B, GB> 8=48:0B>@ 1C45B AG8B0BLAO =5@0AAG8B0==K<
return false;
}
ArrayReverse(RsiBuff1);
for(int i=(IND_ARRAY_BUFFER_SIZE-1); i>=0; i--)
RsiBuff1[i] -= 50.0;
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
return true;
};
#endif
//===================================================
//+------------------------------------------------------------------+