avva

 
Уровень 11

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


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

Рейтинг 2146



РЕКОМЕНДУЮ



Советник на индикаторах ZigZig и Snake

Snake.mq4 (3 Kb). Пусть В — последний сформированный бар, В* — предыдущий бар, S и S* — значения индикатора Snake на барах В и В* соответствено, NZ и VZ — нижний и верхний зигзаги на стардантном индикаторе ZigZag, ближайшие слева к бару В.**************************************************************************************** Открыть BUY, если NZ* < NZ и S* < S. Закрыть BUY, если S* >S. Открыть SELL, если VZ* > VZ и S* > S. Закрыть SELL, если S* < S.
  • 0
  • Просмотров: 6387
  • 17 ноября 2015, 10:07
  • avva
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
Я вам к прошлому заказу добавлю зигзаг, только входы и выходы на скрине нарисуйте.
avatar

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

  • 17 ноября 2015, 18:10
+
0
OK!!! Делаю. Один ордер SELL должен открываться благодаря Snake(S*>S), а второй — из-за требований VZ* > VZ и S* > S.
avatar

  11  avva Автор Сообщений: 222

  • 17 ноября 2015, 19:14
+
0
Закрытие пришлось показывать на втором скрине.
avatar

  11  avva Автор Сообщений: 222

  • 17 ноября 2015, 19:22
+
0
Ставит один ордер с учетом вершинок зигзага а другой только по снейку:




//+------------------------------------------------------------------+
//|                                                        Snake.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property description "Snake simple expert advisor"

//--- Inputs
extern int    StopLoss     = 500;
extern int    TakeProfit   = 500;
extern int    Slip         = 30;
extern int    Magic        = 123;
extern double Lots         = 0.1;
//----
extern int SnakePeriod=16;
int t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   int r=0;
   double sl=0,tp=0;
//--- get Ind
   double Snake1=iCustom(Symbol(),0,"Snake",SnakePeriod,0,1);
   double Snake2=iCustom(Symbol(),0,"Snake",SnakePeriod,0,2);
   double ZZ0=GetExtremumZZPrice(NULL,0,0,12,5,3);
   double ZZ1=GetExtremumZZPrice(NULL,0,1,12,5,3);
   double ZZ2=GetExtremumZZPrice(NULL,0,2,12,5,3);
   double ZZ3=GetExtremumZZPrice(NULL,0,3,12,5,3);

//--- sell conditions
   if(Snake1<Snake2)
     {
      if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
      r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
     }
//--- buy conditions
   if(Snake1>Snake2)
     {
      if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
      r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
     }

//--- sell conditions
   if(Snake1<Snake2 && ZZ0<ZZ1 && ZZ1<ZZ3)
     {
      if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
      r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
     }
//--- buy conditions
   if(Snake1>Snake2 && ZZ0>ZZ1 && ZZ1>ZZ3)
     {
      if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
      r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
     }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void ClosePos()
  {
   bool c;
//--- get Ind
   double Snake1=iCustom(Symbol(),0,"Snake",SnakePeriod,0,1);
   double Snake2=iCustom(Symbol(),0,"Snake",SnakePeriod,0,2);
//---
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderMagicNumber()==Magic || OrderSymbol()==Symbol())
           {
            //--- check order type 
            if(OrderType()==OP_BUY)
              {
               if(Snake1<Snake2)
                 {
                  c=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White);
                 }
               break;
              }
            if(OrderType()==OP_SELL)
              {
               if(Snake1>Snake2)
                 {
                  c=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,White);
                 }
               break;
              }
           }
        }
     }
//---
  }
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string sy="",int tf=0,int ne=0,int dp=12,int dv=5,int bs=3)
  {
   if(sy=="" || sy=="0") sy=Symbol();
   double zz;
   int    i,k=iBars(sy,tf),ke=0;

   for(i=1; i<k; i++)
     {
      zz=iCustom(sy,tf,"ZigZag",dp,dv,bs,0,i);
      if(zz!=0)
        {
         ke++;
         if(ke>ne) return(zz);
        }
     }
   Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
   return(0);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ZZ0=GetExtremumZZPrice(NULL,0,0,12,5,3);
   double ZZ1=GetExtremumZZPrice(NULL,0,1,12,5,3);
   double ZZ2=GetExtremumZZPrice(NULL,0,2,12,5,3);
   double ZZ3=GetExtremumZZPrice(NULL,0,3,12,5,3);

   if(CountTrades()<1 && t!=Time[0])
     {
      OpenPos();
      t=Time[0];
     }
   else ClosePos();

   Comment("\n ZZ0: ",ZZ0,
           "\n ZZ1: ",ZZ1,
           "\n ZZ2: ",ZZ2,
           "\n ZZ3: ",ZZ3);
  }
//+------------------------------------------------------------------+

avatar

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

  • 17 ноября 2015, 21:53
+
0
Спасибо!!! Что и хотелось получить!!! Буду теперь наблюдать.
avatar

  11  avva Автор Сообщений: 222

  • 17 ноября 2015, 22:09
