DIMICH
Дмитрий

 
Уровень 12

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


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

Рейтинг 2087



РЕКОМЕНДУЮ



Есть идея - нужен советник

Всем привет! Появилась идея! Вполне возможно она уже кем-то реализована, а я не знал. Суть — создать советник, который будет работать на разворотных свечах и одной МАшке. Проблема в том, что у меня «индюка» — идентификатора свечей нет. А тот, что я откопал в сети мне жутко не понравился ( не помню название). А может он и не нужен? Или у кого-нибудь имеется подходящий? Если кто-то способен мне помочь — напишу свои задумки. Спасибо!
  • +2
  • Просмотров: 3904
  • 14 октября 2016, 20:12
  • DIMICH
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Нужно четко сформулированное ТЗ.
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 14 октября 2016, 21:08
+
0
Если создать советника без индикатора невозможно, какой смысл выкладывать идею полностью? если я получу утвердительный ответ, сразу же выложу тех.задание.
avatar

  12  DIMICH Автор Сообщений: 41 - Дмитрий

  • 14 октября 2016, 21:10
+
0
паттерн можно закодить и без индюка, но нужно смотреть какой именно.
вот например пробойник по паттерну двухшапочного фрактала:



   if(sigma>Sigma*Point)
      if(CountTrades()<1 && t!=Time[0])
         if(High[3]>High[2] && High[3]>High[1] && High[3]>High[4] && High[3]>High[5])
            if(Low[3]<Low[2] && Low[3]<Low[1] && Low[3]<Low[4] && Low[3]<Low[5])
              {
               if(CountOrders(4)<1) PutOrder(4,High[3]+Delta*Point);
               if(CountOrders(5)<1) PutOrder(5,Low[3]-Delta*Point);
               t=Time[0];
              }
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 14 октября 2016, 21:24
+
+1
Я в кодах не понимаю. <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp;  Суть такая. Используются только разворотные свечи: «Молот», Перевернутый молот", «Утренняя звезда», «Падающая звезда», «Вечерняя звезда», «Повешенный», «Бычье и медвежье харами». В качестве доп. помощника — МАшка. При появлении одной из указанных свечей ждем закрытие следующей свечи выше/ниже МАшки.(это подтверждающий сигнал). Если ни одна из 5 последующих после разворотной свечей не закрылась выше/ниже МАшки актуальность разворотной свечи пропадает.

Советник для 5-ти знака
Основное… Используемые свечи указаны выше
Параметры МА( стандартные)
Метод МА ( стандартные)
Период МА — настраиваемый
Лот — настраиваемый ( по умолчанию — 0,01)
Тейк Поофит настраиваемый( по умолчанию 600.)
Стоп Лосс с возможностью переключения
1) настраиваемый (по умолчанию 300);
2) на определенное количество пунктов ниже/выше хая/лоу разворотной свечи:
Обязателен трал и шаг трала ( оба параметра настраиваемые)
Обязателен МЕДЖИК

Не знаю, понятно ли написал. Первый раз, как никак.
Редактирован: 15 октября 2016, 13:59
avatar

  12  DIMICH Автор Сообщений: 41 - Дмитрий

  • 14 октября 2016, 21:40
+
0
Да… Одно уточнение… Хорошо бы в советнике реализовать возможность выбора, по каким разворотным свечам ему работать.
avatar

  12  DIMICH Автор Сообщений: 41 - Дмитрий

  • 14 октября 2016, 22:05
+
0
Если есть под рукой изображение паттернов?
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 14 октября 2016, 23:09
+
+1
avatar

  8  poruchik Сообщений: 139

  • 15 октября 2016, 04:26
+
0
Круто! СПС… А что так много разворотных свечей? Они же не особо часто встречаются? А… Понял… Тут все собрано. Не нашел МАшку в первой сове. Ее сюда можно внедрить? И еще… Не понятна одна деталь. Значение тейка и стопа. В настройках указано 70 и 40, а для «пятизнака» ведь должно быть 700 и 400. Если выставлять эти значения, то при открытии ордера значения выставляются на расстоянии 7 и 4 фигуры соответственно. Запутаться можно… :) 

