1 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
3 //| JMA code: Copyright © 2005, Weld, Jurik Research |
\r
4 //| http://weld.torguem.net |
\r
5 //| MQL4+JJMA: Copyright © 2006, Nikolay Kositsin |
\r
6 //| Khabarovsk, farria@mail.redcom.ru |
\r
7 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
8 #property copyright "Nikolay Kositsin"
\r
9 #property link "farria@mail.redcom.ru"
\r
11 SSSSSS <<< Ôóíêöèÿ JJMASeries >>> SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
\r
13 ----------------------------- Íàçíà÷åíèå -------------------------------
\r
15 Ôóíêöèÿ JJMASeries ïðåäíàçíà÷åíà äëÿ èñïîëüçîâàíèÿ àëãîðèòìà JMA. ïðè íàïèñàíèè ëþáûõ èíäèêàòîðîâ òåõàíàëèçà, äëÿ çàìåíû ðàñ÷¸òà
\r
16 êëàññè÷åñêîãî óñðåäíåíèÿ íà ýòîò àëãîðèòì. Ôóíêöèÿ íå ðàáîòàåò, åñëè ïàðàìåòð nJMA.limit ïðèíèìàåò çíà÷åíèå, ðàâíîå íóëþ!
\r
17 Âñå èíäèêàòîðû, ñäåëàííûå ìíîþ äëÿ JJMASeries, âûïîëíåíû ñ ó÷¸òîì ýòîãî îãðàíè÷åíèÿ. Ôàéë ñëåäóåò ïîëîæèòü â ïàïêó
\r
18 MetaTrader\experts\include\
\r
20 -------------------------- âõîäíûå ïàðàìåòðû --------------------------
\r
22 nJMA.number - ïîðÿäêîâûé íîìåð îáðàùåíèÿ ê ôóíêöèè JJMASeries. (0, 1, 2, 3 è.ò.ä....)
\r
23 nJMA.dinJ - ïàðàìåòð, ïîçâîëÿþùèé èçìåíÿòü ïàðàìåòðû nJMA.Length è nJMA.Phase íà êàæäîì áàðå. 0 - çàïðåò èçìåíåíèÿ ïàðàìåòðîâ, ëþáîå äðóãîå çíà÷åíèå - ðàçðåøåíèå.
\r
24 nJMA.MaxBar - Ìàêñèìàëüíîå çíà÷åíèå, êîòîðîå ìîæåò ïðèíèìàòü íîìåð ðàñ÷èòûâàåìîãî áàðà(bar). Îáû÷íî ðàâíî Bars-1;
\r
25 nJMA.limit - Êîëè÷åñòâî åù¸ íå ïîäñ÷èòàííûõ áàðîâ ïëþñ îäèí èëè íîìåð ïîñåäíåãî íåïîäñ÷èòàííîãî áàðà, Äîëæíî áûòü îáÿçàòåëüíî ðàâíî: Bars-IndicatorCounted()-1;
\r
26 nJMA.Length - ãëóáèíà ñãëàæèâàíèÿ
\r
27 nJMA.Phase - ïàðàìåòð, èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíîãî ïðîöåññà;
\r
28 dJMA.series - Âõîäíîé ïàðàìåòð, ïî êîòîðîìó ïðîèçâîäèòñÿ ðàñ÷¸ò ôóíêöèè JJMASeries;
\r
29 nJMA.bar - íîìåð ðàñ÷èòûâàåìîãî áàðà, ïàðàìåòð äîëæåí èçìåíÿòüñÿ îïåðàòîðîì öèêëà îò ìàêñèìàëüíîãî çíà÷åíèÿ ê íóëåâîìó.
\r
30 nJMA.reset - ïàðàìåòð, ïðè çíà÷åíèè êîòîðîãî ðàâíûì -1 ïðîèñõîäèò ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries.
\r
32 ------------------------- âûõîäíûå ïàðàìåòðû ---------------------------
\r
34 JJMASeries() - çíà÷åíèå ôóíêöèè dJMA.JMA
\r
35 nJMA.reset - ïàðàìåòð, âîçâðàùàþùèé ïî ññûëêå çíà÷åíèå, îòëè÷èííîå îò 0 , åñëè ïðîèçîøëà îøèáêà â ðàñ÷¸òå ôóíêöèè,
\r
36 0, åñëè ðàñ÷¸ò ïðîø¸ë íîðìàëüíî. Ýòîò ïàðàìåòð ìîæåò áûòü òîëüêî ïåðåìåííîé, íî íå çíà÷åíèåì!!!
\r
38 --------------------- Ìåõàíèçì îáðàùåíèÿ ê ôóíêöèè ---------------------
\r
40 Ïåðåä îáðàùåíèÿìè ê ôóíêöèè JJMASeries , êîãäà êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ ðàâíî 0, ñëåäóåò ââåñòè è èíèöèàëèçèðîâàòü
\r
41 âíóòðåííèå ïåðåìåííûå ôóíêöèè, äëÿ ýòîãî íåîáõîäèìî îáðàòèòüñÿ ê ôóíêöèè ñî ñëåäóþùèìè ïàðàìåòðàìè:
\r
42 reset=-1; JJMA(0,MaxJMA.number+1,0,0,0,0,0,0,reset); èëè èëè JJMASeriesReset(MaxJMA.number+1);
\r
43 íåîáõîäèìî ñäåëàòü ïàðàìåòð nJMA.number(MaxJMA.number) ðàâíûì êîëè÷åñòâó îáðàùåíèé ê ôóíêöèè JJMASeries, òî åñòü íà åäèíèöó áîëüøå, ÷åì
\r
44 ìàêñèìàëüíûé nJMA.number. À ïàðàìåòðó nJMA.reset ïðèñâîèòü ÷åðåç ïåðåìåííóþ reset çíà÷åíèå -1( ñàìó ôóíêöèþ ïîäñòàâëÿòü -1 íåëüçÿ!
\r
45 Òîëüêî ÷åðåç ïàðàìåòð). Îñòàëüíûì ïàðàìåòðàì ïðèñâîèòü 0. Ïðè íàïèñàíèè èíäèêàòîðîâ è ýêñïåðòîâ ñ èñïîëüçîâàíèåì ôóíêöèè JJMASeries, íå
\r
46 ðåêîìåíäóåòñÿ ïåðåìåííûì äàâàòü èìåíà íà÷èíàþùèåñÿ ñ nJMA.... èëè dJMA....
\r
48 --------------------- Ïðèìåð îáðàùåíèÿ ê ôóíêöèè -----------------------
\r
51 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ
\r
52 int reset,bar,MaxBar,limit,counted_bars=IndicatorCounted();
\r
53 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè
\r
54 if (counted_bars<0)return(-1);
\r
55 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
\r
56 if (counted_bars>0) counted_bars--;
\r
57 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
\r
58 int limit=Bars-counted_bars-1;
\r
60 //----+ Ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries, nJMA.number=1(Îäíî îáðàùåíèå ê ôóíêöèè JJMASeries)
\r
61 if(limit==Bars-1)JJMASeriesReset(1);
\r
62 //----+ Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 0 äëÿ ðàñ÷¸òà áóôåðà Ind_Buffer[], ïàðàìåòðû nJMA.Phase è nJMA.Length íå ìåíÿþòñÿ íà êàæäîì áàðå (nJMA.din=0)
\r
63 for(bar=limit;bar>=0;bar--)
\r
66 Resalt=JJMASeries(0,0,Bars-1,limit,Phase,Length,Series,bar,reset);
\r
67 if (reset!=0)return(-1);
\r
68 Ind_Buffer[bar]=Resalt;
\r
72 //----+ îïðåäåëåíèå ôóíêöèè JJMASeries
\r
73 #include <JJMASeries.mqh>
\r
75 ---------- Ïðèìåð îáðàùåíèÿ ê ôóíêöèè ñ INDICATOR_COUNTED() ------------
\r
78 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ
\r
79 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó
\r
80 int reset,bar,MaxBar,limit,counted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1);
\r
81 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè
\r
82 if (counted_bars<0){INDICATOR_COUNTED(-1);return(-1);}
\r
83 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí
\r
84 if (counted_bars>0) counted_bars--;
\r
85 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ
\r
86 int limit=Bars-counted_bars-1;
\r
88 //----+ Ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries, nJMA.number=1(Îäíî îáðàùåíèå ê ôóíêöèè JJMASeries)
\r
89 if(limit==Bars-1)JJMASeriesReset(1);
\r
90 //----+ Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 0 äëÿ ðàñ÷¸òà áóôåðà Ind_Buffer[], ïàðàìåòðû nJMA.Phase è nJMA.Length íå ìåíÿþòñÿ íà êàæäîì áàðå (nJMA.din=0)
\r
91 for(bar=limit;bar>=0;bar--)
\r
94 Resalt=JJMASeries(0,0,Bars-1,limit,Phase,Length,Series,bar,reset);
\r
95 if (reset!=0){INDICATOR_COUNTED(-1);return(-1);}
\r
96 Ind_Buffer[bar]=Resalt;
\r
100 //----+ îïðåäåëåíèå ôóíêöèé JJMASeries è INDICATOR_COUNTED
\r
101 #include <JJMASeries.mqh>
\r
104 //SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
105 //+++++++++++++++++++++++++++++++++++++++++++++++++++++ <<< JJMASeries >>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|
\r
106 //SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
109 (int nJMA.number,int nJMA.din,int nJMA.MaxBar,int nJMA.limit,int nJMA.Phase,int nJMA.Length,double dJMA.series,int nJMA.bar,int& nJMA.reset)
\r
113 //----++ <<< Ââåäåíèå è èíèöèàëèçàöèÿ ïåðåìåííûõ >>> +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
114 static double dJMA.f18[1],dJMA.f38[1],dJMA.fA0,dJMA.fA8[1],dJMA.fC0[1],dJMA.fC8[1],dJMA.s8[1],dJMA.s18[1],dJMA.vv,dJMA.v1[1],dJMA.v2[1];
\r
115 static double dJMA.v3[1],dJMA.v4,dJMA.f90[1],dJMA.f78[1],dJMA.f88[1],dJMA.f98[1],dJMA.JMA[1],dJMA.list[1][128],dJMA.ring1[1][128];
\r
116 static double dJMA.ring2[1][11],dJMA.buffer[1][62],dJMA.mem1[1][8],dJMA.mem3[1][128],dJMA.mem4[1][128],dJMA.mem5[1][11],dJMA.f70;
\r
117 static double dJMA.mem8[1][128],dJMA.Kg[1],dJMA.Pf[1],dJMA.s20,dJMA.s10,dJMA.fB0,dJMA.fD0,dJMA.f8,dJMA.f60,dJMA.f20,dJMA.f28;
\r
118 static double dJMA.f30,dJMA.f40,dJMA.f48,dJMA.f58,dJMA.f68;
\r
119 static int nJMA.s28[1],nJMA.s30[1],nJMA.s38[1],nJMA.s40[1],nJMA.v5,nJMA.v6,nJMA.fE0,nJMA.fD8,nJMA.fE8,nJMA.val,nJMA.s48[1];
\r
120 static int nJMA.s58,nJMA.s60,nJMA.s68,nJMA.f0[1],nJMA.aa,nJMA.temp,nJMA.size,nJMA.s50[1],nJMA.s70[1],nJMA.LP2[1],nJMA.LP1[1];
\r
121 static int nJMA.countR1[1],nJMA.countR2[1],nJMA.countL[1],nJMA.ii,nJMA.jj,nJMA.n,nJMA.m,nJMA.mem2[1][9],nJMA.mem6[1][128];
\r
122 static int nJMA.mem7[1][11],nJMA.mem9[1][128];
\r
124 nJMA.m=nJMA.number;
\r
125 if(ArrayResize(dJMA.list, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.ring1, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
126 if(ArrayResize(dJMA.ring2, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.buffer, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
127 if(ArrayResize(dJMA.mem1, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.mem6, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
128 if(ArrayResize(nJMA.mem2, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.mem7, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
129 if(ArrayResize(dJMA.mem3, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.mem8, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
130 if(ArrayResize(dJMA.mem4, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.mem9, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
131 if(ArrayResize(dJMA.mem5, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.countR1,nJMA.m)==0){nJMA.reset=1;return(0);}
\r
132 if(ArrayResize(nJMA.countR2,nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.countL ,nJMA.m)==0){nJMA.reset=1;return(0);}
\r
133 if(ArrayResize(dJMA.Kg, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.Pf, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
134 if(ArrayResize(dJMA.f18, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.f38, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
135 if(ArrayResize(dJMA.fA8, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.fC0, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
136 if(ArrayResize(dJMA.fC8, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.s8, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
137 if(ArrayResize(dJMA.s18, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.JMA, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
138 if(ArrayResize(nJMA.s50, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.s70, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
139 if(ArrayResize(nJMA.LP2, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.LP1, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
140 if(ArrayResize(nJMA.s38, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.s40, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
141 if(ArrayResize(nJMA.s48, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.v1, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
142 if(ArrayResize(dJMA.v2, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.v3, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
143 if(ArrayResize(dJMA.f90, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.f78, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
144 if(ArrayResize(dJMA.f88, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.f98, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
145 if(ArrayResize(nJMA.s28, nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.s30, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
146 if(ArrayResize(nJMA.f0, nJMA.m)==0){nJMA.reset=1;return(0);}
\r
148 ArrayInitialize(dJMA.list,0.0);ArrayInitialize(dJMA.ring1,0.0);ArrayInitialize(dJMA.ring2,0.0);ArrayInitialize(dJMA.buffer,0.0);
\r
149 ArrayInitialize(dJMA.mem1,0.0);ArrayInitialize(nJMA.mem2, 0 );ArrayInitialize(dJMA.mem3, 0.0);ArrayInitialize(dJMA.mem4, 0.0);
\r
150 ArrayInitialize(dJMA.mem5,0.0);ArrayInitialize(nJMA.mem6, 0 );ArrayInitialize(nJMA.mem7, 0 );ArrayInitialize(dJMA.mem8, 0.0);
\r
151 ArrayInitialize(nJMA.mem9,0 );ArrayInitialize(nJMA.countR1,0);ArrayInitialize(nJMA.countR2,0);ArrayInitialize(nJMA.countL,0 );
\r
152 ArrayInitialize(dJMA.Kg, 0.0);ArrayInitialize(dJMA.Pf, 0.0);ArrayInitialize(dJMA.f18, 0.0);ArrayInitialize(dJMA.f38, 0.0);
\r
153 ArrayInitialize(dJMA.fA8, 0.0);ArrayInitialize(dJMA.fC0, 0.0);ArrayInitialize(dJMA.fC8, 0.0);ArrayInitialize(dJMA.s8, 0.0);
\r
154 ArrayInitialize(dJMA.s18, 0.0);ArrayInitialize(dJMA.JMA, 0.0);ArrayInitialize(nJMA.s50, 0 );ArrayInitialize(nJMA.s70, 0 );
\r
155 ArrayInitialize(nJMA.LP2, 0 );ArrayInitialize(nJMA.LP1, 0 );ArrayInitialize(nJMA.s38, 0 );ArrayInitialize(nJMA.s40, 0 );
\r
156 ArrayInitialize(nJMA.s48, 0 );ArrayInitialize(dJMA.v1, 0 );ArrayInitialize(dJMA.v2, 0 );ArrayInitialize(dJMA.v3, 0 );
\r
157 ArrayInitialize(dJMA.f90, 0.0);ArrayInitialize(dJMA.f78, 0.0);ArrayInitialize(dJMA.f88, 0.0);ArrayInitialize(dJMA.f98, 0.0);
\r
158 ArrayInitialize(nJMA.s28, 0 );ArrayInitialize(nJMA.s30, 0 );ArrayInitialize(nJMA.f0, 1 );
\r
160 nJMA.reset=0;return(1);
\r
161 //----++SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
165 if (nJMA.bar> nJMA.MaxBar){nJMA.reset=0;return(0.0);}
\r
166 nJMA.n=nJMA.number;
\r
167 if((nJMA.bar==nJMA.MaxBar)||(nJMA.din!=0))
\r
169 //----++ <<< Ðàñ÷¸ò êîýôôèöèåíòîâ >>> +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
171 if(nJMA.Length < 1.0000000002) Dr = 0.0000000001;
\r
172 else Dr= (nJMA.Length - 1.0) / 2.0;
\r
173 if((nJMA.Phase >= -100)&&(nJMA.Phase <= 100))dJMA.Pf[nJMA.n] = nJMA.Phase / 100.0 + 1.5;
\r
174 if (nJMA.Phase > 100) dJMA.Pf[nJMA.n] = 2.5;
\r
175 if (nJMA.Phase < -100) dJMA.Pf[nJMA.n] = 0.5;
\r
176 Dr = Dr * 0.9; dJMA.Kg[nJMA.n] = Dr/(Dr + 2.0);
\r
177 Ds=MathSqrt(Dr);Dl=MathLog(Ds); dJMA.v1[nJMA.n]= Dl;dJMA.v2[nJMA.n] = dJMA.v1[nJMA.n];
\r
178 if((dJMA.v1[nJMA.n] / MathLog(2.0)) + 2.0 < 0.0) dJMA.v3[nJMA.n]= 0.0;
\r
179 else dJMA.v3[nJMA.n]=(dJMA.v2[nJMA.n]/MathLog(2.0))+ 2.0;
\r
180 dJMA.f98[nJMA.n]= dJMA.v3[nJMA.n];
\r
181 if( dJMA.f98[nJMA.n] >= 2.5 ) dJMA.f88[nJMA.n] = dJMA.f98[nJMA.n] - 2.0;
\r
182 else dJMA.f88[nJMA.n]= 0.5;
\r
183 dJMA.f78[nJMA.n]= Ds * dJMA.f98[nJMA.n]; dJMA.f90[nJMA.n]= dJMA.f78[nJMA.n] / (dJMA.f78[nJMA.n] + 1.0);
\r
184 //----++SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
186 if(nJMA.bar==nJMA.MaxBar)
\r
188 //----+----------------------------------------------------------------+
\r
189 nJMA.f0[nJMA.n]=1; nJMA.s28[nJMA.n]=63; nJMA.s30[nJMA.n]=64;
\r
190 for(int kk=0;kk<=nJMA.s28[nJMA.n];kk++)dJMA.list[nJMA.n][kk]=-1000000.0;
\r
191 for(kk=nJMA.s30[nJMA.n]; kk<=127; kk++)dJMA.list[nJMA.n][kk]= 1000000.0;
\r
192 //----+----------------------------------------------------------------+
\r
195 if((nJMA.bar==nJMA.limit)&&(nJMA.limit<nJMA.MaxBar))
\r
197 //----+ <<< Âîññòàíîâëåíèå çíà÷åíèé ïåðåìåííûõ >>> +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
198 int nJMA.Tnew=Time[nJMA.limit+1];
\r
199 //--+ ïðîâåðêà íà îøèáêè
\r
200 if(nJMA.Tnew!=nJMA.mem2[nJMA.n][01])
\r
203 //--+ èíäèêàöèÿ îøèáêè â ðàñ÷¸òå âõîäíîãî ïàðàìåòðà nJMA.limit ôóíêöèè JJMASeries()
\r
204 if (nJMA.Tnew>nJMA.mem2[nJMA.n][01])
\r
206 Print("JJMASeries number ="+nJMA.n+". ERROR01");
\r
207 Print("JJMASeries number ="+nJMA.n+". Ïàðàìåòð nJMA.limit ôóíêöèè JJMASeries ìåíüøå, ÷åì íåîáõîäèìî");
\r
211 int nJMA.LimitERROR=nJMA.limit+1-iBarShift(NULL,0,nJMA.mem2[nJMA.n][01],TRUE);
\r
212 Print("JMASerries number ="+nJMA.n+". ERROR02");
\r
213 Print("JJMASeries number ="+nJMA.n+". Ïàðàìåòð nJMA.limit ôóíêöèè JJMASeries áîëüøå, ÷åì íåîáõîäèìî íà"+nJMA.LimitERROR+"");
\r
215 //--+ Âîçâðàò ÷åðåç nJMA.reset=-1; îøèáêè â ðàñ÷¸òå ôóíêöèè JJMASeries
\r
219 for(nJMA.ii=nJMA.countL [nJMA.n]-1;nJMA.ii>=0;nJMA.ii--)
\r
220 {nJMA.temp=nJMA.mem9[nJMA.n][nJMA.ii];dJMA.list [nJMA.n][nJMA.temp]=dJMA.mem8[nJMA.n][nJMA.ii];}
\r
222 for(nJMA.ii=nJMA.countR1[nJMA.n]-1;nJMA.ii>=0;nJMA.ii--)
\r
223 {nJMA.temp=nJMA.mem6[nJMA.n][nJMA.ii];dJMA.ring1[nJMA.n][nJMA.temp]=dJMA.mem4[nJMA.n][nJMA.ii];}
\r
225 for(nJMA.ii=nJMA.countR2[nJMA.n]-1;nJMA.ii>=0;nJMA.ii--)
\r
226 {nJMA.temp=nJMA.mem7[nJMA.n][nJMA.ii];dJMA.ring2[nJMA.n][nJMA.temp]=dJMA.mem5[nJMA.n][nJMA.ii];}
\r
228 dJMA.fC0[nJMA.n]=dJMA.mem1[nJMA.n][00];dJMA.fC8[nJMA.n]=dJMA.mem1[nJMA.n][01];dJMA.fA8[nJMA.n]=dJMA.mem1[nJMA.n][02];
\r
229 dJMA.s8 [nJMA.n]=dJMA.mem1[nJMA.n][03];dJMA.f18[nJMA.n]=dJMA.mem1[nJMA.n][04];dJMA.f38[nJMA.n]=dJMA.mem1[nJMA.n][05];
\r
230 dJMA.s18[nJMA.n]=dJMA.mem1[nJMA.n][06];dJMA.JMA[nJMA.n]=dJMA.mem1[nJMA.n][07];nJMA.s38[nJMA.n]=nJMA.mem2[nJMA.n][02];
\r
231 nJMA.s48[nJMA.n]=nJMA.mem2[nJMA.n][03];nJMA.s50[nJMA.n]=nJMA.mem2[nJMA.n][04];nJMA.LP1[nJMA.n]=nJMA.mem2[nJMA.n][05];
\r
232 nJMA.LP2[nJMA.n]=nJMA.mem2[nJMA.n][06];nJMA.s40[nJMA.n]=nJMA.mem2[nJMA.n][07];nJMA.s70[nJMA.n]=nJMA.mem2[nJMA.n][08];
\r
233 //----+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
235 if (nJMA.bar>1){nJMA.countR1[nJMA.n]=0;nJMA.countR2[nJMA.n]=0;nJMA.countL[nJMA.n]=0;}
\r
237 if (nJMA.LP1[nJMA.n]<61){nJMA.LP1[nJMA.n]++; dJMA.buffer[nJMA.n][nJMA.LP1[nJMA.n]]=dJMA.series;}
\r
238 if (nJMA.LP1[nJMA.n]>30)
\r
240 //++++++++++++++++++
\r
241 if (nJMA.f0[nJMA.n] != 0)
\r
243 nJMA.f0[nJMA.n] = 0; nJMA.v5 = 0;
\r
244 for( nJMA.ii=0; nJMA.ii<=29; nJMA.ii++) if (dJMA.buffer[nJMA.n][nJMA.ii+1] != dJMA.buffer[nJMA.n][nJMA.ii]){ nJMA.v5 = 1; break; }
\r
245 nJMA.fD8 = nJMA.v5*30;
\r
246 if (nJMA.fD8 == 0) dJMA.f38[nJMA.n] = dJMA.series; else dJMA.f38[nJMA.n] = dJMA.buffer[nJMA.n][1];
\r
247 dJMA.f18[nJMA.n] = dJMA.f38[nJMA.n];
\r
248 if (nJMA.fD8 > 29) nJMA.fD8 = 29;
\r
251 for(nJMA.ii=nJMA.fD8; nJMA.ii>=0; nJMA.ii--)
\r
253 nJMA.val=31-nJMA.ii;
\r
254 if (nJMA.ii == 0) dJMA.f8 = dJMA.series; else dJMA.f8 = dJMA.buffer[nJMA.n][nJMA.val];
\r
255 dJMA.f28 = dJMA.f8 - dJMA.f18[nJMA.n]; dJMA.f48 = dJMA.f8 - dJMA.f38[nJMA.n];
\r
256 if (MathAbs(dJMA.f28) > MathAbs(dJMA.f48)) dJMA.v2[nJMA.n] = MathAbs(dJMA.f28); else dJMA.v2[nJMA.n] = MathAbs(dJMA.f48);
\r
257 dJMA.fA0 = dJMA.v2[nJMA.n]; dJMA.vv = dJMA.fA0 + 0.0000000001; //{1.0e-10;}
\r
258 if (nJMA.s48[nJMA.n] <= 1) nJMA.s48[nJMA.n] = 127; else nJMA.s48[nJMA.n] = nJMA.s48[nJMA.n] - 1;
\r
259 if (nJMA.s50[nJMA.n] <= 1) nJMA.s50[nJMA.n] = 10; else nJMA.s50[nJMA.n] = nJMA.s50[nJMA.n] - 1;
\r
260 if (nJMA.s70[nJMA.n] < 128) nJMA.s70[nJMA.n] = nJMA.s70[nJMA.n] + 1;
\r
261 dJMA.s8[nJMA.n] = dJMA.s8[nJMA.n] + dJMA.vv - dJMA.ring2[nJMA.n][nJMA.s50[nJMA.n]];
\r
265 //--+ <<< Ñîõðàíåíèå çíà÷åíèé äëÿ âîññòàíîâëåíèÿ áóôåðà >>> +ssssssssssssssssss+
\r
266 dJMA.mem5[nJMA.n][nJMA.countR2[nJMA.n]]=dJMA.ring2[nJMA.n][nJMA.s50[nJMA.n]];
\r
267 nJMA.mem7[nJMA.n][nJMA.countR2[nJMA.n]]=nJMA.s50[nJMA.n];nJMA.countR2[nJMA.n]++;
\r
268 //--++sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+
\r
270 dJMA.ring2[nJMA.n][nJMA.s50[nJMA.n]] = dJMA.vv;
\r
271 if (nJMA.s70[nJMA.n] > 10) dJMA.s20 = dJMA.s8[nJMA.n] / 10.0; else dJMA.s20 = dJMA.s8[nJMA.n] / nJMA.s70[nJMA.n];
\r
272 if (nJMA.s70[nJMA.n] > 127)
\r
274 dJMA.s10 = dJMA.ring1[nJMA.n][nJMA.s48[nJMA.n]];
\r
278 //--+ <<< Ñîõðàíåíèå çíà÷åíèé äëÿ âîññòàíîâëåíèÿ áóôåðà >>> +sssssssssssssssssss+
\r
279 dJMA.mem4[nJMA.n][nJMA.countR1[nJMA.n]]=dJMA.ring1[nJMA.n][nJMA.s48[nJMA.n]];
\r
280 nJMA.mem6[nJMA.n][nJMA.countR1[nJMA.n]]=nJMA.s48[nJMA.n];nJMA.countR1[nJMA.n]++;
\r
281 //--++ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+
\r
283 dJMA.ring1[nJMA.n][nJMA.s48[nJMA.n]] = dJMA.s20; nJMA.s68 = 64; nJMA.s58 = nJMA.s68;
\r
284 while (nJMA.s68 > 1)
\r
286 if (dJMA.list[nJMA.n][nJMA.s58] < dJMA.s10){nJMA.s68 = nJMA.s68 *0.5; nJMA.s58 = nJMA.s58 + nJMA.s68;}
\r
288 if (dJMA.list[nJMA.n][nJMA.s58]<= dJMA.s10) nJMA.s68 = 1; else{nJMA.s68 = nJMA.s68 *0.5; nJMA.s58 = nJMA.s58 - nJMA.s68;}
\r
295 //--+ <<< Ñîõðàíåíèå çíà÷åíèé äëÿ âîññòàíîâëåíèÿ áóôåðà >>> +sssssssssssssssssss+
\r
296 dJMA.mem4[nJMA.n][nJMA.countR1[nJMA.n]]=dJMA.ring1[nJMA.n][nJMA.s48[nJMA.n]];
\r
297 nJMA.mem6[nJMA.n][nJMA.countR1[nJMA.n]]=nJMA.s48[nJMA.n];nJMA.countR1[nJMA.n]++;
\r
298 //--++ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+
\r
300 dJMA.ring1[nJMA.n][nJMA.s48[nJMA.n]] = dJMA.s20;
\r
301 if (nJMA.s28[nJMA.n] + nJMA.s30[nJMA.n] > 127){nJMA.s30[nJMA.n] = nJMA.s30[nJMA.n] - 1; nJMA.s58 = nJMA.s30[nJMA.n];}
\r
302 else{nJMA.s28[nJMA.n] = nJMA.s28[nJMA.n] + 1; nJMA.s58 = nJMA.s28[nJMA.n];}
\r
303 if (nJMA.s28[nJMA.n] > 96) nJMA.s38[nJMA.n] = 96; else nJMA.s38[nJMA.n] = nJMA.s28[nJMA.n];
\r
304 if (nJMA.s30[nJMA.n] < 32) nJMA.s40[nJMA.n] = 32; else nJMA.s40[nJMA.n] = nJMA.s30[nJMA.n];
\r
306 nJMA.s68 = 64; nJMA.s60 = nJMA.s68;
\r
307 while (nJMA.s68 > 1)
\r
309 if (dJMA.list[nJMA.n][nJMA.s60] >= dJMA.s20)
\r
311 if (dJMA.list[nJMA.n][nJMA.s60 - 1] <= dJMA.s20) nJMA.s68 = 1; else {nJMA.s68 = nJMA.s68 *0.5; nJMA.s60 = nJMA.s60 - nJMA.s68; }
\r
313 else{nJMA.s68 = nJMA.s68 *0.5; nJMA.s60 = nJMA.s60 + nJMA.s68;}
\r
314 if ((nJMA.s60 == 127) && (dJMA.s20 > dJMA.list[nJMA.n][127])) nJMA.s60 = 128;
\r
316 if (nJMA.s70[nJMA.n] > 127)
\r
318 if (nJMA.s58 >= nJMA.s60)
\r
320 if ((nJMA.s38[nJMA.n] + 1 > nJMA.s60) && (nJMA.s40[nJMA.n] - 1 < nJMA.s60)) dJMA.s18[nJMA.n] = dJMA.s18[nJMA.n] + dJMA.s20;
\r
322 if ((nJMA.s40[nJMA.n] + 0 > nJMA.s60) && (nJMA.s40[nJMA.n] - 1 < nJMA.s58)) dJMA.s18[nJMA.n]
\r
323 = dJMA.s18[nJMA.n] + dJMA.list[nJMA.n][nJMA.s40[nJMA.n] - 1];
\r
326 if (nJMA.s40[nJMA.n] >= nJMA.s60) {if ((nJMA.s38[nJMA.n] + 1 < nJMA.s60) && (nJMA.s38[nJMA.n] + 1 > nJMA.s58)) dJMA.s18[nJMA.n]
\r
327 = dJMA.s18[nJMA.n] + dJMA.list[nJMA.n][nJMA.s38[nJMA.n] + 1]; }
\r
328 else if (nJMA.s38[nJMA.n] + 2 > nJMA.s60) dJMA.s18[nJMA.n] = dJMA.s18[nJMA.n] + dJMA.s20;
\r
329 else if ((nJMA.s38[nJMA.n] + 1 < nJMA.s60) && (nJMA.s38[nJMA.n] + 1 > nJMA.s58)) dJMA.s18[nJMA.n]
\r
330 = dJMA.s18[nJMA.n] + dJMA.list[nJMA.n][nJMA.s38[nJMA.n] + 1];
\r
331 if (nJMA.s58 > nJMA.s60)
\r
333 if ((nJMA.s40[nJMA.n] - 1 < nJMA.s58) && (nJMA.s38[nJMA.n] + 1 > nJMA.s58)) dJMA.s18[nJMA.n] = dJMA.s18[nJMA.n] - dJMA.list[nJMA.n][nJMA.s58];
\r
335 if ((nJMA.s38[nJMA.n] < nJMA.s58) && (nJMA.s38[nJMA.n] + 1 > nJMA.s60)) dJMA.s18[nJMA.n] = dJMA.s18[nJMA.n] - dJMA.list[nJMA.n][nJMA.s38[nJMA.n]];
\r
339 if ((nJMA.s38[nJMA.n] + 1 > nJMA.s58) && (nJMA.s40[nJMA.n] - 1 < nJMA.s58)) dJMA.s18[nJMA.n] = dJMA.s18[nJMA.n] - dJMA.list[nJMA.n][nJMA.s58];
\r
341 if ((nJMA.s40[nJMA.n] + 0 > nJMA.s58) && (nJMA.s40[nJMA.n] - 0 < nJMA.s60)) dJMA.s18[nJMA.n] = dJMA.s18[nJMA.n] - dJMA.list[nJMA.n][nJMA.s40[nJMA.n]];
\r
344 if (nJMA.s58 <= nJMA.s60)
\r
346 if (nJMA.s58 >= nJMA.s60)
\r
350 //--+ <<< Ñîõðàíåíèå çíà÷åíèé äëÿ âîññòàíîâëåíèÿ áóôåðà >>> +ssssssssss+
\r
351 dJMA.mem8[nJMA.n][nJMA.countL[nJMA.n]]=dJMA.list[nJMA.n][nJMA.s60];
\r
352 nJMA.mem9[nJMA.n][nJMA.countL[nJMA.n]]=nJMA.s60;nJMA.countL[nJMA.n]++;
\r
353 //--++sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+
\r
355 dJMA.list[nJMA.n][nJMA.s60] = dJMA.s20;
\r
361 //--+ <<< Ñîõðàíåíèå çíà÷åíèé äëÿ âîññòàíîâëåíèÿ áóôåðà >>> +sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+
\r
362 nJMA.size=nJMA.s60-nJMA.s58;for(nJMA.aa=0; nJMA.aa<=nJMA.size-2;nJMA.aa++){dJMA.mem8[nJMA.n][nJMA.countL[nJMA.n]+nJMA.aa]
\r
363 =dJMA.list[nJMA.n][nJMA.s58+nJMA.aa];nJMA.mem9[nJMA.n][nJMA.countL[nJMA.n]+nJMA.aa]=nJMA.s58+1+nJMA.aa;}
\r
364 nJMA.countL[nJMA.n]=nJMA.countL[nJMA.n]+nJMA.size;dJMA.mem8[nJMA.n][nJMA.countL[nJMA.n]]=dJMA.list[nJMA.n][nJMA.s60-1];
\r
365 nJMA.mem9[nJMA.n][nJMA.countL[nJMA.n]]=nJMA.s60-1;nJMA.countL[nJMA.n]++;
\r
366 //--++ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+
\r
368 for( nJMA.jj = nJMA.s58 + 1; nJMA.jj<=nJMA.s60 - 1 ;nJMA.jj++)dJMA.list[nJMA.n][nJMA.jj - 1] = dJMA.list[nJMA.n][nJMA.jj];
\r
369 dJMA.list[nJMA.n][nJMA.s60 - 1] = dJMA.s20;
\r
376 //--+ <<< Ñîõðàíåíèå çíà÷åíèé äëÿ âîññòàíîâëåíèÿ áóôåðà >>> +ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+
\r
377 nJMA.size=nJMA.s58-nJMA.s60+1;for(nJMA.aa=0; nJMA.aa<=nJMA.size-2;nJMA.aa++){dJMA.mem8[nJMA.n][nJMA.countL[nJMA.n]+nJMA.aa]
\r
378 =dJMA.list[nJMA.n][nJMA.s58-nJMA.aa];nJMA.mem9[nJMA.n][nJMA.countL[nJMA.n]+nJMA.aa]=nJMA.s58-1-nJMA.aa;}
\r
379 nJMA.countL[nJMA.n]=nJMA.countL[nJMA.n]+nJMA.size;dJMA.mem8[nJMA.n][nJMA.countL[nJMA.n]]=dJMA.list[nJMA.n][nJMA.s60];
\r
380 nJMA.mem9[nJMA.n][nJMA.countL[nJMA.n]]=nJMA.s60;nJMA.countL[nJMA.n]++;
\r
381 //--++sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+
\r
383 for( nJMA.jj = nJMA.s58 - 1; nJMA.jj>=nJMA.s60 ;nJMA.jj--) dJMA.list[nJMA.n][nJMA.jj + 1] = dJMA.list[nJMA.n][nJMA.jj];
\r
384 dJMA.list[nJMA.n][nJMA.s60] = dJMA.s20;
\r
386 if (nJMA.s70[nJMA.n] <= 127)
\r
388 dJMA.s18[nJMA.n] = 0;
\r
389 for( nJMA.jj = nJMA.s40[nJMA.n] ; nJMA.jj<=nJMA.s38[nJMA.n] ;nJMA.jj++) dJMA.s18[nJMA.n] = dJMA.s18[nJMA.n] + dJMA.list[nJMA.n][nJMA.jj];
\r
391 dJMA.f60 = dJMA.s18[nJMA.n] / (nJMA.s38[nJMA.n] - nJMA.s40[nJMA.n] + 1.0);
\r
392 if (nJMA.LP2[nJMA.n] + 1 > 31) nJMA.LP2[nJMA.n] = 31; else nJMA.LP2[nJMA.n] = nJMA.LP2[nJMA.n] + 1;
\r
393 if (nJMA.LP2[nJMA.n] <= 30)
\r
395 if (dJMA.f28 > 0.0) dJMA.f18[nJMA.n] = dJMA.f8; else dJMA.f18[nJMA.n] = dJMA.f8 - dJMA.f28 * dJMA.f90[nJMA.n];
\r
396 if (dJMA.f48 < 0.0) dJMA.f38[nJMA.n] = dJMA.f8; else dJMA.f38[nJMA.n] = dJMA.f8 - dJMA.f48 * dJMA.f90[nJMA.n];
\r
397 dJMA.JMA[nJMA.n] = dJMA.series;
\r
398 if (nJMA.LP2[nJMA.n]!=30) continue;
\r
399 if (nJMA.LP2[nJMA.n]==30)
\r
401 dJMA.fC0[nJMA.n] = dJMA.series;
\r
402 if ( MathCeil(dJMA.f78[nJMA.n]) >= 1) dJMA.v4 = MathCeil(dJMA.f78[nJMA.n]); else dJMA.v4 = 1.0;
\r
404 if(dJMA.v4>0)nJMA.fE8 = MathFloor(dJMA.v4);else{if(dJMA.v4<0)nJMA.fE8 = MathCeil (dJMA.v4);else nJMA.fE8 = 0.0;}
\r
406 if (MathFloor(dJMA.f78[nJMA.n]) >= 1) dJMA.v2[nJMA.n] = MathFloor(dJMA.f78[nJMA.n]); else dJMA.v2[nJMA.n] = 1.0;
\r
408 if(dJMA.v2[nJMA.n]>0)nJMA.fE0 = MathFloor(dJMA.v2[nJMA.n]);else{if(dJMA.v2[nJMA.n]<0)nJMA.fE0 = MathCeil (dJMA.v2[nJMA.n]);else nJMA.fE0 = 0.0;}
\r
410 if (nJMA.fE8== nJMA.fE0) dJMA.f68 = 1.0; else {dJMA.v4 = nJMA.fE8 - nJMA.fE0; dJMA.f68 = (dJMA.f78[nJMA.n] - nJMA.fE0) / dJMA.v4;}
\r
411 if (nJMA.fE0 <= 29) nJMA.v5 = nJMA.fE0; else nJMA.v5 = 29;
\r
412 if (nJMA.fE8 <= 29) nJMA.v6 = nJMA.fE8; else nJMA.v6 = 29;
\r
413 dJMA.fA8[nJMA.n] = (dJMA.series - dJMA.buffer[nJMA.n][nJMA.LP1[nJMA.n] - nJMA.v5]) * (1.0 - dJMA.f68) / nJMA.fE0 + (dJMA.series
\r
414 - dJMA.buffer[nJMA.n][nJMA.LP1[nJMA.n] - nJMA.v6]) * dJMA.f68 / nJMA.fE8;
\r
419 if (dJMA.f98[nJMA.n] >= MathPow(dJMA.fA0/dJMA.f60, dJMA.f88[nJMA.n])) dJMA.v1[nJMA.n] = MathPow(dJMA.fA0/dJMA.f60, dJMA.f88[nJMA.n]);
\r
420 else dJMA.v1[nJMA.n] = dJMA.f98[nJMA.n];
\r
421 if (dJMA.v1[nJMA.n] < 1.0) dJMA.v2[nJMA.n] = 1.0;
\r
423 {if(dJMA.f98[nJMA.n] >= MathPow(dJMA.fA0/dJMA.f60, dJMA.f88[nJMA.n])) dJMA.v3[nJMA.n] = MathPow(dJMA.fA0/dJMA.f60, dJMA.f88[nJMA.n]);
\r
424 else dJMA.v3[nJMA.n] = dJMA.f98[nJMA.n]; dJMA.v2[nJMA.n] = dJMA.v3[nJMA.n];}
\r
425 dJMA.f58 = dJMA.v2[nJMA.n]; dJMA.f70 = MathPow(dJMA.f90[nJMA.n], MathSqrt(dJMA.f58));
\r
426 if (dJMA.f28 > 0.0) dJMA.f18[nJMA.n] = dJMA.f8; else dJMA.f18[nJMA.n] = dJMA.f8 - dJMA.f28 * dJMA.f70;
\r
427 if (dJMA.f48 < 0.0) dJMA.f38[nJMA.n] = dJMA.f8; else dJMA.f38[nJMA.n] = dJMA.f8 - dJMA.f48 * dJMA.f70;
\r
430 if (nJMA.LP2[nJMA.n] >30)
\r
432 dJMA.f30 = MathPow(dJMA.Kg[nJMA.n], dJMA.f58);
\r
433 dJMA.fC0[nJMA.n] =(1.0 - dJMA.f30) * dJMA.series + dJMA.f30 * dJMA.fC0[nJMA.n];
\r
434 dJMA.fC8[nJMA.n] =(dJMA.series - dJMA.fC0[nJMA.n]) * (1.0 - dJMA.Kg[nJMA.n]) + dJMA.Kg[nJMA.n] * dJMA.fC8[nJMA.n];
\r
435 dJMA.fD0 = dJMA.Pf[nJMA.n] * dJMA.fC8[nJMA.n] + dJMA.fC0[nJMA.n];
\r
436 dJMA.f20 = dJMA.f30 *(-2.0);
\r
437 dJMA.f40 = dJMA.f30 * dJMA.f30;
\r
438 dJMA.fB0 = dJMA.f20 + dJMA.f40 + 1.0;
\r
439 dJMA.fA8[nJMA.n] =(dJMA.fD0 - dJMA.JMA[nJMA.n]) * dJMA.fB0 + dJMA.f40 * dJMA.fA8[nJMA.n];
\r
440 dJMA.JMA[nJMA.n] = dJMA.JMA[nJMA.n] + dJMA.fA8[nJMA.n];
\r
443 //++++++++++++++++++
\r
444 if (nJMA.LP1[nJMA.n] <=30)dJMA.JMA[nJMA.n]=0.0;
\r
447 //--+ <<< Ñîõðàíåíèå çíà÷åíèé ïåðåìåííûõ >>> +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
448 dJMA.mem1[nJMA.n][00]=dJMA.fC0[nJMA.n];dJMA.mem1[nJMA.n][01]=dJMA.fC8[nJMA.n];dJMA.mem1[nJMA.n][02]=dJMA.fA8[nJMA.n];
\r
449 dJMA.mem1[nJMA.n][03]= dJMA.s8[nJMA.n];dJMA.mem1[nJMA.n][04]=dJMA.f18[nJMA.n];dJMA.mem1[nJMA.n][05]=dJMA.f38[nJMA.n];
\r
450 dJMA.mem1[nJMA.n][06]=dJMA.s18[nJMA.n];dJMA.mem1[nJMA.n][07]=dJMA.JMA[nJMA.n];nJMA.mem2[nJMA.n][02]=nJMA.s38[nJMA.n];
\r
451 nJMA.mem2[nJMA.n][03]=nJMA.s48[nJMA.n];nJMA.mem2[nJMA.n][04]=nJMA.s50[nJMA.n];nJMA.mem2[nJMA.n][05]=nJMA.LP1[nJMA.n];
\r
452 nJMA.mem2[nJMA.n][06]=nJMA.LP2[nJMA.n];nJMA.mem2[nJMA.n][07]=nJMA.s40[nJMA.n];nJMA.mem2[nJMA.n][08]=nJMA.s70[nJMA.n];
\r
453 nJMA.mem2[nJMA.n][00]=Time[1];nJMA.mem2[nJMA.n][01]=Time[2];
\r
454 //--+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
456 //----+ done --------------------------+
\r
458 return(dJMA.JMA[nJMA.n]);
\r
461 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
462 // JJMASeriesReset - Ýòî äîïîëíèòåëüíàÿ ôóíêöèÿ äëÿ èíèöèàëèçàöèè âíóòðåííèõ ïåðåìåííûõ ôóíêöèè |
\r
463 // JJMASeries. Ïðèìåð îáðàùåíèÿ: if (limit==Bars-1)JJMASeriesReset(5); ãäå 5 - ýòî êîëè÷åñòâî |
\r
464 // îáðàùåíèé ê JJMASeries â òåêñòå èíäèêàòîðà |
\r
465 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
466 void JJMASeriesReset(int nJJMAReset.Number)
\r
468 int nJJMAReset.reset=-1;
\r
469 int nJJMAReset.set=JJMASeries(nJJMAReset.Number,0,0,0,0,0,0,0,nJJMAReset.reset);
\r
470 if((nJJMAReset.set==1)&&(nJJMAReset.reset==0))Print("JJMASeriesReset is OK!!!");
\r
471 else Print("JJMASeriesReset is ERROR!!!");
\r
473 //--+ --------------------------------------------------------------------------------------------+
\r
476 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
477 INDICATOR_COUNTED() - Ýòî äîïîëíèòåëüíàÿ ôóíêöèÿ äëÿ âîçâðàòà êîëè÷åñòâà óæå ïîäñ÷èòàííûõ áàðîâ |
\r
478 èíäèêàòîðà. Ÿ ãëàâíàÿ îñîáåííîñòü çàêëþ÷àåòñÿ â òîì, ÷òî îíà ïîçâîëÿåò íå ïåðåñ÷èòûâàòü |
\r
479 èíäèêàòîð íà âñåõ áàðàõ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó. Òî åñòü ïðè ïîäêëþ÷åíèè ê èíòåðíåòó ýòà |
\r
480 ôóíêöèÿ â îòëè÷èå îò ñòàíäàðòíîé ôóíêöèè IndicatorCounted() âñ¸ ðàâíî âîçâðàùàåò êîëè÷åñòâî |
\r
481 ïîäñ÷èòàííûõ äî ïîäêëþ÷åíèÿ ê èíòåðíåòó áàðîâ, à íå íîëü! Ôóíêöèÿ INDICATOR_COUNTED() |
\r
482 ïðåäíàçíà÷åíà äëÿ çàìåíû ôóíêöèè IndicatorCounted() Ïðè çíà÷åíèè ïàðàìåòðà |
\r
483 INDICATOR_COUNTED.Input=0; ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ, ïðè çíà÷åíèè |
\r
484 ïàðàìåòðà INDICATOR_COUNTED.Input = 1; ïðîèñõîäèò ôèêñàöèÿ âðåìåíè íóëåâîãî áàðà, äëÿ ðàñ÷¸òà |
\r
485 ïî åãî íîìåðó ïðè ñëåäóþùåì ñòàðòå ôóíêöèè int start() èñòèííîãî çíà÷åíèÿ êîëè÷åñòâà óæå |
\r
486 ïîäñ÷èòàííûõ áàðîâ. Ïðè çíà÷åíèè ïàðàìåòðà INDICATOR_COUNTED.Input = -1; ïðîèñõîäèò |
\r
487 îáíóëåíèå âðåìåíè íóëåâîãî áàðà, åñëè ýòî íåîáõîäèìî, ïðè èñïîëüçîâàíèè îïåðàòîðà return(-1); |
\r
488 äëÿ ôóíêöèè int start(). |
\r
489 Ïðèìåð îáðàùåíèÿ: |
\r
491 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ |
\r
492 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó |
\r
493 incounted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1); |
\r
494 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè |
\r
495 if (counted_bars<0){INDICATOR_COUNTED(-1); return(-1);} |
\r
496 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí |
\r
497 if (counted_bars>0) counted_bars--; |
\r
498 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò áàðîâ |
\r
499 int limit=Bars-1-counted_bars; |
\r
501 for(bar=limit;bar>=0;bar--) { êîä âàøåãî èíäèêàòîðà } |
\r
502 Åñëè â òåêñòå èíäèêàòîðà åñòü âûðàæåíèå return(-1) äëÿ ôóíêöèè int start(); òî åãî ñëåäóåò |
\r
503 çàìåíèòü íà {INDICATOR_COUNTED(-1);return(-1);} |
\r
504 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
506 int INDICATOR_COUNTED(int INDICATOR_COUNTED.Input)
\r
509 int INDICATOR_COUNTED.counted_bars;
\r
510 //----+ xxxxxxxxxxx
\r
511 if (INDICATOR_COUNTED.Input == 1)
\r
513 //---- ââåäåíèå ïåðåìåííûõ è ïîëó÷åíèå èõ çíà÷åíèé
\r
514 static int INDICATOR_COUNTED.T2, INDICATOR_COUNTED.Period;
\r
515 INDICATOR_COUNTED.counted_bars=IndicatorCounted();
\r
516 if (INDICATOR_COUNTED.counted_bars<0)
\r
518 //INDICATOR_COUNTED.T2=0;
\r
519 return(INDICATOR_COUNTED.counted_bars);
\r
521 //----+ ôèêñàöèÿ âðåìåíè îòêðûòèÿ ïðåäïîñëåäíåãî ïîäñ÷èòàííîãî áàðà
\r
522 INDICATOR_COUNTED.T2 =Time[2];
\r
523 INDICATOR_COUNTED.Period=Period();
\r
524 return(INDICATOR_COUNTED.counted_bars);
\r
526 INDICATOR_COUNTED.counted_bars=IndicatorCounted();
\r
527 if (INDICATOR_COUNTED.counted_bars<0)
\r
529 INDICATOR_COUNTED.T2=0;
\r
530 return(INDICATOR_COUNTED.counted_bars);
\r
533 if((INDICATOR_COUNTED.counted_bars!=0)&&(IsConnected()==TRUE)&&(INDICATOR_COUNTED.T2==0))
\r
535 //Ïå÷àòü ðåçóëüòàòà îáðàùåíèÿ ê ôóíêöèè INDICATOR_COUNTED ïðè íåêîððåêòíîé ðàáîòå èíäèêàòîðà
\r
536 Print("INDICATOR_COUNTED: Òîðãîâûé Òåðìèíàë òîëüêî ÷òî ïîäêëþ÷èëñÿ ê èíòåðíåòó");
\r
537 Print("INDICATOR_COUNTED: Ïðåäïîñëåäíèé ïîäñ÷èòàííûé áàð íå íàéäåí");
\r
538 Print("INDICATOR_COUNTED: Èñòèííîå êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ îïðåäåëèòü íåâîçìîæíî ");
\r
539 Print("INDICATOR_COUNTED: Ôóíêöèÿ âåðí¸ò êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ ðàâíîå íóëþ");
\r
540 Print("INDICATOR_COUNTED: Áóäåò ïðîèçâåä¸í ïîëíûé ïåðåñ÷¸ò èíäèêàòîðà íà âñåõ áàðàõ");
\r
541 //PlaySound("wait.wav");
\r
544 //----+ xxxxxxxxxxx
\r
545 if ((INDICATOR_COUNTED.Input==0)&&(INDICATOR_COUNTED.Period==Period()))
\r
547 if((INDICATOR_COUNTED.counted_bars==0)&&(IsConnected()==TRUE))
\r
549 //Print("INDICATOR_COUNTED: Òîðãîâûé Òåðìèíàë òîëüêî ÷òî ïîäêëþ÷èëñÿ ê èíòåðíåòó");
\r
550 //Print("INDICATOR_COUNTED: Ñåé÷àñ Ôóíêöèÿ INDICATOR_COUNTED() îïðåäåëèò êîëè÷åñòâî ôàêòè÷åñêè ïîäñ÷èòàííûõ áàðîâ");
\r
551 if (INDICATOR_COUNTED.T2 == 0)
\r
553 //Ïå÷àòü ðåçóëüòàòà îáðàùåíèÿ ê ôóíêöèè INDICATOR_COUNTED ïðè íåêîððåêòíîé ðàáîòå èíäèêàòîðà
\r
554 Print("INDICATOR_COUNTED: Òîðãîâûé Òåðìèíàë òîëüêî ÷òî ïîäêëþ÷èëñÿ ê èíòåðíåòó");
\r
555 Print("INDICATOR_COUNTED: Ïðåäïîñëåäíèé ïîäñ÷èòàííûé áàð íå íàéäåí");
\r
556 Print("INDICATOR_COUNTED: Èñòèííîå êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ îïðåäåëèòü íåâîçìîæíî ");
\r
557 Print("INDICATOR_COUNTED: Ôóíêöèÿ âåðí¸ò êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ ðàâíîå íóëþ");
\r
558 Print("INDICATOR_COUNTED: Áóäåò ïðîèçâåä¸í ïîëíûé ïåðåñ÷¸ò èíäèêàòîðà íà âñåõ áàðàõ");
\r
559 //PlaySound("wait.wav");
\r
562 //----+ ïîèñê ïðåäïîñëåäíåãî ïîäñ÷èòàííîãî áàðà ïî âðåìåíè åãî îòêðûòèÿ
\r
563 int INDICATOR_COUNTED.BarShift=iBarShift(NULL,0,INDICATOR_COUNTED.T2,TRUE);
\r
564 if ((INDICATOR_COUNTED.BarShift<2)||(INDICATOR_COUNTED.T2!=Time[INDICATOR_COUNTED.BarShift]))
\r
566 //Ïå÷àòü ðåçóëüòàòà îáðàùåíèÿ ê ôóíêöèè INDICATOR_COUNTED ïðè íåêîððåêòíîé ðàáîòå èíäèêàòîðà
\r
567 Print("INDICATOR_COUNTED: Òîðãîâûé Òåðìèíàë òîëüêî ÷òî ïîäêëþ÷èëñÿ ê èíòåðíåòó");
\r
568 Print("INDICATOR_COUNTED: Ïðåäïîñëåäíèé ïîäñ÷èòàííûé áàð íå íàéäåí");
\r
569 Print("INDICATOR_COUNTED: Èñòèííîå êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ îïðåäåëèòü íåâîçìîæíî ");
\r
570 Print("INDICATOR_COUNTED: Ôóíêöèÿ âåðí¸ò êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ ðàâíîå íóëþ");
\r
571 Print("INDICATOR_COUNTED: Áóäåò ïðîèçâåä¸í ïîëíûé ïåðåñ÷¸ò èíäèêàòîðà íà âñåõ áàðàõ");
\r
572 //PlaySound("wait.wav");
\r
575 int INDICATOR_COUNTED.Resalt=Bars-1-INDICATOR_COUNTED.BarShift+2;
\r
576 //Ïå÷àòü ðåçóëüòàòà îáðàùåíèÿ ê ôóíêöèè INDICATOR_COUNTED ïðè êîððåêòíîé ðàáîòå èíäèêàòîðà
\r
577 //Print("INDICATOR_COUNTED: Òîðãîâûé Òåðìèíàë òîëüêî ÷òî ïîäêëþ÷èëñÿ ê èíòåðíåòó");
\r
578 //Print("INDICATOR_COUNTED: Ñåé÷àñ Ôóíêöèÿ îïðåäåëèò êîëè÷åñòâî ôàêòè÷åñêè ïîäñ÷èòàííûõ áàðîâ");
\r
579 //Print("INDICATOR_COUNTED: Ïðåäïîñëåäíèé ïîäñ÷èòàííûé áàð íàéäåí");
\r
580 //Print("INDICATOR_COUNTED: Êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ áóäåò ðàâíî "+INDICATOR_COUNTED.Resalt+"");
\r
581 //Print("INDICATOR_COUNTED: Áóäåò ïðîèçâåä¸í ïåðåñ÷¸ò èíäèêàòîðà âñåãî íà "+INDICATOR_COUNTED.BarShift+" áàðàõ");
\r
582 //Print("INDICATOR_COUNTED: BarShift ="+INDICATOR_COUNTED.BarShift+" INDICATOR_COUNTED.T2 ="+INDICATOR_COUNTED.T2+"");
\r
583 return(INDICATOR_COUNTED.Resalt);
\r
585 else return(INDICATOR_COUNTED.counted_bars);
\r
587 //----+ xxxxxxxxxxx
\r
588 if (INDICATOR_COUNTED.Input ==-1)
\r
590 INDICATOR_COUNTED.T2 =0;
\r
591 INDICATOR_COUNTED.Period=-1;
\r
592 Print("INDICATOR_COUNTED: Îøèáêà â ðàñ÷¸òå èíäèêàòîðà");
\r
593 Print("INDICATOR_COUNTED: Ðàáîòà ôóíêöèè int start() áóäåò ïðåðâàíà îïåðàòîðîì return(-1)");
\r
594 //PlaySound("stops.wav");
\r
597 return(INDICATOR_COUNTED.counted_bars);
\r
599 //--+ --------------------------------------------------------------------------------------------+
\r