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
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
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
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
73 //----+ îïðåäåëåíèå ôóíêöèè JJMASeries
\r
74 #include <JJMASeries.Exp1.mqh>
\r
77 //SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
78 //++++++++++++++++++++++++++++++++++++++++++++++++ <<< JJMASeries.Exp1 >>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|
\r
79 //SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\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
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
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
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
131 nJMA.reset=0;return(1);
\r
132 //----++SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\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
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
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
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
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
180 if((nJMA.Tnew==nJMA.mem2[nJMA.n][01])&&(nJMA.bar!=nJMA.MaxBar))
\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
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
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
211 //--+ èíäèêàöèÿ îøèáêè â ðàñ÷¸òå âõîäíîãî ïàðàìåòðà nJMA.limit ôóíêöèè JJMASeries()
\r
212 if (nJMA.Tnew>nJMA.mem2[nJMA.n][01])
\r
214 Print("JJMASerries number ="+nJMA.n+". ERROR01");
\r
215 Print("JJMASerries number ="+nJMA.n+". Ïàðàìåòð nJMA.limit ôóíêöèè JJMASeries ìåíüøå, ÷åì íåîáõîäèìî");
\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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
445 //--+ --------------------------------------------------------------------------------------------+
\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
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
473 for(bar=limit;bar>=0;bar--) { êîä âàøåãî èíäèêàòîðà } |
\r
474 Åñëè â òåêñòå èíäèêàòîðà åñòü âûðàæåíèå return(-1) äëÿ ôóíêöèè int start(); òî åãî ñëåäóåò |
\r
475 çàìåíèòü íà {INDICATOR_COUNTED(-1);return(-1);} |
\r
476 //+SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+
\r
478 int INDICATOR_COUNTED(int INDICATOR_COUNTED.Input)
\r
481 int INDICATOR_COUNTED.counted_bars;
\r
482 //----+ xxxxxxxxxxx
\r
483 if (INDICATOR_COUNTED.Input == 1)
\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
490 //INDICATOR_COUNTED.T2=0;
\r
491 return(INDICATOR_COUNTED.counted_bars);
\r
493 //----+ ôèêñàöèÿ âðåìåíè îòêðûòèÿ ïðåäïîñëåäíåãî ïîäñ÷èòàííîãî áàðà
\r
494 INDICATOR_COUNTED.T2 =Time[2];
\r
495 INDICATOR_COUNTED.Period=Period();
\r
496 return(INDICATOR_COUNTED.counted_bars);
\r
498 INDICATOR_COUNTED.counted_bars=IndicatorCounted();
\r
499 if (INDICATOR_COUNTED.counted_bars<0)
\r
501 INDICATOR_COUNTED.T2=0;
\r
502 return(INDICATOR_COUNTED.counted_bars);
\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
509 if((INDICATOR_COUNTED.counted_bars==0)&&(IsConnected()==TRUE))
\r
511 //Print("INDICATOR_COUNTED: Òîðãîâûé Òåðìèíàë òîëüêî ÷òî ïîäêëþ÷èëñÿ ê èíòåðíåòó");
\r
512 //Print("INDICATOR_COUNTED: Ñåé÷àñ Ôóíêöèÿ INDICATOR_COUNTED() îïðåäåëèò êîëè÷åñòâî ôàêòè÷åñêè ïîäñ÷èòàííûõ áàðîâ");
\r
513 if (INDICATOR_COUNTED.T2 == 0)
\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
524 //----+ ïîèñê ïðåäïîñëåäíåãî ïîäñ÷èòàííîãî áàðà ïî âðåìåíè åãî îòêðûòèÿ
\r
525 int INDICATOR_COUNTED.BarShift=iBarShift(NULL,0,INDICATOR_COUNTED.T2,TRUE);
\r
526 if (INDICATOR_COUNTED.BarShift<2)
\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
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
547 else return(INDICATOR_COUNTED.counted_bars);
\r
549 //----+ xxxxxxxxxxx
\r
550 if (INDICATOR_COUNTED.Input ==-1)
\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
559 return(INDICATOR_COUNTED.counted_bars);
\r
561 //--+ --------------------------------------------------------------------------------------------+
\r