Пы.Сы… МАшка все же необходима. Какой-никакой фильтр. Немного погонял сову номер 1. Со стопами в «плюс» работать вряд ли будет. А без стопа опасно, но со 100% прибыльными сделками ( если в аут счет не уйдет :D  )
Редактирован: 15 октября 2016, 06:38
avatar

  12  DIMICH Автор Сообщений: 41 - Дмитрий

  • 15 октября 2016, 05:43
+
0
к каждому свечному паттерну нужен фильтр, ведь индюку всеравно, лиж бы условия выполнились.
например есть индикатор поглощения, сигналы нормальные, но бывают и где ручками бы и не зашел, а советник зайдет
avatar

  10  cardon Сообщений: 376

  • 15 октября 2016, 13:36
+
0
Мне не нужны «Поглощение». Используем эти: «Молот», Перевернутый молот", «Утренняя звезда», «Падающая звезда», «Вечерняя звезда», «Повешенный», «Бычье и медвежье харами». Харами даже не обязательно. Принцип один. Появилась разворотная свеча — ждем закрепления цены выше/ниже МАшки. Если закрепилась в течении к примеру 5 свечей — открываем ордер, если нет — игнор.
avatar

  12  DIMICH Автор Сообщений: 41 - Дмитрий

  • 15 октября 2016, 13:43
+
0
Мне не нужны «Поглощение». Используем эти: «Молот», Перевернутый молот", «Утренняя звезда», «Падающая звезда», «Вечерняя звезда», «Повешенный», «Бычье и медвежье харами». Харами даже не обязательно. Принцип один. Появилась разворотная свеча — ждем закрепления цены выше/ниже МАшки. Если закрепилась в течении к примеру 5 свечей — открываем ордер, если нет — игнор.

Картинки пожалуйста, как все это выглядит?
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 16 октября 2016, 17:34
+
+1
Нашел в сети паттерны:



Сделал по ним набросок, продажа на звезде покупка при молоте.




//+------------------------------------------------------------------+
//|                                                      Pattern.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, AM2"
#property link      "http://www.forexsystems.biz"

extern int StopLoss     = 300;      // лось
extern int TakeProfit   = 600;      // язь
extern int Slip         = 50;       // реквот
extern int MAPeriod     = 9;        // период МА
extern int MAMethod     = 0;        // метод МА
extern int Magic        = 123;      // магик
extern double Lots      = 0.1;      // торговый объем

