# Компиляция индикаторов и экспертов под новые билды MetaTrader 4

Раздел: Язык программирования MQL4
Автор темы: Veles-tm
Создана: 2013-07-29 19:38
Ответов: 4184 | Просмотров: 824306
Страница 124 из 210
Источник: https://forexsystemru.com/threads/72646/page-124

---

## gravity — 2015-03-03 21:39

> Цитата (tommy27):
> У меня ни каких ошибок/предупреждений не выдал:question:

Киньте пожалуйста этот помощник?

## borobor — 2015-03-04 05:15

> Цитата (gravity):
> Киньте пожалуйста этот помощник?

держи

## mda — 2015-03-06 07:50

> Цитата (Karabas BARABAS):
> этот All рисует?

нет

## Данила24 — 2015-03-06 11:53

Народ, помогите пожалуйста скомпилировать правильно этот индюк..

## gince — 2015-03-06 14:43

> Цитата (Данила24):
> Народ, помогите пожалуйста скомпилировать правильно этот индюк..

Ошибок нет, дальше сам проверь

## Данила24 — 2015-03-06 14:50

Ура, скачал ваше - заработало! Спасибо) Экспериментирую с сезонной торговлей на мт4, сам торгую на cqg qtrader cme.

## gince — 2015-03-06 17:18

Уддачи

## Sapper — 2015-03-06 19:08

Кто-нибудь сможет помочь? 
Индикатор компилируется без ошибок, но с предупреждениями. На график не ставится. 
Должен выглядеть как на скрине.

## Bullra — 2015-03-07 12:37

> Цитата (ksardas):
> Сломался индюк уровней -вместо линий ставит точки на свечах, как починить не знаю:not-good:
>
> Скрин-как должно быть..

Лови, этот будет работать.

## ksardas — 2015-03-07 19:20

> Цитата (Bullra):
> Лови, этот будет работать.

