Genri

 
Уровень 8

  Торгую в компаниях:


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

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от Genri



Визуализация на графике. Комментариев 19
2020-07-05 20:47:10Рейтинг 0

Индикатор уровней Комментариев 9
2016-01-10 10:54:19Рейтинг 0

скрипт "ластик" Комментариев 10
2017-02-22 14:35:09Рейтинг 0

Rsi Комментариев 13
2019-12-03 20:39:44Рейтинг 0

"Чертилка" Комментариев 12
2016-10-09 23:54:24Рейтинг 0

Полуавтомат

. Просьба создать сигнальщик полуавтомат. Сов должен отмечать на графике уровень образующийся при определенной совокупности событий за определенный отрезок времени. Сообщать об этом на емейл. Если уровень образуется выше ЕМА 50 сигнал селовый, если ниже баевый. Сообщать об образовании нового экстремума выше селового уровня и ниже баевого, в расчет берется самый последний уровень. Выставлять два отложенных ордера указанной направленности на указанное ценовое значение или несколько ценовых значений с одинаковым стопом(или без стопа) и разными тейками (возможность закрыть в ручную, модификация стопов и тейков). Иметь диал. Окно для указания значений и управления ордерами.
Правило уровня пика импульса (УПИ)
1) ADX пересёк вверх уровень 45
2) RSI образовал экстремум выше уровня 68 или ниже 32
3) АО окрасился в соответствующий цвет
4) Все события произошли в течении одной торговой недели (для Н4), в течении 24 свечей(Н1)
Уровень рисуется трендовой по телу сигнальной свечи, длина 200 свечей (для Н1 48 свечей), помечается ценовой меткой, при переходе на т.ф. ниже уровни и метки сохраняются. К-во уровней настраивается.
TZ WinRAR.rar (361 Kb)
  • 0
  • Просмотров: 2586
  • 6 июня 2017, 00:23
  • Genri
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Торговый Сов
05 июня 2017
06 июня 2017

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

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

+
0
На скринах все покажите?
avatar

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

  • 6 июня 2017, 17:48
+
0
В архиве штук 5 скринов. Вы WinRar не пользуетесь?
avatar

  8  Genri Автор Сообщений: 378

  • 6 июня 2017, 23:22
+
0
В архиве штук 5 скринов. Вы WinRar не пользуетесь?

мне надо чтобы все здесь перед глазами было
avatar

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

  • 10 июня 2018, 23:17
+
0
В архиве штук 5 скринов. Вы WinRar не пользуетесь? Желтые прямоугольники чисто для наглядности, в коде прописывать не надо.
avatar

  8  Genri Автор Сообщений: 378

  • 7 июня 2017, 00:34
+
0
получается много ложных. если судить по преведущиму бару либо -2 то еще как то
avatar

  3  prostokot Сообщений: 63 - Сергей

  • 7 июня 2017, 13:47
+
0
Судить можно по совокупности событий за определенный промежуток. задачу получчить уровень разворота никто не ставил. Меня больше интересует, что находится ниже — выше такого уровня. Возможно тем кто работает с опц. уровнями пригодится.
avatar

  8  Genri Автор Сообщений: 378

  • 7 июня 2017, 20:47
+
0
В архиве штук 5 скринов. Вы WinRar не пользуетесь?

Желательно чтобы все было в топике, чтобы было перед глазами. О том что необходимо скидывать все сюда я вам уже писал.
avatar

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

  • 7 июня 2017, 22:10
+
0
avatar

  8  Genri Автор Сообщений: 378

  • 8 июня 2017, 22:19
+
0
avatar

  8  Genri Автор Сообщений: 378

  • 8 июня 2017, 22:20
+
0
Сигнальный уровень и алерт при появлении, это я еще могу сделать. А полностью ТЗ к платному.
avatar

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

  • 8 июня 2017, 22:26
+
0
avatar

  8  Genri Автор Сообщений: 378

  • 8 июня 2017, 22:27
+
0
Что ж, соглашусь на урезанный вариант.
avatar

  8  Genri Автор Сообщений: 378

  • 8 июня 2017, 22:30
+
0
Вот такой получился вариант:




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

input int MAPeriod=50;
input int ADXPeriod=14;
input int RSIPeriod=14;
input int RSILevel=30;
input int ADXLevel=45;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2,color clr)
  {
   //ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии 
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
//--- установим толщину линии 
   ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо 
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   for(int i=0;i<Bars;i++)
     {
      if(iADX(NULL,0,ADXPeriod,0,0,i)>ADXLevel && iRSI(NULL,0,RSIPeriod,0,i)>100-RSILevel && iRSI(NULL,0,RSIPeriod,0,i+1)<100-RSILevel && iAO(NULL,0,i)>0) PutTrendLine((string)Time[i],Time[i],Close[i],Time[i+100],Close[i],Red);
      if(iADX(NULL,0,ADXPeriod,0,0,i)>ADXLevel && iRSI(NULL,0,RSIPeriod,0,i)<RSILevel && iRSI(NULL,0,RSIPeriod,0,i+1)>RSILevel && iAO(NULL,0,i)<0) PutTrendLine((string)i,Time[i],Close[i],Time[i+100],Close[i],Red);
     }
  }
//+------------------------------------------------------------------+

avatar

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

  • 9 июня 2017, 19:29
+
0
Добавил алерт, ТФ, число уровней, ценовые метки, однократный сигнал:




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

