0
Спасибо огромнейшее!!! Спасибо!
avatar

vebster

  • 10 июня 2018, 09:46
0
Спасибо Андрей, разобрался)))) не зря 2 месяца ждал) так и нужно)
avatar

vebster

  • 1 июня 2018, 15:49
0
Спасибо Андрей, могли бы вы написать как вывести это всё:
PutLabel("L1","ATR 10 YEARS: "+(string)atr,200,10);
не получается(
avatar

vebster

  • 31 мая 2018, 18:11
0
благодарю, буду ждать!
avatar

vebster

  • 29 мая 2018, 18:33
0
Андрей Посмотрите пожалуйста не знаю правильно или нет, прочтите что ниже
<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>
avatar

vebster

  • 6 мая 2018, 13:23
0
Андрей, я попробую высчитать в индикаторе самостоятельно, но хотел бы попросить чобы вы сократили код, так как он у меня будет большое, я не умею делать:
for(int i=shift;i<12*year;i++)
     {
     }

avatar

vebster

  • 6 мая 2018, 12:55
0

в 1-й колонке у вас выведено атр за 10 лет, но оно не правильное, так как если сложить числа которые я посчитал, там выходит 23860 по фунт доллару

P.S в ручную столько вышло, в коде выше, другое, не знаю где верно
avatar

vebster

  • 6 мая 2018, 12:46
0

Андрей маленькое уточнение, в вашем индикаторе я вывел хай и лоу за последние 10 лет, отняв HIGH от LOW у меня вышло числа, которые в записаны в блокноте, потом я их сложил и поделил на 10, у меня получилось число АТР равное среднему АТР за последние 10 лет. У вас почему то число в 10-тки раз больше + вы вывели атр прошлого года, но оно слишком маленькое т.к даже атр месяца в 2 раза больше

Пожалуйста допилите или подскажите как допилить хотя бы чтобы получилось нужное кол-во атр за год, самое важное
avatar

vebster

  • 6 мая 2018, 12:42
0
Спасибо спасибо спасибо и еще раз Спасибо. Андрей!!! Благодарю!!!
avatar

vebster

  • 6 мая 2018, 12:00
0
так и на ваших скринах нету формулы, и зачем туда формулу и куда вставлять если тут написано подробно и понятно, это глупо, вы сейчас находите причину чтобы отшить меня, согласитесь, куда мне там формулу вставлять…
avatar

vebster

  • 6 мая 2018, 10:19
0
Андрей, пожалуйста найдите время, переделайте хотя бы код, чтобы высчитывалось по формулам выше, остальное можете не делать, сделайте самое основное, пожалуйста
avatar

vebster

  • 5 мая 2018, 17:34
0
Андрей, справа сбоку нету информации об:
2) АТР прошлого года — нету
3) хай прошлого года — нету
4) лоу прошлого года — нету

как я вам это на скрине покажу, чего нету?
и 2-е я спроси об расчёте, правильно ли высчитывается АТР года:
(сложив АТР с (2010г +… + 2018г)/10 ), т.е ((хай 2010-лоу 2010) + (хай 2011-лоу 2012) +… + (хай 2017-лоу 2018)/10) и так далее за 10 лет расчет, это как я мвам могу показать на скрине? такой ли расчёт в индикаторе?
avatar

vebster

  • 5 мая 2018, 11:29
0
Спасибо что ответили, на скрине не получится, прошу вывести как по ТЗ:
справа сбоку:
1) АТР ГОДА — есть
2) АТР прошлого года — нету
3) хай прошлого года — нету
4) лоу прошлого года — нету
Сейчас выводится атр при чем не правильно, я попросил чтобы расчёт брался за 10 лет тем самым высчитывался атр года, по такой схеме:
ТАк мы высчитает АТР Этого года!
(сложив АТР с (2010г +… + 2018г)/10 )
ТАк мы высчитает АТР ПРОШЛОГО года!
таким же способом прошлый год но только: (2009г +… + 2017г)/10
Андрей пожалуйста будьте добры переделайте. Спасибо
avatar

vebster

  • 4 мая 2018, 21:56
0
Андрей, пожалуйста не молчите
avatar

vebster

  • 4 мая 2018, 07:56
0
Спасибо, возникло пару замечаний, сейчас выводит как в ТЗ?
Но расчёт взять за 10 прошлых лет!!! (т.е высчитать атр, например, сложив АТР с (2010г +… + 2018г)/10 )
?????2) т.е высчитывается атр года?
Могли бы вы вывести еще:
таким же способом прошлый год но только: (2009г +… + 2017г)/10
как и было написанно в ТЗ
Спасибо
avatar

vebster

  • 3 мая 2018, 08:06
0
Спасибо)) буду ждать) пожалуйста проверьте правильность выполнения) Спасибо
avatar

vebster

  • 2 мая 2018, 11:21
0
упс, не сюда
avatar

vebster

  • 2 мая 2018, 09:34
0
Жду выполнения, сегодня 2-е уиии
avatar

vebster

  • 2 мая 2018, 07:54
0
ура, спасибо, буду ждать))))) Спасибо
avatar

vebster

  • 30 апреля 2018, 12:15
Начать торговлю с Альпари

 
Как начать: открываем первую торговую сделку за 7 шагов →