89 lines
No EOL
7.4 KiB
MQL5
89 lines
No EOL
7.4 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| TrendlineBreaker-V1.mq5 |
|
|
//| Copyright 2023, M & Q Investment Group |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2023, M & Q Investment Group"
|
|
#property link "https://www.mql5.com"
|
|
#property version "1.00"
|
|
|
|
int HandleRSI;
|
|
|
|
|
|
|
|
|
|
|
|
int OnInit(){
|
|
string NameZigZag = "Market\\ArrowZigZag.ex5";
|
|
GHandleZigZag = iCustom(_Symbol,PERIOD_CURRENT,NameZigZag,8,8,3);
|
|
HandleRSI = iRSI(_Symbol,PERIOD_CURRENT,14,PRICE_CLOSE);
|
|
|
|
return(INIT_SUCCEEDED);
|
|
}
|
|
|
|
void OnDeinit(const int reason){
|
|
|
|
}
|
|
|
|
void OnTick(){
|
|
|
|
GetLastZigZag(GMinimumHigLowCandleIndex,GCountLastZigZagSignals,GMaximalZigZagBufferRange,GHandleZigZag);
|
|
Comment("\nLastHighnLows[0][0]: ",LastHighnLows[0][0]," Index: ",LastHighnLows[0][1]," High1Low-1: ",LastHighnLows[0][2],
|
|
"\nLastHighnLows[1][0]: ",LastHighnLows[1][0]," Index: ",LastHighnLows[1][1]," High1Low-1: ",LastHighnLows[1][2],
|
|
"\nLastHighnLows[2][0]: ",LastHighnLows[2][0]," Index: ",LastHighnLows[2][1]," High1Low-1: ",LastHighnLows[2][2],
|
|
"\nLastHighnLows[3][0]: ",LastHighnLows[3][0]," Index: ",LastHighnLows[3][1]," High1Low-1: ",LastHighnLows[3][2]);
|
|
|
|
|
|
}
|
|
|
|
//GET LAST ZIG-ZAG-SIGNALS
|
|
input int GMinimumHigLowCandleIndex = 3;
|
|
input int GCountLastZigZagSignals = 4;
|
|
int GMaximalZigZagBufferRange = 200;
|
|
int GHandleZigZag;
|
|
//ONINIT
|
|
//string NameZigZag = "Market\\ArrowZigZag.ex5";
|
|
//HandleZigZag = iCustom(_Symbol,PERIOD_CURRENT,NameZigZag,8,8,3);
|
|
double LastHighnLows[][3];
|
|
void GetLastZigZag(int MinimumHigLowCandleIndex, int CountLastZigZagSignals, int MaximalZigZagBufferRange, int HandleZigZag){
|
|
int SignalCounter = 0;
|
|
double ZigZagindiValue[];
|
|
CopyBuffer(HandleZigZag,0,0,MaximalZigZagBufferRange,ZigZagindiValue);
|
|
ArraySetAsSeries(ZigZagindiValue,true);
|
|
ArrayResize(LastHighnLows,CountLastZigZagSignals);
|
|
|
|
Print("MaximalZigZagBufferRange: ",MaximalZigZagBufferRange,
|
|
"\nMinimumHigLowCandleIndex: ",MinimumHigLowCandleIndex,
|
|
"\nSizeZigZagValue: ",ArraySize(ZigZagindiValue));
|
|
|
|
for(int i = MinimumHigLowCandleIndex; i < MaximalZigZagBufferRange; i++){
|
|
|
|
//Print("i: ",i);
|
|
if(ZigZagindiValue[i] > 0){
|
|
double ZigZagindiRedTop[];
|
|
double ZigZagindiGreenBot[];
|
|
CopyBuffer(HandleZigZag,1,i,1,ZigZagindiRedTop);
|
|
CopyBuffer(HandleZigZag,2,i,1,ZigZagindiGreenBot);
|
|
|
|
//IF REDTOP HAS A VALUE
|
|
if(ZigZagindiRedTop[0] > 0 && SignalCounter < CountLastZigZagSignals){
|
|
//INSERT THE VALUE IN GENERAL ARRAY
|
|
LastHighnLows[SignalCounter][0] = ZigZagindiValue[i];
|
|
LastHighnLows[SignalCounter][1] = i;
|
|
LastHighnLows[SignalCounter][2] = 1;
|
|
//FINISH SIGNAL DOCUMENTATION GOTO NEXT SIGNAL
|
|
SignalCounter = SignalCounter +1;}
|
|
|
|
//IF GREENBOT HAS A VALUE
|
|
else if(ZigZagindiGreenBot[0] > 0 && SignalCounter < CountLastZigZagSignals){
|
|
//INSERT THE VALUE IN GENERAL ARRAY
|
|
LastHighnLows[SignalCounter][0] = ZigZagindiValue[i];
|
|
LastHighnLows[SignalCounter][1] = i;
|
|
LastHighnLows[SignalCounter][2] = -1;
|
|
//FINISH SIGNAL DOCUMENTATION GOTO NEXT SIGNAL
|
|
SignalCounter = SignalCounter +1;}
|
|
|
|
else if(SignalCounter == CountLastZigZagSignals){break;}
|
|
}//END OF IF ZIGZAGARRAY HAS VALUE
|
|
}//END OF FOR LOOP
|
|
}//END OF ZIGZAG FUNCTION |