//+------------------------------------------------------------------+ //| RFractals.mq4 | //| Lizhniyk E | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Lizhniyk E" #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 2 #property indicator_width1 1 #property indicator_width2 1 #property indicator_color1 Blue #property indicator_color2 Red //---- input parameters //extern int rpoint=150; extern int range_fractal=5; //ðàíã ôðàêòàëà (íå÷¸òíûå ÷èñëà íå ìåíåå 3) //---- buffers double Ext1[]; double Ext2[]; int center=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators if(range_fractal % 2 == 0) range_fractal++; if(range_fractal<3) range_fractal=3; center=range_fractal/2 + 1 ; //scenter=range_fractal/2; SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,217); SetIndexBuffer(0,Ext1); SetIndexEmptyValue(0,0.0); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,218); SetIndexBuffer(1,Ext2); SetIndexEmptyValue(1,0.0); SetIndexLabel(0,"Fractal Up"); SetIndexLabel(1,"Fractal Down"); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ double cur=0; bool found=false; int start() { int counted_bars=IndicatorCounted(); //---- for(int i=Bars-counted_bars;i>=0;i--) { //*******create history****** //*******fractal up********** found=false; cur=High[i+center]; if(cur>High[i+1] && cur>High[i+range_fractal]) found=true; else found=false; if(found) { for(int j=1;j<center;j++) { if(cur>=High[i+center-j] && cur>=High[i+center+j]) found=true; else {found=false; break;} } } if(found) {Ext1[i+center]=cur; Ext1[i+center+1]=0;} //*************fractal down************* found=false; cur=Low[i+center]; if(cur<Low[i+1] && cur<Low[i+range_fractal]) found=true; else found=false; if(found) { for(int k=1;k<center;k++) { if(cur<=Low[i+center-k] && cur<=Low[i+center+k]) found=true; else {found=false; break;} } } if(found) {Ext2[i+center]=cur; Ext2[i+center+1]=0;} } //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: