MnQInvestmentDevelopment/MnQInvestment/02_EigeneScalpingprojekte/TrendlineBreakerV1.1.mq5
super.admin cff55d2704 convert
2025-05-30 15:08:44 +02:00

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