Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Заказ индикатора

Здравствуйте Андрей, прошу выполнить мой заказ, упростил поинмание:
Нужно вывести стредние арифметические атр за последние 5 кварталов, 5 чисел на гарфике, и каждое число среднее атр кварталу. Поажуйслат текстом на графике. Спасибо
  • 0
  • Просмотров: 2166
  • 20 декабря 2018, 19:00
  • lafler356
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Oпeрaция кнoпкa
18 декабря 2018
20 декабря 2018

Брокер для ваших роботов, 15 лет на рынке

Комментарии (24)

+
0
поясните все на скринах
avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 20 декабря 2018, 19:58
+
0
Андрей пожалуйста выполните по частям, разбейте на 4 или не знаю… вам решать, сколько частей, но начните выполнять заказ, пожалуйста
avatar

  9  lafler356 Автор Сообщений: 305

  • 22 декабря 2018, 13:10
+
0
Андрей У меня получается все усложнять, но пожалуйста разберитесь в том что я сделал:

Редактирован: 21 декабря 2018, 12:56
avatar

  9  lafler356 Автор Сообщений: 305

  • 20 декабря 2018, 22:14
+
0
пока написал 2 функции.

1-я вычисляет квартал по текущему месяцу.
2-я определяет сдвиг относительно текущего месяца для последующих расчетов