К сожалению тоже -не работает....
 Не знаю как поправить((

## gince — 2015-03-07 19:40

> Цитата (ksardas):
> К сожалению тоже -не работает....
>  Не знаю как поправить((

probui takoi

## ksardas — 2015-03-07 20:39

> Цитата (gince):
> probui takoi

Да, точно тоже самое и работает!!!!

Благодарю и пойду изучать отличия*hi*

## Bullra — 2015-03-07 20:41

> Цитата (ksardas):
> К сожалению тоже -не работает....
>  Не знаю как поправить((

Значит проблема не в индикаторе.

Вроде у меня уже была подобная ситуация. Можно попробовать удалить все исходники и поставить экзешник, который я скинул.

## поручик — 2015-03-08 05:56

> Цитата (Sapper):
> Кто-нибудь сможет помочь?
> Индикатор компилируется без ошибок, но с предупреждениями. На график не ставится.
> Должен выглядеть как на скрине.

на график ставится, но ничего не кажет

т.к. - zero divide in '!MT4 TF DUO.mq4' (687,94)

## ksardas — 2015-03-08 14:24

> Цитата (поручик):
> на график ставится, но ничего не кажет
>
> т.к. - zero divide in '!MT4 TF DUO.mq4' (687,94)

Деление на ноль в стороке -687( исправлял это и другие ошибки -но все одно ни че не рисует)
Старый код не корректно интерпретируется...а мозгов не хватает(((

## поручик — 2015-03-08 14:31

я sapperу отвечал
=========
попробуй:
 terminal.exe удали из папки, поставь от другого ДЦ

#KG Support and Resistance(2).mq4 у меня работает, а вот другой - нет

## ksardas — 2015-03-08 14:48

> Цитата (поручик):
> #KG Support and Resistance(2).mq4 у меня работает, а вот другой - нет

код то одинаковый))
Другой тож работает -только тип функции поменял....
int Fractal (string M,int P, int shift)
меняеся с 1 на -1 была bool в старых работало

## volodymyr67 — 2015-03-09 17:24

**Всем приет !**

зделайте пожалоста под новый билд
//+------------+-----------------------------------------------------+
//| v.22.04.07 |                                         ArrZZx2.mq4 |
//+------------+                                                     |
//|------------|              Bookkeeper, 2007, yuzefovich@gmail.com |
//+------------+-----------------------------------------------------+
#property copyright ""
#property link      "http://www.forexter.land.ru/indicators.htm"
//----
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1  White
#property indicator_width1 4
#property indicator_color2  Lime
#property indicator_width2 2
#property indicator_color3  Blue
#property indicator_color4  Blue
#property indicator_color5  Blue//C'0,128,255'
#property indicator_width5 7
#property indicator_color6  Red//C'192,0,192'
#property indicator_width6 7
#property indicator_color7  DodgerBlue//C'0,128,255'
#property indicator_width7 3
#property indicator_color8  MediumVioletRed//C'192,0,192'
#property indicator_width8 3
//--------------------------------------------------------------------
int    SR     =3;  // =3..4   Xard settings (3,21,20,21,3,false,0)
extern int    SRZZ   =60;//60;//36;//24;//13; // =4..12..20..12
int    MainRZZ=20;//20; // =12..20..54..20
int    FP     =21;
int    SMF    =3;  // =1..5
bool   DrawZZ =false;
int    PriceConst=0; // 0 - Close
                            // 1 - Open
                            // 2 - High
                            // 3 - Low
                            // 4 - (H+L)/2
                            // 5 - (H+L+C)/3
                            // 6 - (H+L+2*C)/4
//extern string Prefix="ArrZZx2"; 
//--------------------------------------------------------------------
double        Lmt[];
double        LZZ[];
double        SA[];
double        SM[];
double        Up[];
double        Dn[];
double        pUp[];
double        pDn[];
//---------------------------------------------------------------------
int LTF={0,0,0,0,0,0},STF={0,0,0,0,0}; 
int MaxBar, nSBZZ, nLBZZ, SBZZ, LBZZ;
bool First=true;
int prevBars=0;
//---------------------------------------------------------------------
void MainCalculation(int Pos) {
if((Bars-Pos)>(SR+1)) SACalc(Pos); else SA=0; 
if((Bars-Pos)>(FP+SR+2)) SMCalc(Pos); else SM=0; return; }
//---------------------------------------------------------------------
void SACalc(int Pos) { int sw, i, w, ww, Shift; double sum; 
switch(PriceConst) {
case  0: 
  SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_CLOSE,Pos);
  break;
case  1: 
  SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_OPEN,Pos);
  break;
/*case  2: 
  SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_HIGH,Pos);
  break;
case  3: 
  SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_LOW,Pos);
  break;*/
case  4: 
  SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_MEDIAN,Pos);
  break;
case  5: 
  SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_TYPICAL,Pos);
  break;
case  6: 
  SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_WEIGHTED,Pos);
  break;
default: 
  SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_OPEN,Pos);
  break; }
for(Shift=Pos+SR+2;Shift>Pos;Shift--) { sum=0.0; sw=0; i=0; w=Shift+SR;
ww=Shift-SR; if(ww<Pos) ww=Pos;
while(w>=Shift) {i++; sum=sum+i*SnakePrice(w); sw=sw+i; w--; }
while(w>=ww) { i--; sum=sum+i*SnakePrice(w); sw=sw+i; w--; }
SA=sum/sw; } return; }
//----
double SnakePrice(int Shift) {
switch(PriceConst) {
   case  0: return(Close);
   case  1: return(Open);
   /*case  2: return(High);
   case  3: return(Low);*/
   case  4: return((High+Low)/2);
   case  5: return((Close+High+Low)/3);
   case  6: return((2*Close+High+Low)/4);
   default: return(Open); } }
//---------------------------------------------------------------------
void SMCalc(int i) { double t, b;
for(int Shift=i+SR+2;Shift>=i;Shift--) {
t=SA[ArrayMaximum(SA,FP,Shift)]; b=SA[ArrayMinimum(SA,FP,Shift)];
SM=(2*(2+SMF)*SA-(t+b))/2/(1+SMF); } return; }
//---------------------------------------------------------------------
void LZZCalc(int Pos) { 
int i,RBar,LBar,ZZ,NZZ,NZig,NZag; 
i=Pos-1; NZig=0; NZag=0;
while(i<MaxBar && ZZ==0) { i++; LZZ=0; RBar=i-MainRZZ; 
if(RBar<Pos) RBar=Pos; LBar=i+MainRZZ;
if(i==ArrayMinimum(SM,LBar-RBar+1,RBar)) { ZZ=-1; NZig=i; }
if(i==ArrayMaximum(SM,LBar-RBar+1,RBar)) { ZZ=1;NZag=i; } }
if(ZZ==0) return; NZZ=0;
if(i>Pos) { if(SM>SM) { if(ZZ==1) {
if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF=i; } NZag=i; 
LZZ=SM; } }
else { if(ZZ==-1) { if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF=i; }
NZig=i; LZZ=SM; } } }
while(i<LBZZ || NZZ<5) {  LZZ=0; RBar=i-MainRZZ; 
if(RBar<Pos) RBar=Pos; LBar=i+MainRZZ;
if(i==ArrayMinimum(SM,LBar-RBar+1,RBar)) {
if(ZZ==-1 && SM<SM) { 
if(i>=Pos+MainRZZ && NZZ<5) LTF=i; LZZ=0; LZZ=SM; 
NZig=i; }
if(ZZ==1) { if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF=i; } 
LZZ=SM; ZZ=-1; NZig=i; } }
if(i==ArrayMaximum(SM,LBar-RBar+1,RBar)) {
if(ZZ==1 && SM>SM) { 
if(i>=Pos+MainRZZ && NZZ<5) LTF=i; LZZ=0; LZZ=SM; 
NZag=i; }
if(ZZ==-1) { if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF=i; } 
LZZ=SM; ZZ=1; NZag=i; } } i++; if(i>MaxBar) return; } 
nLBZZ=Bars-LTF; LZZ=SM; return; }
//----
void SZZCalc(int Pos) { 
int i,RBar,LBar,ZZ,NZZ,NZig,NZag; 
i=Pos-1; NZig=0; NZag=0;
while(i<=LBZZ && ZZ==0) { i++; pDn=0; pUp=0; Dn=0; Up=0; 
Lmt=0; RBar=i-SRZZ; if(RBar<Pos) RBar=Pos; LBar=i+SRZZ;
if(i==ArrayMinimum(SM,LBar-RBar+1,RBar)) { ZZ=-1; NZig=i; }
if(i==ArrayMaximum(SM,LBar-RBar+1,RBar)) { ZZ=1; NZag=i; } }
if(ZZ==0) return; NZZ=0;
if(i>Pos) { if(SM>SM) { if(ZZ==1) {
if(i>=Pos+SRZZ && NZZ<4) { NZZ++; STF=i; } NZag=i; 
Dn=Open; } }
else { if(ZZ==-1) { if(i>=Pos+SRZZ && NZZ<4) { NZZ++; STF=i; }
NZig=i; Up=Open; } } }
while(i<=LBZZ || NZZ<4) { pDn=0; pUp=0; Dn=0; Up=0; 
Lmt=0; RBar=i-SRZZ; if(RBar<Pos) RBar=Pos; LBar=i+SRZZ;
if(i==ArrayMinimum(SM,LBar-RBar+1,RBar)) {
if(ZZ==-1 && SM<SM) { 
if(i>=Pos+SRZZ && NZZ<4) STF=i; Up=0; Up=Open; 
NZig=i; } if(ZZ==1) { if(i>=Pos+SRZZ && NZZ<4) { NZZ++; STF=i; } 
Up=Open; ZZ=-1; NZig=i;  } }
if(i==ArrayMaximum(SM,LBar-RBar+1,RBar)) {
if(ZZ==1 && SM>SM) { 
if(i>=Pos+SRZZ && NZZ<4) STF=i; Dn=0; Dn=Open; 
NZag=i; } if(ZZ==-1) { if(i>=Pos+SRZZ && NZZ<4) { NZZ++; STF=i; } 
Dn=Open; ZZ=1; NZag=i; } } i++; if(i>LBZZ) return; } 
nSBZZ=Bars-STF; return; }
//---------------------------------------------------------------------
void ArrCalc() { int i,j,k,n,z=0; double p, b;
i=LBZZ; while(LZZ==0) i--; j=i; p=LZZ; i--; while(LZZ==0) i--; 
if(LZZ>p) z=1; if(LZZ>0 && LZZ<p) z=-1; p=LZZ; i=j-1;  
while(i>0) { if(LZZ>p) { z=-1; p=LZZ; }
if(LZZ>0 && LZZ<p) { z=1;  p=LZZ; }
if(z>0 && Dn>0) { Lmt=Open; Dn=0; }
if(z<0 && Up>0) { Lmt=Open; Up=0; }
if(z>0 && Up>0) { if(i>1) { j=i-1; k=j-SRZZ+1; if(k<0) k=0; 
n=j; while(n>=k && Dn==0) { pUp=Up; pDn=0; n--; } } 
if(i==1) pUp=Up; } 
if(z<0 && Dn>0) { if(i>1) { j=i-1; k=j-SRZZ+1; if(k<0) k=0; 
n=j; while(n>=k && Up==0) { pDn=Dn; pUp=0; n--; } } 
if(i==1) pDn=Dn; } 
i--; } return; }
//---------------------------------------------------------------------
void deinit() { 
return; }
//---------------------------------------------------------------------
int init() { IndicatorBuffers(8);
SetIndexBuffer(0,Lmt);
SetIndexStyle(0,DRAW_ARROW,EMPTY,5); SetIndexArrow(0,167);
SetIndexEmptyValue(0,0.0);
SetIndexBuffer(1,LZZ);
if(DrawZZ) {
SetIndexStyle(1,DRAW_SECTION,EMPTY,2);
SetIndexEmptyValue(1,0.0); }
else SetIndexStyle(1,DRAW_NONE);
SetIndexBuffer(2,SA); SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(3,SM); SetIndexStyle(3,DRAW_NONE);
SetIndexBuffer(4,Up); SetIndexStyle(4,DRAW_ARROW,EMPTY,7);//Green up arrow
SetIndexArrow(4,233); SetIndexEmptyValue(4,0.0);
SetIndexBuffer(5,Dn); SetIndexStyle(5,DRAW_ARROW,EMPTY,7);//Red down arrow
SetIndexArrow(5,234); SetIndexEmptyValue(5,0.0);
SetIndexBuffer(6,pUp); SetIndexStyle(6,DRAW_ARROW,EMPTY,3);//Green up markers
SetIndexArrow(6,104); SetIndexEmptyValue(6,0.0);
SetIndexBuffer(7,pDn); SetIndexStyle(7,DRAW_ARROW,EMPTY,3);//Red down markers
SetIndexArrow(7,104); SetIndexEmptyValue(7,0.0); return(0); }//167
//---------------------------------------------------------------------
int start() { int counted_bars=IndicatorCounted(); int limit,i,j,n;
if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--;
if(First==true) { 
if(SR<2) SR=2; if(Bars<=2*(MainRZZ+FP+SR+2)) return(-1); 
if(SRZZ<=SR) SRZZ=SR+1; MaxBar=Bars-(MainRZZ+FP+SR+2);
LBZZ=MaxBar; SBZZ=LBZZ; prevBars=Bars; First=false; }
limit=Bars-counted_bars; for(i=limit;i>=0;i--) { MainCalculation(i); }
if(prevBars!=Bars) { SBZZ=Bars-nSBZZ; LBZZ=Bars-nLBZZ; prevBars=Bars; } 
SZZCalc(0); LZZCalc(0); ArrCalc(); 

/*//////////////////////////
      ObjectDelete("tx01");
      ObjectCreate("tx01", OBJ_LABEL, 0, 0, 0);
      ObjectSetText("tx01", DoubleToStr(pDn,2), 25, "Arial Bold", LimeGreen);
      ObjectSet("tx01", OBJPROP_CORNER, 1);
      ObjectSet("tx01", OBJPROP_BACK, true);
      ObjectSet("tx01", OBJPROP_XDISTANCE, 20);
      ObjectSet("tx01", OBJPROP_YDISTANCE, 200);
      *////////////////////////////////////////

return(0); }
//---------------------------------------------------------------------

