double jjmabuffer[];
int jjmahandle;
double jfatlbuffer[];
int jfatlhandle;
double almabuffer[];
int almahandle;
double hmabuffer[];
int hmahandle;
double coppockbuffer[];
int coppockhandle;
double spearbuffer[];
int spearhandle;
double temabuffer[];
int temahandle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
ObjectsDeleteAll(0,-1,-1); // https://www.mql5.com/en/docs/objects/objectdeleteall
//--- indicator buffers mapping
SetIndexBuffer(0,temabuffer,INDICATOR_DATA);
ArraySetAsSeries(temabuffer,true);
SetIndexBuffer(1,almabuffer,INDICATOR_DATA);
ArraySetAsSeries(almabuffer,true);
SetIndexBuffer(2,hmabuffer,INDICATOR_DATA);
ArraySetAsSeries(hmabuffer,true);
SetIndexBuffer(3,coppockbuffer,INDICATOR_DATA);
ArraySetAsSeries(coppockbuffer,true);
SetIndexBuffer(4,spearbuffer,INDICATOR_DATA);
ArraySetAsSeries(spearbuffer,true);
SetIndexBuffer(5,jjmabuffer,INDICATOR_DATA);
ArraySetAsSeries(jjmabuffer,true);
almahandle = iCustom(_Symbol,0,"alma");
coppockhandle = iCustom(_Symbol,0,"Coppock"); //,10,14,11);
hmahandle = iCustom(_Symbol,0,"hma",10,2.0);
spearhandle = iCustom(_Symbol,0,"Spear");
jjmahandle = iCustom(_Symbol,0,"jjma");
jfatlhandle = iCustom(_Symbol,0,"jfatl");
//-----
int OnCalculate(const int rates_total,
//-----
//--- try to copy
if(CopyBuffer(almahandle,0,0,to_copy,almabuffer)<=0) return(0);
if(CopyBuffer(hmahandle,0,0,to_copy,hmabuffer)<=0) return(0);
if(CopyBuffer(coppockhandle,0,0,to_copy,coppockbuffer)<=0) return(0);
if(CopyBuffer(spearhandle,0,0,to_copy,spearbuffer)<=0) return(0);
if(CopyBuffer(jjmahandle,0,0,to_copy,jjmabuffer)<=0) return(0);
if(CopyBuffer(jfatlhandle,0,0,to_copy,jfatlbuffer)<=0) return(0);
//-----
//--- the main loop of calculations
for(int i=start; i<rates_total && !IsStopped(); i++)
{
if(vertical)
{
if( ((coppockbuffer[i] > 0.0) && (almabuffer[i] > almabuffer[i+1]) && (hmabuffer[i] > hmabuffer[i+1]) && (jjmabuffer[i] > jjmabuffer[i+1]) && (spearbuffer[i] > 0.0)) && ((coppockbuffer[i+1] < 0.0) || (almabuffer[i+1] < almabuffer[i+2]) || (hmabuffer[i+1] < hmabuffer[i+2]) || (jjmabuffer[i+1] < jjmabuffer[i+2]) || (spearbuffer[i+1] < 0.0) )) {vlines(i,"buy");}
if( ((coppockbuffer[i] < 0.0) && (almabuffer[i] < almabuffer[i+1]) && (hmabuffer[i] < hmabuffer[i+1]) && (jjmabuffer[i] < jjmabuffer[i+1]) && (spearbuffer[i] < 0.0)) && ((coppockbuffer[i+1] > 0.0) || (almabuffer[i+1] > almabuffer[i+2]) || (hmabuffer[i+1] > hmabuffer[i+2]) || (jjmabuffer[i+1] > jjmabuffer[i+2]) || (spearbuffer[i+1] > 0.0) )) {vlines(i,"sell");}
}
} // for(int i=start;