Try to ask your question on https://www.mql5.com/forum/en
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
Can someone please review code below and advise if this indicator code can be altered to keep chart arrows current.
Thanks in advance,
Wackena
//+------------------------------------------------------------------+ //| SHI_SilverTrendSig.mq4 | //| Copyright © 2003, VIAC.RU, OlegVS, GOODMAN, 2005 Shurka | //| shforex@narod.ru | //| | //| | //| Ïèøó ïðîãðàììû íà çàêàç | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Shurka" #property link "http://shforex.narod.ru" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_color2 Blue //---- Âõîäíûå ïàðàìåòðû extern int AllBars=0;//Äëÿ ñêîëüêè áàðîâ ñ÷èòàòü. 0 - äëÿ âñåõ. extern int Otstup=30;//Îòñòóï. extern double Per=9;//Ïåðèîä. int SH,NB,i,UD; double R,SHMax,SHMin; double BufD[]; double BufU[]; #define SH_BUY 1 #define SH_SELL -1 //+------------------------------------------------------------------+ //| Ôóíêöèÿ èíèöèàëèçàöèè | //+------------------------------------------------------------------+ int init() { // NB çàïèñûâàåì êîëè÷åñòâî áàðîâ äëÿ êîòîðûõ ñ÷èòàåì èíäèêàòîð if (Bars<AllBars+Per || AllBars==0) NB=Bars-Per; else NB=AllBars; IndicatorBuffers(2); IndicatorShortName("SHI_SilverTrendSig"); SetIndexStyle(0,DRAW_ARROW,0,1); SetIndexStyle(1,DRAW_ARROW,0,1); SetIndexArrow(0,233); SetIndexArrow(1,234); SetIndexBuffer(0,BufU); SetIndexBuffer(1,BufD); SetIndexDrawBegin(0,Bars-NB);//Èíäèêàòîð áóäåòîòîáðàæàòüñÿ òîëüêî äëÿ NB áàðîâ SetIndexDrawBegin(1,Bars-NB); ArrayInitialize(BufD,0.0);//Çàáü¸ì îáà áóôåðà íîëèêàìè. Èíà÷å áóäåò ìóñîð ïðè ñìåíå òàéìôðåéìà. ArrayInitialize(BufU,0.0); return(0); } //+------------------------------------------------------------------+ //| Ôóíêöèÿ äåèíèöèàëèçàöèè | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Ñîáñíà èíäèêàòîð | //+------------------------------------------------------------------+ int start() { int CB=IndicatorCounted(); /* Òóò âîò òà ñàìàÿ îïòèìèçàöèîííàÿ ôèøêà.  ÿçûê ââåäåíà ôóíêöèÿ, êîòîðàÿ âîçâðàùàåò êîëè÷åñòâî ïîñ÷èòàííûõ áàðîâ, ïðè÷¸ì î÷åíü õèòðî. Ïðè ïåðâîì âûçîâå èíäèêàòîðà ýòî 0, âñ¸ ïîíÿòíî, åù¸ íè÷åãî íå ñ÷èòàëîñü, à çàòåì âûäà¸ò êîëè÷åñòâî îáñ÷èòàííûõ áàðîâ ìèíóñ îäèí. Ò.å. åñëè âñåãî áàðîâ 100, òî ôóíêöèÿ âåðí¸ò 99. ß ââ¸ë òàêîé êîä, âûøå ó ìåíÿ îïðåäåëÿëàñü NB - êîë-âî áàðîâ ïîäëåæàùèõ îáñ÷¸òó.  ïðèíöèïå ýòîò ïàðàìåòð ìîæíî è âûêèíóòü, îäíàêî äëÿ òåõ êòî â òàíêå (I80286) ìîæíî è îñòàâèòü. Òàê âîò, çäåñü, ïðè ïåðâîì âûçîâå NB îñòà¸òñÿ ïðåæíåé, à ïðè ïîñëåäóþùèõ óìåíüøàåòñÿ äî ïîñëåäíåãî áàðà, ò.å. 1 èëè 2, íó èëè ñêîëüêî òàì îñòàëîñü ïîñ÷èòàòü*/ if(CB<0) return(-1); else if(NB>Bars-CB) NB=Bars-CB; for (SH=1;SH<NB;SH++)//Ïðî÷¸ñûâàåì ãðàôèê îò 1 äî NB { for (R=0,i=SH;i<SH+10;i++) {R+=(10+SH-i)*(High[i]-Low[i]);} R/=55; SHMax = High[Highest(NULL,0,MODE_HIGH,Per,SH)]; SHMin = Low[Lowest(NULL,0,MODE_LOW,Per,SH)]; if (Close[SH]<SHMin+(SHMax-SHMin)*Otstup/100 && UD!=SH_BUY) { BufU[SH]=Low[SH]-R*0.5; UD=SH_BUY; } if (Close[SH]>SHMax-(SHMax-SHMin)*Otstup/100 && UD!=SH_SELL) { BufD[SH]=High[SH]+R*0.5; UD=SH_SELL; } } return(0); }