bleh
[mqlkit.git] / EXP / JJMASeries.mqh
blobe393f08750d02db1f55c303ab000e76c36e1dd6e
1 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
2 //|                                              JJMASeries.Exp1.mqh |\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
10   /*\r
11   SSSSSS <<< Ôóíêöèÿ JJMASeries.Exp1 >>> SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS\r
13   ----------------------------- Íàçíà÷åíèå -------------------------------\r
15   Ôóíêöèÿ JJMASeries.Exp1 ïðåäíàçíà÷åíà äëÿ èñïîëüçîâàíèÿ àëãîðèòìà JMA ïðè íàïèñàíèè ýêñïåðòîâ, ðàáîòàþùèõ ñ ïîëüçîâàòåëüñêèìè \r
16   èíäèêàòîðàìè,  ñäåëàííûìè íà  îñíîâå  ôóíêöèè JJMASeries. JJMASeries.EXP1 - ýòî ïîëíûé àíàëîã ôóíêöèè JJMASeries, ïîçâîëÿþùèé \r
17   ýêñïåðòó êîððåêòíî ðàáîòàòü  ñ ïîëüçîâàòåëüñêèì èíäèêàòîðîì,  â  êîòîðîì ôóíêöèÿ  JJMASeries  çåíåíà  íà JJMASeries.Exp1. Äëÿ \r
18   èñïîëüçîâàíèÿ   ýòîé   ôóíêöèè    ñëåäóåò   çàìåíèòü  â    êîíöå   òåêñòà   èíäèêàòîðà   ñòðîêó     #include <JJMASeries.mqh>  \r
19   íà  #include <JJMASeries.Exp1.mqh> .   Ôóíêöèÿ íå  ðàáîòàåò,  åñëè   ïàðàìåòð   nJMA.limit   ïðèíèìàåò çíà÷åíèå, ðàâíîå íóëþ! \r
20   Âñå èíäèêàòîðû, ñäåëàííûå  ìíîþ  äëÿ  JJMASeries,  âûïîëíåíû  ñ  ó÷¸òîì  ýòîãî  îãðàíè÷åíèÿ.    Ôàéë ñëåäóåò ïîëîæèòü â ïàïêó \r
21   (äèðåêòîðèþ): MetaTrader\experts\include\\r
23   -------------------------- âõîäíûå ïàðàìåòðû  --------------------------\r
25   nJMA.number - ïîðÿäêîâûé íîìåð îáðàùåíèÿ ê ôóíêöèè JJMASeries. (0, 1, 2, 3 è.ò.ä....)\r
26   nJMA.dinJ - ïàðàìåòð, ïîçâîëÿþùèé èçìåíÿòü ïàðàìåòðû nJMA.Length è nJMA.Phase íà êàæäîì áàðå. 0 - çàïðåò èçìåíåíèÿ ïàðàìåòðîâ, ëþáîå äðóãîå çíà÷åíèå - ðàçðåøåíèå.\r
27   nJMA.MaxBar - Ìàêñèìàëüíîå çíà÷åíèå, êîòîðîå ìîæåò ïðèíèìàòü íîìåð ðàñ÷èòûâàåìîãî áàðà(bar). Îáû÷íî ðàâíî Bars-1;\r
28   nJMA.limit - Êîëè÷åñòâî åù¸ íå ïîäñ÷èòàííûõ áàðîâ ïëþñ îäèí èëè íîìåð ïîñåäíåãî íåïîäñ÷èòàííîãî áàðà, Îáû÷íî ðàâíî: Bars-IndicatorCounted()-1;\r
29   nJMA.Length - ãëóáèíà ñãëàæèâàíèÿ\r
30   nJMA.Phase  - ïàðàìåòð, èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíîãî ïðîöåññà;\r
31   dJMA.series - Âõîäíîé  ïàðàìåòð, ïî êîòîðîìó ïðîèçâîäèòñÿ ðàñ÷¸ò ôóíêöèè JJMASeries;\r
32   nJMA.bar - íîìåð ðàñ÷èòûâàåìîãî áàðà, ïàðàìåòð äîëæåí èçìåíÿòüñÿ îïåðàòîðîì öèêëà îò ìàêñèìàëüíîãî çíà÷åíèÿ ê íóëåâîìó.\r
33   nJMA.reset - ïàðàìåòð, ïðè çíà÷åíèè êîòîðîãî ðàâíûì -1 ïðîèñõîäèò ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries.\r
35   ------------------------- âûõîäíûå ïàðàìåòðû ---------------------------\r
37   JJMASeries() - çíà÷åíèå ôóíêöèè dJMA.JMA\r
38   nJMA.reset - ïàðàìåòð, âîçâðàùàþùèé ïî ññûëêå çíà÷åíèå, îòëè÷èííîå îò 0 , åñëè ïðîèçîøëà îøèáêà â ðàñ÷¸òå ôóíêöèè,\r
39    0, åñëè ðàñ÷¸ò ïðîø¸ë íîðìàëüíî. Ýòîò ïàðàìåòð ìîæåò áûòü òîëüêî ïåðåìåííîé, íî íå çíà÷åíèåì!!!\r
41   --------------------- Ìåõàíèçì îáðàùåíèÿ ê ôóíêöèè ---------------------\r
43   Ïåðåä îáðàùåíèÿìè ê ôóíêöèè JJMASeries , êîãäà êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ ðàâíî 0, ñëåäóåò ââåñòè è èíèöèàëèçèðîâàòü\r
44   âíóòðåííèå ïåðåìåííûå ôóíêöèè, äëÿ ýòîãî íåîáõîäèìî îáðàòèòüñÿ ê ôóíêöèè ñî ñëåäóþùèìè ïàðàìåòðàìè:\r
45   reset=-1; JJMA(0,MaxJMA.number+1,0,0,0,0,0,0,reset);\r
46   íåîáõîäèìî ñäåëàòü ïàðàìåòð nJMA.number(MaxJMA.number) ðàâíûì êîëè÷åñòâó îáðàùåíèé ê ôóíêöèè JJMASeries,  òî åñòü íà åäèíèöó áîëüøå, ÷åì\r
47   ìàêñèìàëüíûé nJMA.number. À ïàðàìåòðó nJMA.reset ïðèñâîèòü ÷åðåç ïåðåìåííóþ reset çíà÷åíèå -1( ñàìó ôóíêöèþ ïîäñòàâëÿòü -1 íåëüçÿ!\r
48   Òîëüêî ÷åðåç ïàðàìåòð). Îñòàëüíûì ïàðàìåòðàì ïðèñâîèòü 0. Ïðè íàïèñàíèè èíäèêàòîðîâ è ýêñïåðòîâ ñ èñïîëüçîâàíèåì ôóíêöèè JJMASeries, íå\r
49   ðåêîìåíäóåòñÿ ïåðåìåííûì äàâàòü èìåíà íà÷èíàþùèåñÿ ñ nJMA.... èëè dJMA....\r
51   --------------------- Ïðèìåð îáðàùåíèÿ ê ôóíêöèè -----------------------\r
52 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ\r
53 int bar,MaxBar,limit,counted_bars=IndicatorCounted(); \r
54 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè\r
55 if (counted_bars<0)return(-1);\r
56 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí\r
57 if (counted_bars>0) counted_bars--;\r
58 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò íîâûõ áàðîâ\r
59 int limit=Bars-counted_bars-1;\r
60 MaxBar=Bars-1;\r
61 //----+ Ââåäåíèå è èíèöèàëèçàöèÿ âíóòðåííèõ ïåðåìåííûõ ôóíêöèè JJMASeries.Exp1, nJMA.number=1(Îäíî îáðàùåíèå ê ôóíêöèè JJMASeries)\r
62 if(limit==MaxBar)JJMASeriesReset(1);\r
63 //----+ Îáðàùåíèå ê ôóíêöèè JJMASeries çà íîìåðîì 0 äëÿ ðàñ÷¸òà áóôåðà Ind_Buffer[], ïàðàìåòðû nJMA.Phase è nJMA.Length íå ìåíÿþòñÿ íà êàæäîì áàðå (nJMA.din=0)\r
64 for(bar=limit;bar>=0;bar--)\r
65  (\r
66   Series=Close[bar];\r
67   Resalt=JJMASeries(0,0,Bars-1,limit,Phase,Length,Series,bar,reset);\r
68   if (reset!=0)return(-1);\r
69   Ind_Buffer[bar]=Resalt;\r
70  }\r
71 return(0);\r
72 }\r
73 //----+ îïðåäåëåíèå ôóíêöèè JJMASeries\r
74 #include <JJMASeries.Exp1.mqh>\r
76   */\r
77 //SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
78 //++++++++++++++++++++++++++++++++++++++++++++++++ <<< JJMASeries.Exp1 >>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|\r
79 //SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
81 double JJMASeries\r
82 (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
83 {\r
84 if(nJMA.reset==-1)\r
85 {\r
86 //----++ <<< Ââåäåíèå è èíèöèàëèçàöèÿ ïåðåìåííûõ >>> +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
87 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
88 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
89 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.mem8[1][128];\r
90 static double dJMA.Kg[1],dJMA.Pf[1],dJMA.s20,dJMA.s10,dJMA.fB0,dJMA.fD0,dJMA.f8,dJMA.f60,dJMA.f20,dJMA.f28,dJMA.f30,dJMA.f40,dJMA.f48;\r
91 static double dJMA.f58,dJMA.f68,dJMA.f70,dJMA.MOM1[1][9],dJMA.MOM4[1][128],dJMA.MOM5[1][11],dJMA.MOM8[1][128];\r
92 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
93 static int    nJMA.s58,nJMA.s60,nJMA.s68,nJMA.f0[1],nJMA.aa,nJMA.size,nJMA.s50[1],nJMA.s70[1],nJMA.LP2[1],nJMA.LP1[1];\r
94 static int    nJMA.ii,nJMA.jj,nJMA.n,nJMA.m,nJMA.mem2[1][9],nJMA.MOM2[1][9];              \r
95 //--+\r
96 nJMA.m=nJMA.number;\r
97 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
98 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
99 if(ArrayResize(dJMA.mem1,   nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.mem2,   nJMA.m)==0){nJMA.reset=1;return(0);}\r
100 if(ArrayResize(dJMA.MOM1,   nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.MOM2,   nJMA.m)==0){nJMA.reset=1;return(0);}\r
101 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
102 if(ArrayResize(dJMA.mem4,   nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.mem5,   nJMA.m)==0){nJMA.reset=1;return(0);}\r
103 if(ArrayResize(dJMA.MOM4,   nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(dJMA.MOM5,   nJMA.m)==0){nJMA.reset=1;return(0);}\r
104 if(ArrayResize(dJMA.MOM8,   nJMA.m)==0){nJMA.reset=1;return(0);}if(ArrayResize(nJMA.f0,     nJMA.m)==0){nJMA.reset=1;return(0);}\r
105 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
106 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
107 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
108 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
109 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
110 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
111 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
112 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
113 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
114 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
115 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
116 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
117 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
118 //--+\r
119 ArrayInitialize(dJMA.list,0.0);ArrayInitialize(dJMA.ring1,0.0);ArrayInitialize(dJMA.ring2,0.0);ArrayInitialize(dJMA.buffer,0.0);\r
120 ArrayInitialize(dJMA.mem1,0.0);ArrayInitialize(nJMA.mem2,0   );ArrayInitialize(dJMA.mem3, 0.0);ArrayInitialize(dJMA.mem4,  0.0);\r
121 ArrayInitialize(dJMA.mem5,0.0);ArrayInitialize(dJMA.mem8, 0.0);ArrayInitialize(dJMA.MOM1, 0.0);ArrayInitialize(nJMA.MOM2,  0  );\r
122 ArrayInitialize(dJMA.MOM4,0.0);ArrayInitialize(dJMA.MOM5, 0.0);ArrayInitialize(dJMA.MOM8, 0.0);ArrayInitialize(nJMA.f0,    1  );\r
123 ArrayInitialize(dJMA.Kg,  0.0);ArrayInitialize(dJMA.Pf,   0.0);ArrayInitialize(dJMA.f18,  0.0);ArrayInitialize(dJMA.f38,   0.0);\r
124 ArrayInitialize(dJMA.fA8, 0.0);ArrayInitialize(dJMA.fC0,  0.0);ArrayInitialize(dJMA.fC8,  0.0);ArrayInitialize(dJMA.s8,    0.0);\r
125 ArrayInitialize(dJMA.s18, 0.0);ArrayInitialize(dJMA.JMA,  0.0);ArrayInitialize(nJMA.s50,  0  );ArrayInitialize(nJMA.s70,   0  );\r
126 ArrayInitialize(nJMA.LP2, 0  );ArrayInitialize(nJMA.LP1,  0  );ArrayInitialize(nJMA.s38,  0  );ArrayInitialize(nJMA.s40,   0  );\r
127 ArrayInitialize(nJMA.s48, 0  );ArrayInitialize(dJMA.v1,   0  );ArrayInitialize(dJMA.v2,   0  );ArrayInitialize(dJMA.v3,    0  );\r
128 ArrayInitialize(dJMA.f90, 0.0);ArrayInitialize(dJMA.f78,  0.0);ArrayInitialize(dJMA.f88,  0.0);ArrayInitialize(dJMA.f98,   0.0);\r
129 ArrayInitialize(nJMA.s28, 0  );ArrayInitialize(nJMA.s30,  0  );\r
130 //--+\r
131 nJMA.reset=0;return(1);\r
132 //----++SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
135 nJMA.reset=1;\r
137 nJMA.n=nJMA.number;\r
138 if (nJMA.bar> nJMA.MaxBar){nJMA.reset=0;return(0.0);}\r
139 if((nJMA.bar==nJMA.MaxBar)||(nJMA.din!=0))\r
141 //----++ <<< Ðàñ÷¸ò êîýôôèöèåíòîâ  >>> +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
142 double Dr,Ds,Dl;\r
143 if(nJMA.Length < 1.0000000002) Dr = 0.0000000001;\r
144 else Dr= (nJMA.Length - 1.0) / 2.0;\r
145 if((nJMA.Phase >= -100)&&(nJMA.Phase <= 100))dJMA.Pf[nJMA.n] = nJMA.Phase / 100.0 + 1.5;\r
146 if (nJMA.Phase > 100) dJMA.Pf[nJMA.n] = 2.5;\r
147 if (nJMA.Phase < -100) dJMA.Pf[nJMA.n] = 0.5;\r
148 Dr = Dr * 0.9; dJMA.Kg[nJMA.n] = Dr/(Dr + 2.0);\r
149 Ds=MathSqrt(Dr);Dl=MathLog(Ds); dJMA.v1[nJMA.n]= Dl;dJMA.v2[nJMA.n] = dJMA.v1[nJMA.n];\r
150 if((dJMA.v1[nJMA.n] / MathLog(2.0)) + 2.0 < 0.0) dJMA.v3[nJMA.n]= 0.0;\r
151 else dJMA.v3[nJMA.n]=(dJMA.v2[nJMA.n]/MathLog(2.0))+ 2.0;\r
152 dJMA.f98[nJMA.n]= dJMA.v3[nJMA.n];\r
153 if( dJMA.f98[nJMA.n] >= 2.5 ) dJMA.f88[nJMA.n] = dJMA.f98[nJMA.n] - 2.0;\r
154 else dJMA.f88[nJMA.n]= 0.5;\r
155 dJMA.f78[nJMA.n]= Ds * dJMA.f98[nJMA.n]; \r
156 dJMA.f90[nJMA.n]= dJMA.f78[nJMA.n] / (dJMA.f78[nJMA.n] + 1.0);\r
157 //----++SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
159 //--+\r
160 if (nJMA.bar==nJMA.limit)\r
162 //----+ <<< Âîññòàíîâëåíèå çíà÷åíèé ïåðåìåííûõ >>> +WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW+\r
163   int nJMA.Tnew=Time[nJMA.limit+1];  \r
164   if((nJMA.Tnew==nJMA.MOM2[nJMA.n][01])||(nJMA.bar==nJMA.MaxBar)) \r
165   { \r
166 //----+ <<< Âîññòàíîâëåíèå çíà÷åíèé ïåðåìåííûõ >>> +ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+\r
167 for(nJMA.ii=127;nJMA.ii>=0;nJMA.ii--)dJMA.list [nJMA.n][nJMA.ii]=dJMA.MOM8[nJMA.n][nJMA.ii];\r
168 for(nJMA.ii=127;nJMA.ii>=0;nJMA.ii--)dJMA.ring1[nJMA.n][nJMA.ii]=dJMA.MOM4[nJMA.n][nJMA.ii];\r
169 for(nJMA.ii= 10;nJMA.ii>=0;nJMA.ii--)dJMA.ring2[nJMA.n][nJMA.ii]=dJMA.MOM5[nJMA.n][nJMA.ii];\r
170 //--+\r
171 dJMA.fC0[nJMA.n]=dJMA.MOM1[nJMA.n][00];dJMA.fC8[nJMA.n]=dJMA.MOM1[nJMA.n][01];dJMA.fA8[nJMA.n]=dJMA.MOM1[nJMA.n][02];\r
172 dJMA.s8 [nJMA.n]=dJMA.MOM1[nJMA.n][03];dJMA.f18[nJMA.n]=dJMA.MOM1[nJMA.n][04];dJMA.f38[nJMA.n]=dJMA.MOM1[nJMA.n][05];\r
173 dJMA.s18[nJMA.n]=dJMA.MOM1[nJMA.n][06];dJMA.JMA[nJMA.n]=dJMA.MOM1[nJMA.n][07];nJMA.s38[nJMA.n]=nJMA.MOM2[nJMA.n][02];\r
174 nJMA.s48[nJMA.n]=nJMA.MOM2[nJMA.n][03];nJMA.s50[nJMA.n]=nJMA.MOM2[nJMA.n][04];nJMA.LP1[nJMA.n]=nJMA.MOM2[nJMA.n][05];\r
175 nJMA.LP2[nJMA.n]=nJMA.MOM2[nJMA.n][06];nJMA.s40[nJMA.n]=nJMA.MOM2[nJMA.n][07];nJMA.s70[nJMA.n]=nJMA.MOM2[nJMA.n][08];\r
176 //----+sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+\r
177   }\r
178   else\r
179   {\r
180   if((nJMA.Tnew==nJMA.mem2[nJMA.n][01])&&(nJMA.bar!=nJMA.MaxBar))  \r
181   {\r
182 //----+ <<< Âîññòàíîâëåíèå çíà÷åíèé ïåðåìåííûõ >>> +ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+\r
183 for(nJMA.ii=127;nJMA.ii>=0;nJMA.ii--)dJMA.list [nJMA.n][nJMA.ii]=dJMA.mem8[nJMA.n][nJMA.ii];\r
184 for(nJMA.ii=127;nJMA.ii>=0;nJMA.ii--)dJMA.ring1[nJMA.n][nJMA.ii]=dJMA.mem4[nJMA.n][nJMA.ii];\r
185 for(nJMA.ii= 10;nJMA.ii>=0;nJMA.ii--)dJMA.ring2[nJMA.n][nJMA.ii]=dJMA.mem5[nJMA.n][nJMA.ii];\r
186 //--+\r
187 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
188 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
189 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
190 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
191 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
192 //----+ <<< Ïåðåñîõðàíåíèå çíà÷åíèé ïåðåìåííûõ >>> --------------------------------------------------------------------+\r
193 for(nJMA.ii=127;nJMA.ii>=0;nJMA.ii--)dJMA.mem8[nJMA.n][nJMA.ii]=dJMA.MOM8[nJMA.n][nJMA.ii];\r
194 for(nJMA.ii=127;nJMA.ii>=0;nJMA.ii--)dJMA.mem4[nJMA.n][nJMA.ii]=dJMA.MOM4[nJMA.n][nJMA.ii];\r
195 for(nJMA.ii=10; nJMA.ii>=0;nJMA.ii--)dJMA.mem5[nJMA.n][nJMA.ii]=dJMA.MOM5[nJMA.n][nJMA.ii];\r
196 //--+\r
197 dJMA.MOM1[nJMA.n][00]=dJMA.mem1[nJMA.n][00];dJMA.MOM1[nJMA.n][01]=dJMA.mem1[nJMA.n][01];\r
198 dJMA.MOM1[nJMA.n][02]=dJMA.mem1[nJMA.n][02];dJMA.MOM1[nJMA.n][03]=dJMA.mem1[nJMA.n][03];  \r
199 dJMA.MOM1[nJMA.n][04]=dJMA.mem1[nJMA.n][04];dJMA.MOM1[nJMA.n][05]=dJMA.mem1[nJMA.n][05];\r
200 dJMA.MOM1[nJMA.n][06]=dJMA.mem1[nJMA.n][06];dJMA.MOM1[nJMA.n][07]=dJMA.mem1[nJMA.n][07];\r
201 nJMA.MOM2[nJMA.n][00]=nJMA.mem2[nJMA.n][00];nJMA.MOM2[nJMA.n][01]=nJMA.mem2[nJMA.n][01];\r
202 nJMA.MOM2[nJMA.n][02]=nJMA.mem2[nJMA.n][02];nJMA.MOM2[nJMA.n][03]=nJMA.mem2[nJMA.n][03];\r
203 nJMA.MOM2[nJMA.n][04]=nJMA.mem2[nJMA.n][04];nJMA.MOM2[nJMA.n][05]=nJMA.mem2[nJMA.n][05];\r
204 nJMA.MOM2[nJMA.n][06]=nJMA.mem2[nJMA.n][06];nJMA.MOM2[nJMA.n][07]=nJMA.mem2[nJMA.n][07];\r
205 nJMA.MOM2[nJMA.n][08]=nJMA.mem2[nJMA.n][08];\r
206 //----+sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss+ \r
207   } \r
208   else   \r
209     {\r
210       nJMA.reset=-1;\r
211       //--+ èíäèêàöèÿ îøèáêè â ðàñ÷¸òå âõîäíîãî ïàðàìåòðà nJMA.limit ôóíêöèè JJMASeries()\r
212      if (nJMA.Tnew>nJMA.mem2[nJMA.n][01])\r
213        {\r
214        Print("JJMASerries number ="+nJMA.n+". ERROR01");\r
215        Print("JJMASerries number ="+nJMA.n+". Ïàðàìåòð nJMA.limit ôóíêöèè JJMASeries ìåíüøå, ÷åì íåîáõîäèìî");\r
216        }\r
217     else \r
218        { \r
219        int nJMA.LimitERROR=nJMA.limit+1-iBarShift(NULL,0,nJMA.mem2[nJMA.n][01],TRUE);\r
220        Print("JMA.Serries number ="+nJMA.n+". ERROR02");\r
221        Print("JJMASerries number ="+nJMA.n+". Ïàðàìåòð nJMA.limit ôóíêöèè JJMASeries áîëüøå, ÷åì íåîáõîäèìî íà "+nJMA.LimitERROR+"");\r
222        }\r
223   //--+ \r
224   return(0);\r
225   }\r
226 //--+   \r
227   } \r
229 //----+WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW+\r
231 if(nJMA.bar==nJMA.MaxBar)\r
233 //----+----------------------------------------------------------------+\r
234 nJMA.f0[nJMA.n]=1; nJMA.s28[nJMA.n]=63; nJMA.s30[nJMA.n]=64;\r
235 for(int kk=0;kk<=nJMA.s28[nJMA.n];kk++)dJMA.list[nJMA.n][kk]=-1000000.0;\r
236 for(kk=nJMA.s30[nJMA.n]; kk<=127; kk++)dJMA.list[nJMA.n][kk]= 1000000.0;\r
237 //----+----------------------------------------------------------------+\r
239 //----+\r
240 if (nJMA.LP1[nJMA.n]<61){nJMA.LP1[nJMA.n]++; dJMA.buffer[nJMA.n][nJMA.LP1[nJMA.n]]=dJMA.series;}\r
241 if (nJMA.LP1[nJMA.n]>30)\r
243 //++++++++++++++++++\r
244 if (nJMA.f0[nJMA.n] != 0)\r
246 nJMA.f0[nJMA.n] = 0; nJMA.v5 = 0;\r
247 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
248 nJMA.fD8 = nJMA.v5*30;\r
249 if (nJMA.fD8 == 0) dJMA.f38[nJMA.n] = dJMA.series; else dJMA.f38[nJMA.n] = dJMA.buffer[nJMA.n][1];\r
250 dJMA.f18[nJMA.n] = dJMA.f38[nJMA.n];\r
251 if (nJMA.fD8 > 29) nJMA.fD8 = 29;\r
253 else nJMA.fD8 = 0;\r
254 for(nJMA.ii=nJMA.fD8; nJMA.ii>=0; nJMA.ii--)\r
256 nJMA.val=31-nJMA.ii;\r
257 if (nJMA.ii == 0) dJMA.f8 = dJMA.series; else dJMA.f8 = dJMA.buffer[nJMA.n][nJMA.val];\r
258 dJMA.f28 = dJMA.f8 - dJMA.f18[nJMA.n]; dJMA.f48 = dJMA.f8 - dJMA.f38[nJMA.n];\r
259 if (MathAbs(dJMA.f28) > MathAbs(dJMA.f48)) dJMA.v2[nJMA.n] = MathAbs(dJMA.f28); else dJMA.v2[nJMA.n] = MathAbs(dJMA.f48);\r
260 dJMA.fA0 = dJMA.v2[nJMA.n]; dJMA.vv = dJMA.fA0 + 0.0000000001; //{1.0e-10;}\r
261 if (nJMA.s48[nJMA.n] <= 1) nJMA.s48[nJMA.n] = 127; else nJMA.s48[nJMA.n] = nJMA.s48[nJMA.n] - 1;\r
262 if (nJMA.s50[nJMA.n] <= 1) nJMA.s50[nJMA.n] = 10;  else nJMA.s50[nJMA.n] = nJMA.s50[nJMA.n] - 1;\r
263 if (nJMA.s70[nJMA.n] < 128) nJMA.s70[nJMA.n] = nJMA.s70[nJMA.n] + 1;\r
264 dJMA.s8[nJMA.n] = dJMA.s8[nJMA.n] + dJMA.vv - dJMA.ring2[nJMA.n][nJMA.s50[nJMA.n]];\r
265 dJMA.ring2[nJMA.n][nJMA.s50[nJMA.n]] = dJMA.vv;\r
266 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
267 if (nJMA.s70[nJMA.n] > 127)\r
269 dJMA.s10 = dJMA.ring1[nJMA.n][nJMA.s48[nJMA.n]];\r
270 dJMA.ring1[nJMA.n][nJMA.s48[nJMA.n]] = dJMA.s20; nJMA.s68 = 64; nJMA.s58 = nJMA.s68;\r
271 while (nJMA.s68 > 1)\r
273 if (dJMA.list[nJMA.n][nJMA.s58] < dJMA.s10){nJMA.s68 = nJMA.s68 *0.5; nJMA.s58 = nJMA.s58 + nJMA.s68;}\r
274 else \r
275 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
278 else\r
280 dJMA.ring1[nJMA.n][nJMA.s48[nJMA.n]] = dJMA.s20;\r
281 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
282 else{nJMA.s28[nJMA.n] = nJMA.s28[nJMA.n] + 1; nJMA.s58 = nJMA.s28[nJMA.n];}\r
283 if  (nJMA.s28[nJMA.n] > 96) nJMA.s38[nJMA.n] = 96; else nJMA.s38[nJMA.n] = nJMA.s28[nJMA.n];\r
284 if  (nJMA.s30[nJMA.n] < 32) nJMA.s40[nJMA.n] = 32; else nJMA.s40[nJMA.n] = nJMA.s30[nJMA.n];\r
286 nJMA.s68 = 64; nJMA.s60 = nJMA.s68;\r
287 while (nJMA.s68 > 1)\r
289 if (dJMA.list[nJMA.n][nJMA.s60] >= dJMA.s20)\r
291 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
293 else{nJMA.s68 = nJMA.s68 *0.5; nJMA.s60 = nJMA.s60 + nJMA.s68;}\r
294 if ((nJMA.s60 == 127) && (dJMA.s20 > dJMA.list[nJMA.n][127])) nJMA.s60 = 128;\r
296 if (nJMA.s70[nJMA.n] > 127)\r
298 if (nJMA.s58 >= nJMA.s60)\r
300 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
301 else \r
302 if ((nJMA.s40[nJMA.n] + 0 > nJMA.s60) && (nJMA.s40[nJMA.n] - 1 < nJMA.s58)) dJMA.s18[nJMA.n] \r
303 = dJMA.s18[nJMA.n] + dJMA.list[nJMA.n][nJMA.s40[nJMA.n] - 1];\r
305 else\r
306 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
307 = dJMA.s18[nJMA.n] + dJMA.list[nJMA.n][nJMA.s38[nJMA.n] + 1]; }\r
308 else if  (nJMA.s38[nJMA.n] + 2 > nJMA.s60) dJMA.s18[nJMA.n] = dJMA.s18[nJMA.n] + dJMA.s20; \r
309 else if ((nJMA.s38[nJMA.n] + 1 < nJMA.s60) && (nJMA.s38[nJMA.n] + 1 > nJMA.s58)) dJMA.s18[nJMA.n] \r
310 = dJMA.s18[nJMA.n] + dJMA.list[nJMA.n][nJMA.s38[nJMA.n] + 1];\r
311 if (nJMA.s58 > nJMA.s60)\r
313 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
314 else \r
315 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
317 else\r
319 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
320 else\r
321 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
324 if (nJMA.s58 <= nJMA.s60)\r
326 if (nJMA.s58 >= nJMA.s60)\r
328 dJMA.list[nJMA.n][nJMA.s60] = dJMA.s20;\r
330 else\r
332 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
333 dJMA.list[nJMA.n][nJMA.s60 - 1] = dJMA.s20;\r
336 else\r
338 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
339 dJMA.list[nJMA.n][nJMA.s60] = dJMA.s20;\r
341 if (nJMA.s70[nJMA.n] <= 127)\r
343 dJMA.s18[nJMA.n] = 0;\r
344 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
346 dJMA.f60 = dJMA.s18[nJMA.n] / (nJMA.s38[nJMA.n] - nJMA.s40[nJMA.n] + 1.0);\r
347 if (nJMA.LP2[nJMA.n] + 1 > 31) nJMA.LP2[nJMA.n] = 31; else nJMA.LP2[nJMA.n] = nJMA.LP2[nJMA.n] + 1;\r
348 if (nJMA.LP2[nJMA.n] <= 30)\r
350 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
351 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
352 dJMA.JMA[nJMA.n] = dJMA.series;\r
353 if (nJMA.LP2[nJMA.n]!=30) continue;\r
354 if (nJMA.LP2[nJMA.n]==30)\r
356 dJMA.fC0[nJMA.n] = dJMA.series;\r
357 if ( MathCeil(dJMA.f78[nJMA.n]) >= 1) dJMA.v4 = MathCeil(dJMA.f78[nJMA.n]); else dJMA.v4 = 1.0;\r
359 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
361 if (MathFloor(dJMA.f78[nJMA.n]) >= 1) dJMA.v2[nJMA.n] = MathFloor(dJMA.f78[nJMA.n]); else dJMA.v2[nJMA.n] = 1.0;\r
363 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
365 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
366 if (nJMA.fE0 <= 29) nJMA.v5 = nJMA.fE0; else nJMA.v5 = 29;\r
367 if (nJMA.fE8 <= 29) nJMA.v6 = nJMA.fE8; else nJMA.v6 = 29;\r
368 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
369 - dJMA.buffer[nJMA.n][nJMA.LP1[nJMA.n] - nJMA.v6]) * dJMA.f68 / nJMA.fE8;\r
372 else\r
374 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
375 else dJMA.v1[nJMA.n] = dJMA.f98[nJMA.n];\r
376 if (dJMA.v1[nJMA.n] < 1.0) dJMA.v2[nJMA.n] = 1.0;\r
377 else\r
378 {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
379 else dJMA.v3[nJMA.n] = dJMA.f98[nJMA.n]; dJMA.v2[nJMA.n] = dJMA.v3[nJMA.n];}\r
380 dJMA.f58 = dJMA.v2[nJMA.n]; dJMA.f70 = MathPow(dJMA.f90[nJMA.n], MathSqrt(dJMA.f58));\r
381 if (dJMA.f28 > 0.0) dJMA.f18[nJMA.n] = dJMA.f8; else dJMA.f18[nJMA.n] = dJMA.f8 - dJMA.f28 * dJMA.f70;\r
382 if (dJMA.f48 < 0.0) dJMA.f38[nJMA.n] = dJMA.f8; else dJMA.f38[nJMA.n] = dJMA.f8 - dJMA.f48 * dJMA.f70;\r
385 if (nJMA.LP2[nJMA.n] >30)\r
387 dJMA.f30 = MathPow(dJMA.Kg[nJMA.n], dJMA.f58);\r
388 dJMA.fC0[nJMA.n] =(1.0 - dJMA.f30) * dJMA.series + dJMA.f30 * dJMA.fC0[nJMA.n];\r
389 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
390 dJMA.fD0 = dJMA.Pf[nJMA.n] * dJMA.fC8[nJMA.n] + dJMA.fC0[nJMA.n];\r
391 dJMA.f20 = dJMA.f30 *(-2.0);\r
392 dJMA.f40 = dJMA.f30 * dJMA.f30;\r
393 dJMA.fB0 = dJMA.f20 + dJMA.f40 + 1.0;\r
394 dJMA.fA8[nJMA.n] =(dJMA.fD0 - dJMA.JMA[nJMA.n]) * dJMA.fB0 + dJMA.f40 * dJMA.fA8[nJMA.n];\r
395 dJMA.JMA[nJMA.n] = dJMA.JMA[nJMA.n] + dJMA.fA8[nJMA.n];\r
398 //++++++++++++++++++\r
399 if (nJMA.LP1[nJMA.n] <=30)dJMA.JMA[nJMA.n]=0.0;\r
400 if((nJMA.bar==1)&&(nJMA.Tnew!=nJMA.MOM2[nJMA.n][01])&&(nJMA.limit==1))\r
402 //--+ <<< Ñîõðàíåíèå çíà÷åíèé ïåðåìåííûõ >>> +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+\r
403 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
404 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
405 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
406 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
407 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
408 nJMA.mem2[nJMA.n][00]=Time[0];nJMA.mem2[nJMA.n][01]=Time[1];\r
409 for(nJMA.ii=127;nJMA.ii>=0;nJMA.ii--)dJMA.mem8[nJMA.n][nJMA.ii]=dJMA.list [nJMA.n][nJMA.ii];\r
410 for(nJMA.ii=127;nJMA.ii>=0;nJMA.ii--)dJMA.mem4[nJMA.n][nJMA.ii]=dJMA.ring1[nJMA.n][nJMA.ii];\r
411 for(nJMA.ii= 10;nJMA.ii>=0;nJMA.ii--)dJMA.mem5[nJMA.n][nJMA.ii]=dJMA.ring2[nJMA.n][nJMA.ii];\r
412 //--+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+\r
414 if (nJMA.bar==2)\r
416 //--+ <<< Ñîõðàíåíèå çíà÷åíèé ïåðåìåííûõ >>> +XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+\r
417 dJMA.MOM1[nJMA.n][00]=dJMA.fC0[nJMA.n];dJMA.MOM1[nJMA.n][01]=dJMA.fC8[nJMA.n];dJMA.MOM1[nJMA.n][02]=dJMA.fA8[nJMA.n];\r
418 dJMA.MOM1[nJMA.n][03]= dJMA.s8[nJMA.n];dJMA.MOM1[nJMA.n][04]=dJMA.f18[nJMA.n];dJMA.MOM1[nJMA.n][05]=dJMA.f38[nJMA.n];\r
419 dJMA.MOM1[nJMA.n][06]=dJMA.s18[nJMA.n];dJMA.MOM1[nJMA.n][07]=dJMA.JMA[nJMA.n];nJMA.MOM2[nJMA.n][02]=nJMA.s38[nJMA.n];\r
420 nJMA.MOM2[nJMA.n][03]=nJMA.s48[nJMA.n];nJMA.MOM2[nJMA.n][04]=nJMA.s50[nJMA.n];nJMA.MOM2[nJMA.n][05]=nJMA.LP1[nJMA.n];\r
421 nJMA.MOM2[nJMA.n][06]=nJMA.LP2[nJMA.n];nJMA.MOM2[nJMA.n][07]=nJMA.s40[nJMA.n];nJMA.MOM2[nJMA.n][08]=nJMA.s70[nJMA.n];\r
422 nJMA.MOM2[nJMA.n][00]=Time[0];nJMA.MOM2[nJMA.n][01]=Time[2];\r
423 for(nJMA.ii=127;nJMA.ii>=0;nJMA.ii--)dJMA.MOM8[nJMA.n][nJMA.ii]=dJMA.list [nJMA.n][nJMA.ii];\r
424 for(nJMA.ii=127;nJMA.ii>=0;nJMA.ii--)dJMA.MOM4[nJMA.n][nJMA.ii]=dJMA.ring1[nJMA.n][nJMA.ii];\r
425 for(nJMA.ii= 10;nJMA.ii>=0;nJMA.ii--)dJMA.MOM5[nJMA.n][nJMA.ii]=dJMA.ring2[nJMA.n][nJMA.ii];\r
426 //--+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+\r
428 //----+  done --------------------------+\r
429 nJMA.reset=0;\r
430 return(dJMA.JMA[nJMA.n]);\r
433 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
434 // JJMASeriesReset - Ýòî äîïîëíèòåëüíàÿ ôóíêöèÿ äëÿ èíèöèàëèçàöèè âíóòðåííèõ ïåðåìåííûõ ôóíêöèè   | \r
435 // JJMASeries.Exp1. Ïðèìåð îáðàùåíèÿ: if (limit==Bars-1)JJMASeriesReset(5); ãäå 5 - ýòî êîëè÷åñòâî| \r
436 // îáðàùåíèé ê JJMASeries.Exp1 â òåêñòå èíäèêàòîðà                                                |\r
437 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
438 void JJMASeriesReset(int nJJMAReset.Number)\r
439  {\r
440   int nJJMAReset.reset=-1;\r
441   int nJJMAReset.set=JJMASeries(nJJMAReset.Number,0,0,0,0,0,0,0,nJJMAReset.reset);\r
442   if((nJJMAReset.set==1)&&(nJJMAReset.reset==0))Print("JJMASeriesReset is OK!!!");\r
443   else Print("JJMASeriesReset is ERROR!!!");\r
444  }\r
445 //--+ --------------------------------------------------------------------------------------------+\r
447 /*\r
448 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
449  INDICATOR_COUNTED() - Ýòî äîïîëíèòåëüíàÿ ôóíêöèÿ äëÿ âîçâðàòà êîëè÷åñòâà óæå ïîäñ÷èòàííûõ áàðîâ  | \r
450  èíäèêàòîðà. Å¸ ãëàâíàÿ îñîáåííîñòü çàêëþ÷àåòñÿ â òîì, ÷òî îíà ïîçâîëÿåò íå ïåðåñ÷èòûâàòü         |\r
451  èíäèêàòîð íà âñåõ áàðàõ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó. Òî åñòü ïðè ïîäêëþ÷åíèè ê èíòåðíåòó ýòà     |\r
452  ôóíêöèÿ â îòëè÷èå îò  ñòàíäàðòíîé ôóíêöèè IndicatorCounted() âñ¸ ðàâíî âîçâðàùàåò êîëè÷åñòâî     |\r
453  ïîäñ÷èòàííûõ äî ïîäêëþ÷åíèÿ ê èíòåðíåòó áàðîâ, à íå íîëü!          Ôóíêöèÿ  INDICATOR_COUNTED()  | \r
454  ïðåäíàçíà÷åíà äëÿ çàìåíû ôóíêöèè IndicatorCounted() Ïðè çíà÷åíèè ïàðàìåòðà                       |\r
455  INDICATOR_COUNTED.Input=0; ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ, ïðè çíà÷åíèè    |\r
456  ïàðàìåòðà INDICATOR_COUNTED.Input = 1; ïðîèñõîäèò ôèêñàöèÿ âðåìåíè íóëåâîãî áàðà, äëÿ ðàñ÷¸òà    |\r
457  ïî åãî íîìåðó ïðè ñëåäóþùåì ñòàðòå ôóíêöèè int start() èñòèííîãî çíà÷åíèÿ êîëè÷åñòâà óæå         | \r
458  ïîäñ÷èòàííûõ áàðîâ.    Ïðè çíà÷åíèè ïàðàìåòðà INDICATOR_COUNTED.Input = -1; ïðîèñõîäèò           |             \r
459  îáíóëåíèå âðåìåíè íóëåâîãî áàðà, åñëè ýòî íåîáõîäèìî, ïðè èñïîëüçîâàíèè îïåðàòîðà return(-1);    |\r
460  äëÿ ôóíêöèè int start().                                                                         |\r
461  Ïðèìåð îáðàùåíèÿ:                                                                                |\r
462                                                                                                   |\r
463 //----+ Ââåäåíèå öåëûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîäñ÷èòàííûõ áàðîâ                              |\r
464 //---- áëîêèðîâàíèå ïåðåñ÷¸òà âñåõ ïîäñ÷èòàííûõ è îòðèñîâàííûõ áàðîâ ïðè ïîäêëþ÷åíèè ê èíòåðíåòó  |\r
465 incounted_bars=INDICATOR_COUNTED(0); INDICATOR_COUNTED(1);                                        |\r
466 //---- ïðîâåðêà íà âîçìîæíûå îøèáêè                                                               |\r
467 if (counted_bars<0){INDICATOR_COUNTED(-1); return(-1);}                                           |\r
468 //---- ïîñëåäíèé ïîäñ÷èòàííûé áàð äîëæåí áûòü ïåðåñ÷èòàí                                          |\r
469 if (counted_bars>0) counted_bars--;                                                               |\r
470 //---- îïðåäåëåíèå íîìåðà ñàìîãî ñòàðîãî áàðà, íà÷èíàÿ ñ êîòîðîãî áóäåò ïðîèçåä¸í ïåðåñ÷¸ò  áàðîâ |\r
471 int limit=Bars-1-counted_bars;                                                                    |\r
472 //----                                                                                            |\r
473 for(bar=limit;bar>=0;bar--) { êîä âàøåãî èíäèêàòîðà }                                             |\r
474 Åñëè â òåêñòå èíäèêàòîðà åñòü âûðàæåíèå return(-1) äëÿ ôóíêöèè int start(); òî åãî ñëåäóåò        |\r
475 çàìåíèòü íà {INDICATOR_COUNTED(-1);return(-1);}                                                   |\r
476 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+\r
477 */\r
478 int  INDICATOR_COUNTED(int INDICATOR_COUNTED.Input) \r
479 //----+ \r
480 {   \r
481   int INDICATOR_COUNTED.counted_bars;\r
482   //----+ xxxxxxxxxxx\r
483   if (INDICATOR_COUNTED.Input == 1)\r
484     {\r
485       //---- ââåäåíèå ïåðåìåííûõ è ïîëó÷åíèå èõ çíà÷åíèé\r
486       static int INDICATOR_COUNTED.T2, INDICATOR_COUNTED.Period; \r
487       INDICATOR_COUNTED.counted_bars=IndicatorCounted(); \r
488       if (INDICATOR_COUNTED.counted_bars<0)\r
489        {\r
490         //INDICATOR_COUNTED.T2=0; \r
491         return(INDICATOR_COUNTED.counted_bars);\r
492        }\r
493        //----+ ôèêñàöèÿ âðåìåíè îòêðûòèÿ ïðåäïîñëåäíåãî ïîäñ÷èòàííîãî áàðà \r
494       INDICATOR_COUNTED.T2 =Time[2]; \r
495       INDICATOR_COUNTED.Period=Period();\r
496       return(INDICATOR_COUNTED.counted_bars);\r
497     }\r
498   INDICATOR_COUNTED.counted_bars=IndicatorCounted(); \r
499   if (INDICATOR_COUNTED.counted_bars<0)\r
500     {\r
501     INDICATOR_COUNTED.T2=0; \r
502     return(INDICATOR_COUNTED.counted_bars);\r
503     }\r
504   //----+\r
505   if((INDICATOR_COUNTED.counted_bars!=0)&&(IsConnected()==TRUE)&&(INDICATOR_COUNTED.T2==0))return(0);\r
506   //----+ xxxxxxxxxxx\r
507   if ((INDICATOR_COUNTED.Input==0)&&(INDICATOR_COUNTED.Period==Period()))\r
508     {\r
509      if((INDICATOR_COUNTED.counted_bars==0)&&(IsConnected()==TRUE))\r
510       { \r
511        //Print("INDICATOR_COUNTED: Òîðãîâûé Òåðìèíàë òîëüêî ÷òî ïîäêëþ÷èëñÿ ê èíòåðíåòó");  \r
512        //Print("INDICATOR_COUNTED: Ñåé÷àñ Ôóíêöèÿ INDICATOR_COUNTED() îïðåäåëèò êîëè÷åñòâî ôàêòè÷åñêè ïîäñ÷èòàííûõ áàðîâ");\r
513        if (INDICATOR_COUNTED.T2 == 0)\r
514          {\r
515           //Ïå÷àòü ðåçóëüòàòà îáðàùåíèÿ ê ôóíêöèè INDICATOR_COUNTED ïðè íåêîððåêòíîé ðàáîòå èíäèêàòîðà \r
516           Print("INDICATOR_COUNTED: Òîðãîâûé Òåðìèíàë òîëüêî ÷òî ïîäêëþ÷èëñÿ ê èíòåðíåòó");\r
517           Print("INDICATOR_COUNTED: Ïðåäïîñëåäíèé ïîäñ÷èòàííûé áàð íå íàéäåí");\r
518           Print("INDICATOR_COUNTED: Èñòèííîå êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ îïðåäåëèòü íåâîçìîæíî ");\r
519           Print("INDICATOR_COUNTED: Ôóíêöèÿ âåðí¸ò êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ ðàâíîå íóëþ");\r
520           Print("INDICATOR_COUNTED: Áóäåò ïðîèçâåä¸í ïîëíûé ïåðåñ÷¸ò èíäèêàòîðà íà âñåõ áàðàõ");\r
521         //PlaySound("wait.wav");\r
522           return(0); \r
523          }\r
524         //----+ ïîèñê ïðåäïîñëåäíåãî ïîäñ÷èòàííîãî áàðà ïî âðåìåíè åãî îòêðûòèÿ \r
525        int INDICATOR_COUNTED.BarShift=iBarShift(NULL,0,INDICATOR_COUNTED.T2,TRUE); \r
526        if (INDICATOR_COUNTED.BarShift<2)\r
527          {\r
528           //Ïå÷àòü ðåçóëüòàòà îáðàùåíèÿ ê ôóíêöèè INDICATOR_COUNTED ïðè íåêîððåêòíîé ðàáîòå èíäèêàòîðà \r
529           Print("INDICATOR_COUNTED: Òîðãîâûé Òåðìèíàë òîëüêî ÷òî ïîäêëþ÷èëñÿ ê èíòåðíåòó");\r
530           Print("INDICATOR_COUNTED: Ïðåäïîñëåäíèé ïîäñ÷èòàííûé áàð íå íàéäåí");\r
531           Print("INDICATOR_COUNTED: Èñòèííîå êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ îïðåäåëèòü íåâîçìîæíî ");\r
532           Print("INDICATOR_COUNTED: Ôóíêöèÿ âåðí¸ò êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ ðàâíîå íóëþ");\r
533           Print("INDICATOR_COUNTED: Áóäåò ïðîèçâåä¸í ïîëíûé ïåðåñ÷¸ò èíäèêàòîðà íà âñåõ áàðàõ");\r
534         //PlaySound("wait.wav");\r
535           return(0); \r
536          }\r
537        int INDICATOR_COUNTED.Resalt=Bars-1-INDICATOR_COUNTED.BarShift+2;\r
538        //Ïå÷àòü ðåçóëüòàòà îáðàùåíèÿ ê ôóíêöèè INDICATOR_COUNTED ïðè êîððåêòíîé ðàáîòå èíäèêàòîðà \r
539      //Print("INDICATOR_COUNTED: Òîðãîâûé Òåðìèíàë òîëüêî ÷òî ïîäêëþ÷èëñÿ ê èíòåðíåòó"); \r
540      //Print("INDICATOR_COUNTED: Ñåé÷àñ Ôóíêöèÿ îïðåäåëèò êîëè÷åñòâî ôàêòè÷åñêè ïîäñ÷èòàííûõ áàðîâ"); \r
541      //Print("INDICATOR_COUNTED: Ïðåäïîñëåäíèé ïîäñ÷èòàííûé áàð íàéäåí");\r
542      //Print("INDICATOR_COUNTED: Êîëè÷åñòâî óæå ïîäñ÷èòàííûõ áàðîâ áóäåò ðàâíî "+INDICATOR_COUNTED.Resalt+"");\r
543      //Print("INDICATOR_COUNTED: Áóäåò ïðîèçâåä¸í ïåðåñ÷¸ò èíäèêàòîðà âñåãî íà "+INDICATOR_COUNTED.BarShift+" áàðàõ");\r
544      //Print("INDICATOR_COUNTED: BarShift ="+INDICATOR_COUNTED.BarShift+" INDICATOR_COUNTED.T2 ="+INDICATOR_COUNTED.T2+""); \r
545        return(INDICATOR_COUNTED.Resalt); \r
546       }\r
547      else return(INDICATOR_COUNTED.counted_bars);\r
548     }\r
549    //----+ xxxxxxxxxxx\r
550   if (INDICATOR_COUNTED.Input ==-1)\r
551    { \r
552     INDICATOR_COUNTED.T2 =0; \r
553     INDICATOR_COUNTED.Period=-1; \r
554     Print("INDICATOR_COUNTED: Îøèáêà â ðàñ÷¸òå èíäèêàòîðà");\r
555     Print("INDICATOR_COUNTED: Ðàáîòà ôóíêöèè int start() áóäåò ïðåðâàíà îïåðàòîðîì return(-1)");\r
556   //PlaySound("stops.wav");  \r
557     return(0); \r
558    }\r
559   return(INDICATOR_COUNTED.counted_bars);\r
561 //--+ --------------------------------------------------------------------------------------------+\r