PutLabel("L1","ATR 10 YEARS: "+(string)atr,200,10);
не получается(
<code>//+------------------------------------------------------------------+ //| ATRGod.mq4 | //| Copyright 2018, AM2 | //| http://www.forexsyatems.biz | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, AM2" #property link "http://www.forexsyatems.biz" #property version "1.00" #property strict #property indicator_chart_window input int years=10; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void PutLabel(string nm,string text,int x,int y) { ObjectDelete(0,nm); //--- создадим текстовую метку ObjectCreate(0,nm,OBJ_LABEL,0,0,0); //--- установим координаты метки ObjectSetInteger(0,nm,OBJPROP_XDISTANCE,x); ObjectSetInteger(0,nm,OBJPROP_YDISTANCE,y); //--- установим угол графика, относительно которого будут определяться координаты точки ObjectSetInteger(0,nm,OBJPROP_CORNER,1); //--- установим текст ObjectSetString(0,nm,OBJPROP_TEXT,text); //--- установим шрифт текста ObjectSetString(0,nm,OBJPROP_FONT,"Arial"); //--- установим размер шрифта ObjectSetInteger(0,nm,OBJPROP_FONTSIZE,12); //--- установим цвет ObjectSetInteger(0,nm,OBJPROP_COLOR,Red); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double atr(int year) { int at=0; int shift=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-1)))); for(int i=shift;i<12;i++) { at+=(int)((iHigh(NULL,PERIOD_MN1,i)-iLow(NULL,PERIOD_MN1,i))/_Point); } return(at/12*year); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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[]) { //--- int shift1=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-1)))); int shift2=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-2)))); int shift3=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-3)))); int shift4=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-4)))); int shift5=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-5)))); int shift6=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-6)))); int shift7=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-7)))); int shift8=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-8)))); int shift9=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-9)))); int shift10=iBarShift(NULL,PERIOD_MN1,StringToTime("31"+".12."+(string(Year()-10)))); double lo1=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift1)); double lo2=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift2)); double lo3=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift3)); double lo4=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift4)); double lo5=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift5)); double lo6=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift6)); double lo7=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift7)); double lo8=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift8)); double lo9=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift9)); double lo10=iLow(NULL,PERIOD_MN1,iLowest(NULL,PERIOD_MN1,MODE_LOW,12,shift10)); double hi1=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift1)); double hi2=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift2)); double hi3=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift3)); double hi4=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift4)); double hi5=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift5)); double hi6=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift6)); double hi7=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift7)); double hi8=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift8)); double hi9=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift9)); double hi10=iHigh(NULL,PERIOD_MN1,iHighest(NULL,PERIOD_MN1,MODE_HIGH,12,shift10)); //Это не нужно просто вывел чтобы посмотреть точные ли данные, Андрей удалите PutLabel("L31","LOW LAST YEAR: "+(string)(lo1),450,50); PutLabel("L32","LOW LAST YEAR: "+(string)(lo2),450,70); PutLabel("L33","LOW LAST YEAR: "+(string)(lo3),450,90); PutLabel("L34","LOW LAST YEAR: "+(string)(lo4),450,110); PutLabel("L35","LOW LAST YEAR: "+(string)(lo5),450,130); PutLabel("L36","LOW LAST YEAR: "+(string)(lo6),450,150); PutLabel("L37","LOW LAST YEAR: "+(string)(lo7),450,170); PutLabel("L38","LOW LAST YEAR: "+(string)(lo8),450,190); PutLabel("L39","LOW LAST YEAR: "+(string)(lo9),450,210); PutLabel("L30","LOW LAST YEAR: "+(string)(lo10),450,230); PutLabel("L41","HIGH LAST YEAR: "+(string)(hi1),200,70); PutLabel("L42","HIGH LAST YEAR: "+(string)(hi2),200,90); PutLabel("L43","HIGH LAST YEAR: "+(string)(hi3),200,110); PutLabel("L44","HIGH LAST YEAR: "+(string)(hi4),200,130); PutLabel("L45","HIGH LAST YEAR: "+(string)(hi5),200,150); PutLabel("L46","HIGH LAST YEAR: "+(string)(hi6),200,170); PutLabel("L47","HIGH LAST YEAR: "+(string)(hi7),200,190); PutLabel("L48","HIGH LAST YEAR: "+(string)(hi8),200,210); PutLabel("L49","HIGH LAST YEAR: "+(string)(hi9),200,230); PutLabel("L40","HIGH LAST YEAR: "+(string)(hi10),200,250); //Это не нужно просто вывел чтобы посмотреть точные ли данные, Андрей удалите //PutLabel("ATR YEAR to 10YEARS:","ATR YEAR"+(string)(((hi1-lo1)+(hi2-lo2)+(hi3-lo3)+(hi4-lo4)+(hi5-lo5)+(hi6-lo6)+(hi7-lo7)+(hi8-lo8)+(hi9-lo9)+(hi10-lo10)/10)),650,250); double ATR_YEARSS=(((hi1-lo1)+(hi2-lo2)+(hi3-lo3)+(hi4-lo4)+(hi5-lo5)+(hi6-lo6)+(hi7-lo7)+(hi8-lo8)+(hi9-lo9)+(hi10-lo10)/10)); //Тут не умноженное число //PutLabel("ATR YEAR to 10YEARS1:","ATR YEAR "+(string)ATR_YEARSS,750,200); //не знаю как написать правильно, хочу получить не 1.8.... а чтобы было без точки целое число, но мне кажется это глупо так умножать... PutLabel("ATR YEAR to 10YEARS:","ATR YEAR "+(string)(ATR_YEARSS*100000),650,250); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ </code>
for(int i=shift;i<12*year;i++)
{
}
(сложив АТР с (2010г +… + 2018г)/10 )ТАк мы высчитает АТР ПРОШЛОГО года!
таким же способом прошлый год но только: (2009г +… + 2017г)/10Андрей пожалуйста будьте добры переделайте. Спасибо
Но расчёт взять за 10 прошлых лет!!! (т.е высчитать атр, например, сложив АТР с (2010г +… + 2018г)/10 )?????2) т.е высчитывается атр года?
таким же способом прошлый год но только: (2009г +… + 2017г)/10как и было написанно в ТЗ
vebster