//+------------------------------------------------------------------+
//|                                                         ATR2.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input int count=2;
input int kvart=4;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Kvart(int month)
  {
   int kv=0;
   if(month<4) kv=1; // 1 2 3
   if(month>3 && month<7) kv=2; // 4 5 6
   if(month>6 && month<10) kv=3; // 7 8 9
   if(month>9) kv=4; // 10 11 12
   return(kv);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Shift(int month) // 1-rv = 1 2 3
  {
   int shift=0;

   if(Kvart(Month())==1 && Month()==1) shift=1;
   if(Kvart(Month())==1 && Month()==2) shift=2;
   if(Kvart(Month())==1 && Month()==3) shift=3;

   if(Kvart(Month())==2 && Month()==4) shift=1;
   if(Kvart(Month())==2 && Month()==5) shift=2;
   if(Kvart(Month())==2 && Month()==6) shift=3;

   if(Kvart(Month())==3 && Month()==7) shift=1;
   if(Kvart(Month())==3 && Month()==8) shift=2;
   if(Kvart(Month())==3 && Month()==8) shift=3;

   if(Kvart(Month())==4 && Month()==10) shift=1;
   if(Kvart(Month())==4 && Month()==11) shift=2;
   if(Kvart(Month())==4 && Month()==12) shift=3;

   return(shift);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
/*
1. Определим текущий квартал Kvart(int month)
2. Определим сумму за текущий квартал
3.
*/
   string s="";
   for(int i=0;i<count;i++)
     {
      double lo=iLow(NULL,PERIOD_MN1,i);
      double hi=iHigh(NULL,PERIOD_MN1,i);
      s+="\n"+(string)i+" Kvart: "+(string)NormalizeDouble((hi-lo)/_Point,2);
     }
   Comment("\n Kvartal: ",Kvart(Month()),
           "\n Shift: ",Shift(Month())+s);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 23 декабря 2018, 19:46
+
0
по кварталам считает:




//+------------------------------------------------------------------+
//|                                                         ATR2.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input int count=5;
input int kvart=4;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Kvart(int month)
  {
   int kv=0;
   if(month<4) kv=1; // 1 2 3
   if(month>3 && month<7) kv=2; // 4 5 6
   if(month>6 && month<10) kv=3; // 7 8 9
   if(month>9) kv=4; // 10 11 12
   return(kv);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Sum(int num)
  {
   int sum=0;
   for(int i=1;i<=3;i++)
     {
      double lo=iLow(NULL,PERIOD_MN1,i*num+Shift(Month()));//1*1+3
      double hi=iHigh(NULL,PERIOD_MN1,i*num+Shift(Month()));
      sum+=((hi-lo)/_Point);
     }
   return(sum)/3;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int MonthPoint(int num)
  {
   int point=0;
   double lo=iLow(NULL,PERIOD_MN1,num);
   double hi=iHigh(NULL,PERIOD_MN1,num);
   point=(hi-lo)/_Point;
   return(point);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Shift(int month) // 1-rv = 1 2 3
  {
   int shift=0;

   if(Kvart(Month())==1 && Month()==1) shift=1;
   if(Kvart(Month())==1 && Month()==2) shift=2;
   if(Kvart(Month())==1 && Month()==3) shift=3;

   if(Kvart(Month())==2 && Month()==4) shift=1;
   if(Kvart(Month())==2 && Month()==5) shift=2;
   if(Kvart(Month())==2 && Month()==6) shift=3;

   if(Kvart(Month())==3 && Month()==7) shift=1;
   if(Kvart(Month())==3 && Month()==8) shift=2;
   if(Kvart(Month())==3 && Month()==8) shift=3;

   if(Kvart(Month())==4 && Month()==10) shift=1;
   if(Kvart(Month())==4 && Month()==11) shift=2;
   if(Kvart(Month())==4 && Month()==12) shift=3;

   return(shift);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
/*
1. Определим текущий квартал Kvart(int month)
2. Определим сумму за текущий квартал
3.
*/
   string s="";
   for(int i=1;i<=count;i++)
     {
      s+="\n"+(string)i+" Kvart: "+(string)Sum(i);
     }
   Comment("\n Kvartal: ",Kvart(Month()),
           "\n Shift: ",Shift(Month())+s);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 23 декабря 2018, 20:52
+
0
выдает ошибки

avatar

  23  igrun Сообщений: 1639 - igrun

  • 23 декабря 2018, 21:54
+
0
предупреждения дело поправимое. все еще в процессе
avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 23 декабря 2018, 22:00
+
0
Спасибо большое Андрей, Индюк не доделанные? Я попрошу коо нибудь чтобы стали поручителями, СпасибО!!!
avatar

  9  lafler356 Автор Сообщений: 305

  • 24 декабря 2018, 18:53
+
0
Андрей Спасибо большое что начали делать, хотел бы узнать
1) Объясните как считается:
1.1)
1.2)

ни тех ни этих данных нету, не понял, объясните
2) Могли бы вы после, сделать определение какой квартал в данный момент, я так понял в настройках нужно указать самому какой в данный момент квартал
3) что значит вывод 1kvatr и тд, пожалуйста поясните что в данный момент есть
Спасибо за проделанную работу
Редактирован: 24 декабря 2018, 21:59
avatar

  9  lafler356 Автор Сообщений: 305

  • 24 декабря 2018, 21:47
+
0
у меня начинает считать с законченного квартала. он у меня первый, далее второй
avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 24 декабря 2018, 21:59
+
0
Прошу отозваться людей, кто может стать поручителем, пожалуйста отпишитесь
avatar

  9  lafler356 Автор Сообщений: 305

  • 24 декабря 2018, 21:52
+
0
сейчас наглядность появилась:




//+------------------------------------------------------------------+
//|                                                         ATR2.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input int count=5;
input int kvart=4;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Kvart(int month)
  {
   int kv=0;
   if(month<4) kv=1; // 1 2 3
   if(month>3 && month<7) kv=2; // 4 5 6
   if(month>6 && month<10) kv=3; // 7 8 9
   if(month>9) kv=4; // 10 11 12
   return(kv);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Sum(int num)
  {
   int sum=0;
   for(int i=1;i<=3;i++)
     {
      double lo=iLow(NULL,PERIOD_MN1,i*num+Shift(Month()));//1*1+3
      double hi=iHigh(NULL,PERIOD_MN1,i*num+Shift(Month()));
      sum+=(int)((hi-lo)/_Point);
     }
   return(sum)/3;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int MonthPoint(int num)
  {
   int point=0;
   double lo=iLow(NULL,PERIOD_MN1,num);
   double hi=iHigh(NULL,PERIOD_MN1,num);
   point=(int)((hi-lo)/_Point);
   return(point);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Shift(int month) // 1-rv = 1 2 3
  {
   int shift=0;

   if(Kvart(Month())==1 && Month()==1) shift=1;
   if(Kvart(Month())==1 && Month()==2) shift=2;
   if(Kvart(Month())==1 && Month()==3) shift=3;

   if(Kvart(Month())==2 && Month()==4) shift=1;
   if(Kvart(Month())==2 && Month()==5) shift=2;
   if(Kvart(Month())==2 && Month()==6) shift=3;

   if(Kvart(Month())==3 && Month()==7) shift=1;
   if(Kvart(Month())==3 && Month()==8) shift=2;
   if(Kvart(Month())==3 && Month()==8) shift=3;

   if(Kvart(Month())==4 && Month()==10) shift=1;
   if(Kvart(Month())==4 && Month()==11) shift=2;
   if(Kvart(Month())==4 && Month()==12) shift=3;

   return(shift);
  }
//+------------------------------------------------------------------+
//| Put Text Function                                                |
//+------------------------------------------------------------------+
void Text(string name,const string text,double price,datetime time,const color clr)
  {
   ObjectDelete(0,name);
//--- create a "Text" object 
   ObjectCreate(0,name,OBJ_TEXT,0,time,price);
//--- set the text
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- set the font of the text
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- set the font size
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,11);
//--- set the method binding
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_UPPER);
//--- set the color
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+
//| Вертикальная линия                                               |
//+------------------------------------------------------------------+
void PutVLine(string name,datetime t,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_VLINE,0,t,Bid);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
/*
1. Определим текущий квартал Kvart(int month)
2. Определим сумму за текущий квартал
3.
*/

   string s="";
   double lo=Low[iLowest(NULL,0,MODE_LOW,11,0)];

   for(int i=1;i<=count;i++)
     {
      s+="\n"+(string)i+" Kvart: "+(string)Sum(i);
      datetime tm1=iTime(NULL,PERIOD_MN1,Shift(Month())-3+i*3);
      Text(string(i),(string)Sum(i),lo,tm1,Red);      
     }

   for(int i=0;i<count;i++)
     {      
      datetime tm2=iTime(NULL,PERIOD_MN1,Shift(Month())+i*3-1);
      PutVLine((string)i+"v",tm2,Red);
     }

   Comment("\n Kvartal: ",Kvart(Month()),
           "\n Shift: ",(string)Shift(Month())+s);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 24 декабря 2018, 21:53
+
0
Спасибо большое!!!
avatar

  9  lafler356 Автор Сообщений: 305

  • 24 декабря 2018, 22:02
+
0

у меня не сходятся ответ, у меня или у вас ошибка, пожалуйста посмотрите
посчитал хай-лоу для каждого месяца этого квартала
средний 466
Редактирован: 24 декабря 2018, 22:16
avatar

  9  lafler356 Автор Сообщений: 305

  • 24 декабря 2018, 22:15
+
0
считает только законченный квартал, текущий не считает.
вот мои примерные расчеты:

avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 24 декабря 2018, 22:18
+
0
Андрей почему чётко не считает? Это можно как то исправить?
Редактирован: 25 декабря 2018, 11:21
avatar

  9  lafler356 Автор Сообщений: 305

  • 25 декабря 2018, 11:13
+
0
Андрей почему чётко не считает

потому что на глаз измерял
avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 25 декабря 2018, 20:07
+
0
на многих парах пересчитал точно, ни где не сходится, моли бы вы как то это исправить:
avatar

  9  lafler356 Автор Сообщений: 305

  • 25 декабря 2018, 20:48
+
0
обратитесь к платному
avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 25 декабря 2018, 21:05
+
0
Могли бы на словах ответить почему точно не считает? Что не так? просто где-то не большое отклонение, а где то сильное
avatar

  9  lafler356 Автор Сообщений: 305

  • 25 декабря 2018, 21:58
+
0
Андрей Спасибо за труд, но ответьте почему где-то слабые отклонения а где то очень сильные, могли бы хотя бы объяснить почему так. Спасибо
avatar

  9  lafler356 Автор Сообщений: 305

  • 26 декабря 2018, 20:35
+
0
Андрей, еще раз посмотрел, уж очень и очень сильное отклонение бывает, пожалуйста если не можете исправить могли бы хотя бы на словах объяснить почему такие отклонения то? где то не сильное а где то очень сильное. Спасибо
avatar

  9  lafler356 Автор Сообщений: 305

  • 27 декабря 2018, 10:47
+
0
Андрей, в любом случае спасибо вам большое что вообще взялись, просто хотелось бы спросить что нужно сделать чтобы считало точно? Можно ли вообще как то исправить это?
avatar

  9  lafler356 Автор Сообщений: 305

  • 30 декабря 2018, 14:32
+
0
54321
avatar

  0  Adrei Сообщений: 1

  • 6 января 2019, 15:06

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий