#property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 DarkGreen #property indicator_color2 Red #property indicator_color3 DarkGreen #property indicator_color4 Red int MaMetod1 =1 ; int MaPeriod1 = 40; int MaMetod2 = 3; int MaPeriod2 = 10; bool IsLicenced = false; double da_Buffer1[]; double da_Buffer2[]; double da_Buffer3[]; double da_Buffer4[]; double da_Buffer5[]; double da_Buffer6[]; double da_Buffer7[]; double da_Buffer8[]; int n_CountedBars = 0; int n_Arrows = 0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(8); SetIndexStyle(0,DRAW_HISTOGRAM,0,2,DarkGreen); SetIndexBuffer(0,da_Buffer1); SetIndexStyle(1,DRAW_HISTOGRAM,0,2,Red); SetIndexBuffer(1,da_Buffer2); SetIndexStyle(2,DRAW_HISTOGRAM,0,3,DarkGreen); SetIndexBuffer(2,da_Buffer3); SetIndexStyle(3,DRAW_HISTOGRAM,0,3,Red); SetIndexBuffer(3,da_Buffer4); SetIndexDrawBegin(0,5); SetIndexBuffer(0,da_Buffer1); SetIndexBuffer(1,da_Buffer2); SetIndexBuffer(2,da_Buffer3); SetIndexBuffer(3,da_Buffer4); SetIndexBuffer(4,da_Buffer5); SetIndexBuffer(5,da_Buffer6); SetIndexBuffer(6,da_Buffer7); SetIndexBuffer(7,da_Buffer8); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- int n_tmp = 0; for(n_tmp=0;n_tmp < n_Arrows ;n_tmp++) { ObjectDelete(StringConcatenate("ARROW_",n_tmp)); } //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); //---- int n_tmp = 0; for(n_tmp=0;n_tmp < n_Arrows ;n_tmp++) { ObjectDelete(StringConcatenate("ARROW_",n_tmp)); } n_Arrows = 0; double dm_Open,dm_Close,dm_Low,dm_High; double dh_Open,dh_Close,dh_Low,dh_High; double dm_Close10,dm_Close45,dm_Close40; if (Bars <=10) { return (0); } n_CountedBars = IndicatorCounted(); if (n_CountedBars < 0) { return (-1); } if (n_CountedBars > 0) { } int n_pos1 = Bars ;//- n_CountedBars ;//-1; int n_pos2 = n_pos1; int n_OldState = 1; while(n_pos1 >= 0) { dm_Close10 = iMA(NULL,0,10,0,2,MODE_CLOSE,n_pos1); da_Buffer1[n_pos1] = dm_Close10; dm_Close40 = iMA(NULL,0,40,0,1,MODE_CLOSE,n_pos1); da_Buffer2[n_pos1]= dm_Close40; dm_Close45 = iMA(NULL,0,45,0,1,MODE_CLOSE,n_pos1); da_Buffer3[n_pos1] = dm_Close45; dm_Open=iMA(NULL,0,MaPeriod1,0,MaMetod1,MODE_OPEN,n_pos1); dm_Close=iMA(NULL,0,MaPeriod1,0,MaMetod1,MODE_CLOSE,n_pos1); dm_Low=iMA(NULL,0,MaPeriod1,0,MaMetod1,MODE_LOW,n_pos1); dm_High=iMA(NULL,0,MaPeriod1,0,MaMetod1,MODE_HIGH,n_pos1); dh_High=MathMax(dm_High, MathMax(dh_Open, dh_Close)); if (dh_High > 10) { dh_Low =dh_High *(1- 0.0002); } else { if (dh_High > 100) { dh_Low = dh_High *(1- 0.0002); } else { dh_Low = dh_High *(1- 0.0002); } } da_Buffer7[n_pos1]=dh_Low; da_Buffer8[n_pos1]=dh_High; da_Buffer5[n_pos1]=dh_Low;//dh_Open; da_Buffer6[n_pos1]=dh_High;//dh_Close; n_pos1--; } n_OldState = 1; for(n_pos1 =0;n_pos1<(n_pos2);n_pos1++) { if ((da_Buffer1[n_pos1] > da_Buffer3[n_pos1]) && (da_Buffer2[n_pos1] > da_Buffer3[n_pos1])) { if (n_OldState == 2) { if (n_Arrows>=1) { ObjectCreate(StringConcatenate("ARROW_",n_Arrows),OBJ_ARROW,0,iTime(NULL,0,n_pos1),MathMax(da_Buffer6[n_pos1],da_Buffer5[n_pos1])*1.0010); ObjectSet(StringConcatenate("ARROW_",n_Arrows),OBJPROP_COLOR,Yellow); ObjectSet(StringConcatenate("ARROW_",n_Arrows),OBJPROP_WIDTH,5); ObjectSet(StringConcatenate("ARROW_",n_Arrows),OBJPROP_ARROWCODE,218); if(n_pos1==n_pos2) Alert("Âô³ö"); } n_Arrows +=1; } n_OldState = 1; } else { if ((da_Buffer1[n_pos1] < da_Buffer3[n_pos1]) && (da_Buffer2[n_pos1] < da_Buffer3[n_pos1])) { if (n_OldState == 1) { if (n_Arrows>=0) { ObjectCreate(StringConcatenate("ARROW_",n_Arrows),OBJ_ARROW,0,iTime(NULL,0,n_pos1),MathMin(da_Buffer6[n_pos1],da_Buffer5[n_pos1])* 0.9995); ObjectSet(StringConcatenate("ARROW_",n_Arrows),OBJPROP_COLOR,Red); ObjectSet(StringConcatenate("ARROW_",n_Arrows),OBJPROP_WIDTH,5); ObjectSet(StringConcatenate("ARROW_",n_Arrows),OBJPROP_ARROWCODE,217); if(n_pos1==n_pos2) Alert("Âò½ø"); } n_Arrows+=1; } n_OldState = 2; } } if (n_OldState == 1) { } else { da_Buffer7[n_pos1]=da_Buffer6[n_pos1]; da_Buffer6[n_pos1]=da_Buffer5[n_pos1];//dh_High;//dh_Close; da_Buffer8[n_pos1]=da_Buffer5[n_pos1];//dh_High; da_Buffer5[n_pos1]=da_Buffer7[n_pos1];//dh_Low;//dh_Open; } } int i; for(i=0; i<(n_pos2); i++) da_Buffer1[i]=da_Buffer7[i]; for(i=0; i<(n_pos2); i++) da_Buffer2[i]=da_Buffer8[i]; for(i=0; i<(n_pos2); i++) da_Buffer3[i]=da_Buffer5[i]; for(i=0; i<(n_pos2); i++) da_Buffer4[i]=da_Buffer6[i]; //---- return(0); } //+------------------------------------------------------------------+