//+------------------------------------------------------------------+
//| Установка ордера                                                 |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)   sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)   sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Star()
  {
   if(Close[4]>Open[4] && Open[4]-Low[4]<Close[4]-Open[4] && (High[4]-Close[4])/(Close[4]-Open[4])>2 && High[4]>High[3] && High[4]>High[2] && High[4]>High[1] && High[4]>High[5] && High[4]>High[6] && High[4]>High[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Hammer()
  {
   if(Close[4]<Open[4] && High[4]-Open[4]<Open[4]-Close[4] && (Close[4]-Low[4])/(Open[4]-Close[4])>2 && Low[4]<Low[3] && Low[4]<Low[2] && Low[4]<Low[1] && Low[4]<Low[5] && Low[4]<Low[6] && Low[4]<Low[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,0,1);

   if(CountTrades()<1)
     {
      //---- buy 
      if(Hammer())
        {
         PutOrder(0,Ask);
        }
      //---- sell   
      if(Star())
        {
         PutOrder(1,Bid);
        }
     }
  }
//+------------------------------------------------------------------+


Редактирован: 16 октября 2016, 19:59
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 16 октября 2016, 19:57
+
0


Вот так. На каждой разворотной свечке… Появился «Повешенный» или кто другой, потом свеча закрылась ниже или выше МАшки, на следующей открывается ордер.
Редактирован: 16 октября 2016, 20:27
avatar

  12  DIMICH Автор Сообщений: 41 - Дмитрий

  • 16 октября 2016, 20:21
+
0
Я уже в который раз прошу предоставить мне картинку как выглядят необходимые паттерны и не получаю ответа. Что мне прикажете программировать? Далее вытягивать из вас ТЗ я не собираюсь.
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 17 октября 2016, 10:14
+
+1
Вот каких картинок я от вас так тщетно добивался:




Попытался закодить эти 4 паттерна:




//+------------------------------------------------------------------+
//|                                                      Pattern.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, AM2"
#property link      "http://www.forexsystems.biz"

extern int StopLoss     = 300;      // лось
extern int TakeProfit   = 600;      // язь
extern int Slip         = 50;       // реквот
extern int MAPeriod     = 9;        // период МА
extern int MAMethod     = 0;        // метод МА
extern int Magic        = 123;      // магик
extern double Lots      = 0.1;      // торговый объем

datetime t=0;
//+------------------------------------------------------------------+
//| Установка ордера                                                 |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)   sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)   sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Star()
  {
   if(Close[4]>Open[4] && Open[4]-Low[4]<Close[4]-Open[4] && (High[4]-Close[4])/(Close[4]-Open[4])>2 && High[4]>High[3] && High[4]>High[2] && High[4]>High[1] && High[4]>High[5] && High[4]>High[6] && High[4]>High[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Hanged()
  {
   if(Close[4]>Open[4] && Open[4]-Close[4]<Open[4]-Low[4] && (Open[4]-Low[4])/(Close[4]-Open[4])>2 && High[4]>High[3] && High[4]>High[2] && High[4]>High[1] && High[4]>High[5] && High[4]>High[6] && High[4]>High[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Hammer()
  {
   if(Close[4]<Open[4] && High[4]-Open[4]<Open[4]-Close[4] && (Close[4]-Low[4])/(Open[4]-Close[4])>2 && Low[4]<Low[3] && Low[4]<Low[2] && Low[4]<Low[1] && Low[4]<Low[5] && Low[4]<Low[6] && Low[4]<Low[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
bool InvertHammer()
  {
   if(Close[4]<Open[4] && High[4]-Open[4]>Open[4]-Close[4] && (High[4]-Open[4])/(Open[4]-Close[4])>2 && Low[4]<Low[3] && Low[4]<Low[2] && Low[4]<Low[1] && Low[4]<Low[5] && Low[4]<Low[6] && Low[4]<Low[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,0,0);

   if(CountTrades()<1 && t!=Time[0])
     {
      //---- buy 
      if((Hammer() || InvertHammer()) && Bid>ma)
        {
         PutOrder(0,Ask);
        }
      //---- sell   
      if((Hammer() || Hanged()) && Bid<ma)
        {
         PutOrder(1,Bid);
        }
      t=Time[0];
     }
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 17 октября 2016, 11:19
+
0
Спасибо! Извиняюсь, я просто не понял, да и рисовать не умею… :)  Все так и есть, как вы нарисовали! Утренняя и вечерняя звезда по тому же принципу — то есть после тренда. Для оценки треда можно брать скажем 5 или 3 свечи предшествующих разворотной. Желательно реализовать возможность «Включение/выключения оценки тренда»
avatar

  12  DIMICH Автор Сообщений: 41 - Дмитрий

  • 17 октября 2016, 11:53
+
0
Рисовать не надо, все есть в сети, только везде разные варианты, поэтому и требовалось уточнение. 2 звезды еще вечером посмотрю.
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 17 октября 2016, 13:41
+
+1
Вот эти паттерны, сейчас закодим:

avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 17 октября 2016, 16:17
+
+1
Сейчас 6 паттернов и отключаемый фильтр по МА: www.opentraders.ru/downloads/1361/



//+------------------------------------------------------------------+
//|                                                      Pattern.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, AM2"
#property link      "http://www.forexsystems.biz"

extern int StopLoss     = 300;      // лось
extern int TakeProfit   = 600;      // язь
extern int Slip         = 50;       // реквот
extern int MAPeriod     = 9;        // период МА
extern int MAMethod     = 0;        // метод МА
extern bool Trend       = true;     // фильтр МА
extern int Magic        = 123;      // магик
extern double Lots      = 0.1;      // торговый объем

datetime t=0;
//+------------------------------------------------------------------+
//| Установка ордера                                                 |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0)   sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0)   sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Star()
  {
   if(Close[4]>Open[4] && Open[4]-Low[4]<Close[4]-Open[4] && (High[4]-Close[4])/(Close[4]-Open[4])>2 && High[4]>High[3] && High[4]>High[2] && High[4]>High[1] && High[4]>High[5] && High[4]>High[6] && High[4]>High[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Hanged()
  {
   if(Close[4]>Open[4] && Open[4]-Close[4]<Open[4]-Low[4] && (Open[4]-Low[4])/(Close[4]-Open[4])>2 && High[4]>High[3] && High[4]>High[2] && High[4]>High[1] && High[4]>High[5] && High[4]>High[6] && High[4]>High[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Hammer()
  {
   if(Close[4]<Open[4] && High[4]-Open[4]<Open[4]-Close[4] && (Close[4]-Low[4])/(Open[4]-Close[4])>2 && Low[4]<Low[3] && Low[4]<Low[2] && Low[4]<Low[1] && Low[4]<Low[5] && Low[4]<Low[6] && Low[4]<Low[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
bool InvertHammer()
  {
   if(Close[4]<Open[4] && High[4]-Open[4]>Open[4]-Close[4] && (High[4]-Open[4])/(Open[4]-Close[4])>2 && Low[4]<Low[3] && Low[4]<Low[2] && Low[4]<Low[1] && Low[4]<Low[5] && Low[4]<Low[6] && Low[4]<Low[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool MorningStar()
  {
   if(Close[4]>Open[4] && Close[3]>Open[3] && Close[5]<Open[4] && (Open[5]-Close[5])/(Close[4]-Open[4])>3 && (Close[3]-Open[3])/(Close[4]-Open[4])>3 && Low[4]<Low[3] && Low[4]<Low[2] && Low[4]<Low[1] && Low[4]<Low[5] && Low[4]<Low[6] && Low[4]<Low[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool EverningStar()
  {
   if(Close[4]<Open[4] && Close[3]<Open[3] && Close[5]>Open[4] && (Close[5]-Open[5])/(Open[4]-Close[4])>3 && (Open[3]-Close[3])/(Close[4]-Open[4])>3 && High[4]>High[3] && High[4]>High[2] && High[4]>High[1] && High[4]>High[5] && High[4]>High[6] && High[4]>High[7]) return(true);
   else return(false);
  }
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,0,0);

   bool buy  = (Hammer() || InvertHammer() || MorningStar()) && Bid>ma;
   bool sell = (Star() || Hanged() || EverningStar()) && Bid<ma;

   if(!Trend)
     {
      buy  = (Hammer() || InvertHammer() || MorningStar());
      sell = (Star() || Hanged() || EverningStar());
     }
     
   if(CountTrades()<1 && t!=Time[0])
     {
      //---- buy 
      if(buy)
        {
         PutOrder(0,Ask);
        }
      //---- sell   
      if(sell)
        {
         PutOrder(1,Bid);
        }
      t=Time[0];
     }
  }
//+------------------------------------------------------------------+


Редактирован: 17 октября 2016, 17:31
avatar

  34  AM2 Сообщений: 15880 - Андрей

  • 17 октября 2016, 17:20
+
0
Спасибо! Скачал! Буду гонять.:) 
avatar

  12  DIMICH Автор Сообщений: 41 - Дмитрий

  • 17 октября 2016, 18:50
+
0
как успехи… интересная идея…
avatar

  8  WolfTraderS Сообщений: 142

  • 19 октября 2016, 16:02
+
0
Идея-то интересная, только времени нет сову обкатать. Только в общих чертах ознакомился. Как открываются ордера особо не присматривался, но одно могу сказать. С большим тейком работать в плюс скорее всего не будет. Лучше ограничиваться 200пп. С таким же стопом. Гонял евро/бакс. Только стейт тестера к сожалению не сохранил… :) 
avatar

  12  DIMICH Автор Сообщений: 41 - Дмитрий

  • 19 октября 2016, 20:09
+
0
Забыл, а может неточно сформулировал мысль для автора советника. Надо было сделать, чтобы после открытия ордера при формировании какой-то свечной фигуры, советник мог реагировать на все последующие фигуры в том же направлении и открывал добавочные ордера. А закрытие ордеров чтобы происходило по их общему настраиваемому тейку. Только возможно ли это сделать?
Редактирован: 19 октября 2016, 20:24
avatar

  12  DIMICH Автор Сообщений: 41 - Дмитрий

  • 19 октября 2016, 20:15

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