+
0
Хотелось бы иметь возможность менять параметры ZigZag!!!
avatar

  11  avva Автор Сообщений: 222

  • 17 ноября 2015, 22:25
+
0
avatar

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

  • 17 ноября 2015, 23:58
+
0
ZigZag!!!
Зачем кричать? Я хорошо слышу! :D 
avatar

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

  • 17 ноября 2015, 23:49
+
0
Андрей! Огромное спасибо!!! Буду на реале наблюдать. Похоже, что мы создаем что-то стоящее.Если будет так как я думаю, то обязательно Вам сообщу по электронке.Когда Вы все-таки отдыхаете??? Ладно, я пенсионер.Мне простительно спать 4 — 5 часов в сутки.
avatar

  11  avva Автор Сообщений: 222

  • 18 ноября 2015, 05:33
+
+1
Буду на реале наблюдать


Богатые нынче пенсионеры пошли :D  Убыточные системы на реалах гонять.

Вы видимо не вкурсе, что все индикаторы запаздывают *evil* 
avatar

  14  beton2011 Сообщений: 895

  • 18 ноября 2015, 10:53
+
+1
Я это прекрасно знаю, что подавляющее большинство индикаторов запаздывают. В филосовском плане — это участь всех ТС, основаных на техническом анализе. Поэтому я не пытаюсь создать грааль, а только ищу (строю) ТС четко работающую на самых основных и глубинных свойствах рынка. ТО, что мы сейчас сделали требует расширение еще хотя бы одним ZigZag-ом, охватывающем более крупное колебание рынка.Кроме того, отработка одного колена ZigZag-а конечно может происходить многими индикаторами, не только Snake, но, например,Trend Magic. Грубая проверка показывает, что большой просадки не будет.Проверил в ручную за период двух месяцев.Итог меня устраивает и обнадеживает.
Редактирован: 18 ноября 2015, 17:01
avatar

  11  avva Автор Сообщений: 222

  • 18 ноября 2015, 15:10
+
0
Добрый день Андрей! Две недели промучился и так не понял: как все-таки работает наш советник Snake(перевертыш). То открывает ордер (или ордера), то молчит. Привожу последний скрин Помогите! Все условия для открытия ордера (даже двух ордеров)выполняются.Индикатор Snake у меня выставлен на 5. ZigZag имеет стандартные параметры:12,5,3
Редактирован: 2 декабря 2015, 11:19
avatar

  11  avva Автор Сообщений: 222

  • 2 декабря 2015, 11:11
+
0
Когда торгую в ручную все получается.Как я понял, перевертыш должен работать не зависимо от ZigZag-а и только добавлять в соответствующих местах ордера по ZigZag-у.Этого мне и хотелось добиться. Пожалуйста помогите добиться четкой работы советника!
avatar

  11  avva Автор Сообщений: 222

  • 2 декабря 2015, 11:49
+
0
Вы пишите ТЗ так, что трудно что то понять, тем более когда смотришь повторно нужно опять все расшифровывать. Про второй ордер в начале вообще ничего не было сказано. Переписал по своему. Посмотрите таким образом ТЗ будет более менее читаемо.

Также посмотрите образец: am2.opentraders.ru/29048.html
К такому ТЗ у меня не возникает никаких вопросов.

Пусть В — последний сформированный бар, В* — предыдущий бар, S и S* — значения индикатора Snake на барах В и В* соответствено, NZ и VZ — нижний и верхний зигзаги на стардантном индикаторе ZigZag, ближайшие слева к бару В.**************************************************************************************** Открыть BUY, если NZ* < NZ и S* < S. Закрыть BUY, если S* >S. Открыть SELL, если VZ* > VZ и S* > S. Закрыть SELL, если S* < S.


Вход для 1-го ордера.

1. Покупка: растет индикатор снейк на 2-х последних барах.
2. Продажа: убывает индикатор снейк на 2-х последних барах.

Вход для 2-го ордера.

1. Покупка: нижние 2 излома зигзага растут
и растет индикатор снейк на 2-х последних барах.

2. Продажа: верхние 2 излома зигзага убывают
и убывает индикатор снейк на 2-х последних барах.

Закрытие для 1-го и 2-го ордера.

1. Покупка: убывает индикатор снейк на 2-х последних барах.
2. Продажа: растет индикатор снейк на 2-х последних барах.

Сейчас буду смотреть дальше.
avatar

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

  • 2 декабря 2015, 13:15
+
0
Именно это я и старался изобразить в ТЗ. Теперь ВЫ так красиво и компактно все изложили! Буду учиться. Чем далее я смогу Вам помочь.
avatar

  11  avva Автор Сообщений: 222

  • 2 декабря 2015, 13:47
+
0
Сейчас открывает 2 позы по разным сигналам и закрывает по обратному сигналу на снейке. Если индикатор снейк начнет мотать туда сюда, получите множественные переоткрытия. Надеюсь этого не будет на ренко или рендже.



www.opentraders.ru/downloads/932/
avatar

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

  • 2 декабря 2015, 13:39
+
0
Именно на графиках Ренко я в основном и работаю!!! Огромное спасибище!!! Начинаю устанавливать.
avatar

  11  avva Автор Сообщений: 222

  • 2 декабря 2015, 13:52
+
0
А почему на Вашем скрине в верхнем левом углу изображены важные данные, хотя когда я скачиваю файл www.opentraders.ru/downloads/932/ эти данные не изображаются.И опять на последнем скрине видно, что должен был открыться BUY, а его нет
Редактирован: 2 декабря 2015, 15:12
avatar

  11  avva Автор Сообщений: 222

  • 2 декабря 2015, 15:10
+
0
Началось! :D 
avatar

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

  • 2 декабря 2015, 15:54
+
0
Что-то делаю неправильно??
avatar

  11  avva Автор Сообщений: 222

  • 2 декабря 2015, 15:57
+
0
Вы не первый день устанавливаете советники. Если не работает проверяйте соответствие имен индикаторов в советнике и у вас. скидывайте скрины вкладок эксперты и журнал. почему этого не сделано? на основании чего я буду разбираться и искать ошибку?
avatar

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

  • 2 декабря 2015, 16:20
+
0
Но ведь я по собственному желанию название индикаторов никогда не меняю.Если же при написании советника возникает желание что-то изменить, то мне очень трудно выяснить что же изменено. Например, при составлении ТЗ у меня фигурирует единственный индикатор. Я его не менял.А как проверить соответствие имен в советнике я не знаю.Скрины я Вам каждый раз присылаю.Честно говоря, я даже не пойму что от меня требуется.Напишите, пожалуйста, по подробнее.
avatar

  11  avva Автор Сообщений: 222

  • 2 декабря 2015, 16:54
+
0
Я сейчас сброшу еще скрины с «эксперты» и «журнал»
avatar

  11  avva Автор Сообщений: 222

  • 2 декабря 2015, 17:57
комментарий был удален 2015-12-02 21:30:20 avva

комментарий был удален 2015-12-02 22:00:30 avva

комментарий был удален 2015-12-02 20:02:41 avva

комментарий был удален 2015-12-02 20:14:55 avva

комментарий был удален 2015-12-02 21:29:43 avva

комментарий был удален 2015-12-02 22:01:47 avva

+
0
При несоответствии имен индикаторов как раз возникает такая картинка как у вас на скрине. Я специально изменил в советнике. Поэтому нужны скрины которые я просил.

avatar

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

  • 3 декабря 2015, 07:55
+
0
Жду новой ситуации для открытия ордера. Сразу же вышлю скрины для разделов «Эксперты» и «Журнал».
avatar

  11  avva Автор Сообщений: 222

  • 3 декабря 2015, 09:06
+
0
avatar

  11  avva Автор Сообщений: 222

  • 3 декабря 2015, 13:54
+
0
Данных индикаторов нет по прежнему. Пишите в скайп время когда можно все обсудить.
avatar

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

  • 3 декабря 2015, 14:16
+
0
Хорошо! Я все-таки дождусь четкого сигнала, а тогда по-новому пришлю скрины и укажу по скайпу точное время появления ордера.
avatar

  11  avva Автор Сообщений: 222

  • 3 декабря 2015, 14:40
+
0
Дожидаться бесполезно. Сигналов от индикатора нет.
avatar

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

  • 3 декабря 2015, 14:53
+
0
Добрый день Андрей! Найдите, пожалуйста, время посмотреть работу эксперта Snake. Со своей стороны к работе я полностью подготовился.
avatar

  11  avva Автор Сообщений: 222

  • 7 декабря 2015, 17:08
+
0
Давайте договоримся завтра в 14.00.
avatar

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

  • 7 декабря 2015, 17:45
+
0
Добрый вечер Андрей! Стандартные эксперты работают нормально и на обычных графиках и на Ренко.Наш эксперт Superprofit работает нормально и на графике Ренко. Snake не хочет работать.
avatar

  11  avva Автор Сообщений: 222

  • 9 декабря 2015, 21:20
+
0
Я уже три раза время потерял.
avatar

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

  • 9 декабря 2015, 23:08
+
0
Добрый день Андрей! И все-таки все дело в самом индикаторе Snake. После длительных наблюдений у меня возникло обоснованное подозрение, что если сделать на индикаторе Snake 5-ти значную индикацию, то советник не будет с запозданием в три-четыре бара открывать ордера, а будет реагировать как положено.Дело в том, что если на двух соседних барах разница Snake-ов становится <= 10 по пяти знаку, то естественно, что ничего не происходит. А как это бы подправить? Либо мне придется работать со столбиками 100 и более пунктов на графиках Ренко, а это приводит к потере как минимум 300 пунктов по пяти знаку.
Редактирован: 10 декабря 2015, 13:02
avatar

  11  avva Автор Сообщений: 222

  • 10 декабря 2015, 12:55
+
0
Теперь буду смотреть только когда свободное время будет и повнимательнее не путайте больше советник с индикатором!
avatar

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

  • 10 декабря 2015, 16:24
+
0
OK! Буду ожидать.
avatar

  11  avva Автор Сообщений: 222

  • 10 декабря 2015, 16:32

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