scfx:
Good morning,
I write a simple indicator for stochastic cross with the arrow is either above or below the bar.
However, I want the arrow to be at the bottom of the chart window, say 0.5 inch above the lower border of the window.
I don't know how to do it and I wonder if you can help me.
Have you tried using . . .
#property indicator_separate_window
Hi RapterUK,
It works!
Thank you .
HHC
Hi Everyone,
I would like to include the stochastic cross arrow on the stochastic window. So I search on MQL4 and find the stochastic code.
I try to put 1 more indicator_color for the new buffer together with a short code to detect the cut.
However, it doesn't work.
Could you tell me what I am doing wrong?
Thank you.
HHC
//+------------------------------------------------------------------+ //| Stochastic.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 100 #property indicator_buffers 3 #property indicator_color1 LightSeaGreen #property indicator_color2 Red #property indicator_color3 Yellow //Color for cutting arrow //---- input parameters extern int KPeriod=5; extern int DPeriod=3; extern int Slowing=3; //---- buffers double MainBuffer[]; double SignalBuffer[]; int cutbuffer[]; //Cutting Buffer for arrow double HighesBuffer[]; double LowesBuffer[]; //---- int draw_begin1=0; int draw_begin2=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { string short_name; //---- 2 additional buffers are used for counting. IndicatorBuffers(5); SetIndexBuffer(3, HighesBuffer); SetIndexBuffer(4, LowesBuffer); //---- indicator lines SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0, MainBuffer); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1, SignalBuffer); SetIndexStyle(2,DRAW_ARROW); SetIndexBuffer(2, cutbuffer); //index for cutting arrow //---- name for DataWindow and indicator subwindow label short_name="Sto("+KPeriod+","+DPeriod+","+Slowing+")"; IndicatorShortName(short_name); SetIndexLabel(0,short_name); SetIndexLabel(1,"Signal"); //---- draw_begin1=KPeriod+Slowing; draw_begin2=draw_begin1+DPeriod; SetIndexDrawBegin(0,draw_begin1); SetIndexDrawBegin(1,draw_begin2); //---- return(0); } //+------------------------------------------------------------------+ //| Stochastic oscillator | //+------------------------------------------------------------------+ int start() { int i,k,p; int counted_bars=IndicatorCounted(); double price; //---- if(Bars<=draw_begin2) return(0); //---- initial zero if(counted_bars<1) { for(i=1;i<=draw_begin1;i++) MainBuffer[Bars-i]=0; for(i=1;i<=draw_begin2;i++) SignalBuffer[Bars-i]=0; } //---- minimums counting i=Bars-KPeriod; if(counted_bars>KPeriod) i=Bars-counted_bars-1; while(i>=0) { double min=1000000; k=i+KPeriod-1; while(k>=i) { price=Low[k]; if(min>price) min=price; k--; } LowesBuffer[i]=min; i--; } //---- maximums counting i=Bars-KPeriod; if(counted_bars>KPeriod) i=Bars-counted_bars-1; while(i>=0) { double max=-1000000; k=i+KPeriod-1; while(k>=i) { price=High[k]; if(max<price) max=price; k--; } HighesBuffer[i]=max; i--; } //---- %K line i=Bars-draw_begin1; if(counted_bars>draw_begin1) i=Bars-counted_bars-1; while(i>=0) { double sumlow=0.0; double sumhigh=0.0; for(k=(i+Slowing-1);k>=i;k--) { sumlow+=Close[k]-LowesBuffer[k]; sumhigh+=HighesBuffer[k]-LowesBuffer[k]; } if(sumhigh==0.0) MainBuffer[i]=100.0; else MainBuffer[i]=sumlow/sumhigh*100; //mainbuffer i--; } //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; int limit=Bars-counted_bars; //---- signal line is simple movimg average for(i=0; i<limit; i++) SignalBuffer[i]=iMAOnArray(MainBuffer,Bars,DPeriod,0,MODE_SMA,i); //signal buffer //--- cutting arrow --- cutting arrow --- cutting arrow --- cutting arrow --- cutting arrow for (i=0;i<limit; i++) { p=i+1; if( (SignalBuffer[p]-MainBuffer[p])*(SignalBuffer[i]-MainBuffer[i])<=0) cutbuffer[i]=50; } //---- return(0); } //+------------------------------------------------------------------+
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Good morning,
I write a simple indicator for stochastic cross with the arrow is either above or below the bar.
However, I want the arrow to be at the bottom of the chart window, say 0.5 inch above the lower border of the window.
I don't know how to do it and I wonder if you can help me.
My code is below.
Thank you for your help.
HHC