input int MAPeriod=50;
input int ADXPeriod=14;
input int RSIPeriod=14;
input int RSILevel=30;
input int ADXLevel=45;
input int Count=5;
input int Length=100;
input ENUM_TIMEFRAMES tf=PERIOD_H4;

int k=0;
datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void RightPrice(string name,datetime time,double price)
  {
   ObjectCreate(0,name,OBJ_ARROW_RIGHT_PRICE,0,time,price);
//--- установим цвет метки
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим стиль окаймляющей линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
//--- установим размер метки
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2,color clr)
  {
//ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии 
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
//--- установим толщину линии 
   ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо 
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(t!=Time[0])
     {
      for(int i=0;i<Bars;i++)
        {
         if(iADX(NULL,tf,ADXPeriod,0,0,i)>ADXLevel && iRSI(NULL,tf,RSIPeriod,0,i)>100-RSILevel && iRSI(NULL,tf,RSIPeriod,0,i+1)<100-RSILevel && iAO(NULL,tf,i)>0)
           {
            PutTrendLine("Line "+(string)Time[i],Time[i],Close[i],Time[i+Length],Close[i],Red);
            Alert(_Symbol+": "+"Нарисовался верхний уровень!");
            RightPrice("Arrow "+(string)Time[i],Time[i],Close[i]);
            k++;
           }
         if(iADX(NULL,tf,ADXPeriod,0,0,i)>ADXLevel && iRSI(NULL,tf,RSIPeriod,0,i)<RSILevel && iRSI(NULL,tf,RSIPeriod,0,i+1)>RSILevel && iAO(NULL,tf,i)<0)
           {
            PutTrendLine("Line "+(string)Time[i],Time[i],Close[i],Time[i+Length],Close[i],Red);
            Alert(_Symbol+": "+"Нарисовался нижний уровень!");
            RightPrice("Arrow "+(string)Time[i],Time[i],Close[i]);
            k++;
           }
         if(k>=Count) break;
         t=Time[0];
        }
     }
  }
//+------------------------------------------------------------------+

avatar

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

  • 9 июня 2017, 22:34
+
0
Никак не компилится. Как это тестить?
avatar

  8  Genri Автор Сообщений: 378

  • 25 июня 2017, 00:32
+
0
Вообще речь шла про Н4, Н1. Если это не ручная разметка, то чертит в обратную сторону и ценовые метки нужны левые а не правые. rsi не из архива. Как на самом деле работает увижу ток на след. неделе.
avatar

  8  Genri Автор Сообщений: 378

  • 9 июня 2017, 23:32
+
0
Вообще речь шла про Н4, Н1

ТФ можно ставить любой.

Если это не ручная разметка, то чертит в обратную сторону и ценовые метки нужны левые а не правые


Сделал в обратную сторону, т.к. идет выход за размер массива.

rsi не из архива

РСИ стандартный
avatar

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

  • 10 июня 2017, 00:11
+
0
Еще сделал набросок индикатора с левыми метками, но здесь тоже нужна отладка:




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

input int MAPeriod=50;
input int ADXPeriod=14;
input int RSIPeriod=14;
input int RSILevel=30;
input int ADXLevel=45;
input int Count=5;
input int Length=100;
input ENUM_TIMEFRAMES tf=PERIOD_H4;

int k=0;
datetime t=0;
int length=Length;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void RightPrice(string name,datetime time,double price)
  {
   ObjectCreate(0,name,OBJ_ARROW_LEFT_PRICE,0,time,price);
//--- установим цвет метки
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим стиль окаймляющей линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
//--- установим размер метки
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,datetime time1,double price1,datetime time2,double price2,color clr)
  {
//ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,time1,price1,time2,price2);
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль отображения линии 
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
//--- установим толщину линии 
   ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо 
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   if(t!=Time[0])
     {
      for(int i=0;i<Bars;i++)
        {
         if(iADX(NULL,tf,ADXPeriod,0,0,i)>ADXLevel && iRSI(NULL,tf,RSIPeriod,0,i)>100-RSILevel && iRSI(NULL,tf,RSIPeriod,0,i+1)<100-RSILevel && iAO(NULL,tf,i)>0)
           {
            int step=i-length;
            if(i<Length) {length=i;}
            PutTrendLine("Line "+(string)Time[i],Time[i],Close[i],Time[i-length],Close[i],Red);
            Alert(_Symbol+": "+"Нарисовался верхний уровень!");
            RightPrice("Arrow "+(string)Time[i],Time[i],Close[i]);
            k++;
           }
         if(iADX(NULL,tf,ADXPeriod,0,0,i)>ADXLevel && iRSI(NULL,tf,RSIPeriod,0,i)<RSILevel && iRSI(NULL,tf,RSIPeriod,0,i+1)>RSILevel && iAO(NULL,tf,i)<0)
           {
            PutTrendLine("Line "+(string)Time[i],Time[i],Close[i],Time[i-length],Close[i],Red);
            Alert(_Symbol+": "+"Нарисовался нижний уровень!");
            RightPrice("Arrow "+(string)Time[i],Time[i],Close[i]);
            k++;
           }
         if(k>=Count) break;
         t=Time[0];
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

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

  • 10 июня 2017, 11:10
+
0
Предложенный rsi с зигзагом, по нему четче контрольную свечу определить можно. Насчет уровня — я предполагал, что прочертить в правую половину на «н» свечей возможно, оказывается есть ограничение. Вероятно можно работать и с этим вариантом, но нужно посмотреть не в тестере.
avatar

  8  Genri Автор Сообщений: 378

  • 11 июня 2017, 01:42

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