[изображение: http://forex.osobye.ru/upload/forum/d68ce8c1397648be82debf1298265fd0.jpg]

## mobidik — 2015-03-09 17:48

> Цитата (volodymyr67):
> зделайте пожалоста под новый билд
> //+------------+-----------------------------------------------------+
> //| v.22.04.07 |                                         ArrZZx2.mq4 |
> //+------------+                                                     |
> //|------------|              Bookkeeper, 2007, yuzefovich@gmail.com |
> //+------------+-----------------------------------------------------+
> #property copyright ""
> #property link      "http://www.forexter.land.ru/indicators.htm"
> //----
> #property indicator_chart_window
> #property indicator_buffers 8
> #property indicator_color1  White
> #property indicator_width1 4
> #property indicator_color2  Lime
> #property indicator_width2 2
> #property indicator_color3  Blue
> #property indicator_color4  Blue
> #property indicator_color5  Blue//C'0,128,255'
> #property indicator_width5 7
> #property indicator_color6  Red//C'192,0,192'
> #property indicator_width6 7
> #property indicator_color7  DodgerBlue//C'0,128,255'
> #property indicator_width7 3
> #property indicator_color8  MediumVioletRed//C'192,0,192'
> #property indicator_width8 3
> //--------------------------------------------------------------------
> int    SR     =3;  // =3..4   Xard settings (3,21,20,21,3,false,0)
> extern int    SRZZ   =60;//60;//36;//24;//13; // =4..12..20..12
> int    MainRZZ=20;//20; // =12..20..54..20
> int    FP     =21;
> int    SMF    =3;  // =1..5
> bool   DrawZZ =false;
> int    PriceConst=0; // 0 - Close
>                             // 1 - Open
>                             // 2 - High
>                             // 3 - Low
>                             // 4 - (H+L)/2
>                             // 5 - (H+L+C)/3
>                             // 6 - (H+L+2*C)/4
> //extern string Prefix="ArrZZx2";
> //--------------------------------------------------------------------
> double        Lmt[];
> double        LZZ[];
> double        SA[];
> double        SM[];
> double        Up[];
> double        Dn[];
> double        pUp[];
> double        pDn[];
> //---------------------------------------------------------------------
> int LTF={0,0,0,0,0,0},STF={0,0,0,0,0};
> int MaxBar, nSBZZ, nLBZZ, SBZZ, LBZZ;
> bool First=true;
> int prevBars=0;
> //---------------------------------------------------------------------
> void MainCalculation(int Pos) {
> if((Bars-Pos)>(SR+1)) SACalc(Pos); else SA=0;
> if((Bars-Pos)>(FP+SR+2)) SMCalc(Pos); else SM=0; return; }
> //---------------------------------------------------------------------
> void SACalc(int Pos) { int sw, i, w, ww, Shift; double sum;
> switch(PriceConst) {
> case  0:
>   SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_CLOSE,Pos);
>   break;
> case  1:
>   SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_OPEN,Pos);
>   break;
> /*case  2:
>   SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_HIGH,Pos);
>   break;
> case  3:
>   SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_LOW,Pos);
>   break;*/
> case  4:
>   SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_MEDIAN,Pos);
>   break;
> case  5:
>   SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_TYPICAL,Pos);
>   break;
> case  6:
>   SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_WEIGHTED,Pos);
>   break;
> default:
>   SA=iMA(NULL,0,SR+1,0,MODE_LWMA,PRICE_OPEN,Pos);
>   break; }
> for(Shift=Pos+SR+2;Shift>Pos;Shift--) { sum=0.0; sw=0; i=0; w=Shift+SR;
> ww=Shift-SR; if(ww<Pos) ww=Pos;
> while(w>=Shift) {i++; sum=sum+i*SnakePrice(w); sw=sw+i; w--; }
> while(w>=ww) { i--; sum=sum+i*SnakePrice(w); sw=sw+i; w--; }
> SA=sum/sw; } return; }
> //----
> double SnakePrice(int Shift) {
> switch(PriceConst) {
>    case  0: return(Close);
>    case  1: return(Open);
>    /*case  2: return(High);
>    case  3: return(Low);*/
>    case  4: return((High+Low)/2);
>    case  5: return((Close+High+Low)/3);
>    case  6: return((2*Close+High+Low)/4);
>    default: return(Open); } }
> //---------------------------------------------------------------------
> void SMCalc(int i) { double t, b;
> for(int Shift=i+SR+2;Shift>=i;Shift--) {
> t=SA[ArrayMaximum(SA,FP,Shift)]; b=SA[ArrayMinimum(SA,FP,Shift)];
> SM=(2*(2+SMF)*SA-(t+b))/2/(1+SMF); } return; }
> //---------------------------------------------------------------------
> void LZZCalc(int Pos) {
> int i,RBar,LBar,ZZ,NZZ,NZig,NZag;
> i=Pos-1; NZig=0; NZag=0;
> while(i<MaxBar && ZZ==0) { i++; LZZ=0; RBar=i-MainRZZ;
> if(RBar<Pos) RBar=Pos; LBar=i+MainRZZ;
> if(i==ArrayMinimum(SM,LBar-RBar+1,RBar)) { ZZ=-1; NZig=i; }
> if(i==ArrayMaximum(SM,LBar-RBar+1,RBar)) { ZZ=1;NZag=i; } }
> if(ZZ==0) return; NZZ=0;
> if(i>Pos) { if(SM>SM) { if(ZZ==1) {
> if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF=i; } NZag=i;
> LZZ=SM; } }
> else { if(ZZ==-1) { if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF=i; }
> NZig=i; LZZ=SM; } } }
> while(i<LBZZ || NZZ<5) {  LZZ=0; RBar=i-MainRZZ;
> if(RBar<Pos) RBar=Pos; LBar=i+MainRZZ;
> if(i==ArrayMinimum(SM,LBar-RBar+1,RBar)) {
> if(ZZ==-1 && SM<SM) {
> if(i>=Pos+MainRZZ && NZZ<5) LTF=i; LZZ=0; LZZ=SM;
> NZig=i; }
> if(ZZ==1) { if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF=i; }
> LZZ=SM; ZZ=-1; NZig=i; } }
> if(i==ArrayMaximum(SM,LBar-RBar+1,RBar)) {
> if(ZZ==1 && SM>SM) {
> if(i>=Pos+MainRZZ && NZZ<5) LTF=i; LZZ=0; LZZ=SM;
> NZag=i; }
> if(ZZ==-1) { if(i>=Pos+MainRZZ && NZZ<5) { NZZ++; LTF=i; }
> LZZ=SM; ZZ=1; NZag=i; } } i++; if(i>MaxBar) return; }
> nLBZZ=Bars-LTF; LZZ=SM; return; }
> //----
> void SZZCalc(int Pos) {
> int i,RBar,LBar,ZZ,NZZ,NZig,NZag;
> i=Pos-1; NZig=0; NZag=0;
> while(i<=LBZZ && ZZ==0) { i++; pDn=0; pUp=0; Dn=0; Up=0;
> Lmt=0; RBar=i-SRZZ; if(RBar<Pos) RBar=Pos; LBar=i+SRZZ;
> if(i==ArrayMinimum(SM,LBar-RBar+1,RBar)) { ZZ=-1; NZig=i; }
> if(i==ArrayMaximum(SM,LBar-RBar+1,RBar)) { ZZ=1; NZag=i; } }
> if(ZZ==0) return; NZZ=0;
> if(i>Pos) { if(SM>SM) { if(ZZ==1) {
> if(i>=Pos+SRZZ && NZZ<4) { NZZ++; STF=i; } NZag=i;
> Dn=Open; } }
> else { if(ZZ==-1) { if(i>=Pos+SRZZ && NZZ<4) { NZZ++; STF=i; }
> NZig=i; Up=Open; } } }
> while(i<=LBZZ || NZZ<4) { pDn=0; pUp=0; Dn=0; Up=0;
> Lmt=0; RBar=i-SRZZ; if(RBar<Pos) RBar=Pos; LBar=i+SRZZ;
> if(i==ArrayMinimum(SM,LBar-RBar+1,RBar)) {
> if(ZZ==-1 && SM<SM) {
> if(i>=Pos+SRZZ && NZZ<4) STF=i; Up=0; Up=Open;
> NZig=i; } if(ZZ==1) { if(i>=Pos+SRZZ && NZZ<4) { NZZ++; STF=i; }
> Up=Open; ZZ=-1; NZig=i;  } }
> if(i==ArrayMaximum(SM,LBar-RBar+1,RBar)) {
> if(ZZ==1 && SM>SM) {
> if(i>=Pos+SRZZ && NZZ<4) STF=i; Dn=0; Dn=Open;
> NZag=i; } if(ZZ==-1) { if(i>=Pos+SRZZ && NZZ<4) { NZZ++; STF=i; }
> Dn=Open; ZZ=1; NZag=i; } } i++; if(i>LBZZ) return; }
> nSBZZ=Bars-STF; return; }
> //---------------------------------------------------------------------
> void ArrCalc() { int i,j,k,n,z=0; double p, b;
> i=LBZZ; while(LZZ==0) i--; j=i; p=LZZ; i--; while(LZZ==0) i--;
> if(LZZ>p) z=1; if(LZZ>0 && LZZ<p) z=-1; p=LZZ; i=j-1;
> while(i>0) { if(LZZ>p) { z=-1; p=LZZ; }
> if(LZZ>0 && LZZ<p) { z=1;  p=LZZ; }
> if(z>0 && Dn>0) { Lmt=Open; Dn=0; }
> if(z<0 && Up>0) { Lmt=Open; Up=0; }
> if(z>0 && Up>0) { if(i>1) { j=i-1; k=j-SRZZ+1; if(k<0) k=0;
> n=j; while(n>=k && Dn==0) { pUp=Up; pDn=0; n--; } }
> if(i==1) pUp=Up; }
> if(z<0 && Dn>0) { if(i>1) { j=i-1; k=j-SRZZ+1; if(k<0) k=0;
> n=j; while(n>=k && Up==0) { pDn=Dn; pUp=0; n--; } }
> if(i==1) pDn=Dn; }
> i--; } return; }
> //---------------------------------------------------------------------
> void deinit() {
> return; }
> //---------------------------------------------------------------------
> int init() { IndicatorBuffers(8);
> SetIndexBuffer(0,Lmt);
> SetIndexStyle(0,DRAW_ARROW,EMPTY,5); SetIndexArrow(0,167);
> SetIndexEmptyValue(0,0.0);
> SetIndexBuffer(1,LZZ);
> if(DrawZZ) {
> SetIndexStyle(1,DRAW_SECTION,EMPTY,2);
> SetIndexEmptyValue(1,0.0); }
> else SetIndexStyle(1,DRAW_NONE);
> SetIndexBuffer(2,SA); SetIndexStyle(2,DRAW_NONE);
> SetIndexBuffer(3,SM); SetIndexStyle(3,DRAW_NONE);
> SetIndexBuffer(4,Up); SetIndexStyle(4,DRAW_ARROW,EMPTY,7);//Green up arrow
> SetIndexArrow(4,233); SetIndexEmptyValue(4,0.0);
> SetIndexBuffer(5,Dn); SetIndexStyle(5,DRAW_ARROW,EMPTY,7);//Red down arrow
> SetIndexArrow(5,234); SetIndexEmptyValue(5,0.0);
> SetIndexBuffer(6,pUp); SetIndexStyle(6,DRAW_ARROW,EMPTY,3);//Green up markers
> SetIndexArrow(6,104); SetIndexEmptyValue(6,0.0);
> SetIndexBuffer(7,pDn); SetIndexStyle(7,DRAW_ARROW,EMPTY,3);//Red down markers
> SetIndexArrow(7,104); SetIndexEmptyValue(7,0.0); return(0); }//167
> //---------------------------------------------------------------------
> int start() { int counted_bars=IndicatorCounted(); int limit,i,j,n;
> if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--;
> if(First==true) {
> if(SR<2) SR=2; if(Bars<=2*(MainRZZ+FP+SR+2)) return(-1);
> if(SRZZ<=SR) SRZZ=SR+1; MaxBar=Bars-(MainRZZ+FP+SR+2);
> LBZZ=MaxBar; SBZZ=LBZZ; prevBars=Bars; First=false; }
> limit=Bars-counted_bars; for(i=limit;i>=0;i--) { MainCalculation(i); }
> if(prevBars!=Bars) { SBZZ=Bars-nSBZZ; LBZZ=Bars-nLBZZ; prevBars=Bars; }
> SZZCalc(0); LZZCalc(0); ArrCalc();
>
> /*//////////////////////////
>       ObjectDelete("tx01");
>       ObjectCreate("tx01", OBJ_LABEL, 0, 0, 0);
>       ObjectSetText("tx01", DoubleToStr(pDn,2), 25, "Arial Bold", LimeGreen);
>       ObjectSet("tx01", OBJPROP_CORNER, 1);
>       ObjectSet("tx01", OBJPROP_BACK, true);
>       ObjectSet("tx01", OBJPROP_XDISTANCE, 20);
>       ObjectSet("tx01", OBJPROP_YDISTANCE, 200);
>       *////////////////////////////////////////
>
> return(0); }
> //---------------------------------------------------------------------
> 
> [изображение: http://forex.osobye.ru/upload/forum/d68ce8c1397648be82debf1298265fd0.jpg]

Да все работает:

## wawilon — 2015-03-10 09:16

Подскажите пожалуйста! Можно ли декомпельнуть индюк без замены переменных на всякие G_169 и т.п. Ну чтобы код остался чистым - от автора? Если можно, то скажите к кому можно обратиться!

---

Следующая страница: https://forexsystemru.com/threads/72646/page-125
