существуют зеркальные ТМА с опережением тренда двойные с доводчиком и задержкой и то толком не работают. Ваша задача решается расширением канала, но ТМА не работают, рисуют история будет + депозит -.
komod, пишите скайп, почту, вконтакте, одноклассники, даже аську, ватцап… скину вам код mql а дальше сами отредактируете начальный файл в ваше теме, или новую тему в стол заказов. если что вот мой skupe:max.celica. Есть готовая заказная (платная) версия это ZZ который ставит на заданные парамаетры высот стрелку,… тоже вручу.
int start()
{
int i, counted_bars = IndicatorCounted();
int limit,counterZ,whatlookfor;
int shift,back,lasthighpos,lastlowpos;
double val,res;
double curlow,curhigh,lasthigh,lastlow;
if (counted_bars==0 && downloadhistory) // history was downloaded
{
ArrayInitialize(ZigzagBuffer,0.0);
ArrayInitialize(HighMapBuffer,0.0);
ArrayInitialize(LowMapBuffer,0.0);
}
if (counted_bars==0)
{
limit=Bars-ExtDepth;
downloadhistory=true;
}
if (counted_bars>0)
{
while (counterZ<level && i<100)
{
res=ZigzagBuffer[i];
if (res!=0) counterZ++;
i++;
}
i--;
limit=i;
if (LowMapBuffer[i]!=0)
{
curlow=LowMapBuffer[i];
whatlookfor=1;
}
else
{
curhigh=HighMapBuffer[i];
whatlookfor=-1;
}
for (i=limit-1;i>=0;i--)
{
ZigzagBuffer[i]=0.0;
LowMapBuffer[i]=0.0;
HighMapBuffer[i]=0.0;
}
}
for(shift=limit; shift>=0; shift--)
{
val=Low[iLowest(NULL,0,MODE_LOW,ExtDepth,shift)];
if(val==lastlow) val=0.0;
else
{
lastlow=val;
if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=LowMapBuffer[shift+back];
if((res!=0)&&(res>val)) LowMapBuffer[shift+back]=0.0;
}
}
}
if (Low[shift]==val) LowMapBuffer[shift]=val; else LowMapBuffer[shift]=0.0;
//--- high
val=High[iHighest(NULL,0,MODE_HIGH,ExtDepth,shift)];
if(val==lasthigh) val=0.0;
else
{
lasthigh=val;
if((val-High[shift])>(ExtDeviation*Point)) val=0.0;
else
{
for(back=1; back<=ExtBackstep; back++)
{
res=HighMapBuffer[shift+back];
if((res!=0)&&(res<val)) HighMapBuffer[shift+back]=0.0;
}
}
}
if (High[shift]==val) HighMapBuffer[shift]=val; else HighMapBuffer[shift]=0.0;
}
Я могу скомпилировать твой EXE. файл в mql4, вот держи цвет меняет, проверяй. Единственно при компиляции куда то потерялся расчёт баров, но ты не переживай Андрей без труда их найдёт.
Андрей здравствуйте, попутно к теме, можно ли сделать в этом индикаторе обычную буферную стрелку на заданные параметры пипсов и баров при их достижении появляется стрелка ?!
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
extern int FontSize=8;
extern color TextColor=Brown;
//---- indicator buffers
double ExtMapBuffer[];
double ExtMapBuffer2[];
int giSumCounter,giSumTotal;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(2);
//---- drawing settings
SetIndexStyle(0,DRAW_SECTION);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexEmptyValue(0,0.0);
//---- indicator short name
IndicatorShortName(«ZigZag_Counter (»+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");
//---- initialization done
return(0);
}
int deinit()
{
ObjectsDeleteAll(0, OBJ_TEXT);
return(0);
}
void DeleteLabels(double startBar, double endBar)
{
int i;
int obj_total=ObjectsTotal();
string obj_name;
datetime obj_time;
for (i=obj_total-1;i>=0;i--)
{
obj_name=ObjectName(i);
if (ObjectType(obj_name)!=OBJ_TEXT) continue;
obj_time=ObjectGet(obj_name, OBJPROP_TIME1);
if ( (obj_time>=startBar) && (obj_time<=endBar) && (StringSubstr(obj_name,0,5)==«Count») )
{
ObjectDelete(obj_name);
}
}
return;
}
существуют зеркальные ТМА с опережением тренда двойные с доводчиком и задержкой и то толком не работают. Ваша задача решается расширением канала, но ТМА не работают, рисуют история будет + депозит -.
Maxix