Здравствуйте, никак индикатор не получается перенести. Может кто-нибудь своим опытным взглядом заметит, где я косячу?
В результате одно из значений(down) просто на 0 стоит. Второе (up) колбасит от 0 до цены
[img]https://ibb.co/sPXMkWf[/img]
Click to reveal..
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
double lowprice,highprice,lowma,highma,zone;

if(prev_calculated==0)
int limit=rates_total-Length-1;
if(prev_calculated>0)
limit=rates_total-prev_calculated;

for(int i=limit; i>=0; i--)
{
lowprice=iLow(NULL,0,iLowest(NULL,0,MODE_LOW,Length,i));
highprice=iHigh(NULL,0,iHighest(NULL,0,MODE_HIGH,Length,i));

lowma=iMA(NULL,0,Length,0,MODE_SMA,PRICE_LOW,i);
highma=iMA(NULL,0,Length,0,MODE_SMA,PRICE_HIGH,i);


maxlo=MathMax(lowprice,maxlo);
minhi=MathMin(highprice,minhi);

map[i]=map[i+1];

if(highma<maxlo && close[i]<low[i+1])
{
map[i]=-1;
maxlo=lowprice;
}
if(lowma>minhi && close[i]>high[i+1])
{
map[i]=1;
minhi=highprice;
}

if(map[i]>0 && map[i+1]<0)
{
up[i]=down[i+1];
up[i+1]=up[i];
}

if(map[i]>0 && map[i+1]>0)
{
up[i]=MathMax(maxlo,up[i+1]);
}

if(map[i]<0 && map[i+1]>0)
{
down[i]=up[i+1];
down[i+1]=down[i];
}

if(map[i]<0 && map[i+1]<0)
{
down[i]=MathMin(minhi,down[i+1]);
}


Отредактировано MorganFrenk (Sun Dec 22 2019 03:09 AM)