tibi

 
Уровень 22

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


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

Рейтинг 1321



РЕКОМЕНДУЮ



сова

а что если попробовать автоматизировать вот такую часть рынка


ну или в обратную сторону те же параметры
если плохо нарисовал, непонятно то уточню нюансы
P.S вход при пробое в 5 точке, стоп 20 п от открытия ордера, тейк на ширину канала но отмерять от нижней границы канала
  • +3
  • Просмотров: 2643
  • 28 ноября 2014, 10:53
  • tibi
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
советник по ТС от журнала ForTrader.ru
Следующая запись в группе  
Доработать советник
27 ноября 2014
30 ноября 2014

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

+
0
А если просто раскидать сетку?*think* 
avatar

  16  vomisin Сообщений: 105

  • 28 ноября 2014, 11:08
+
0
НЕТ НЕ ТО, мне надо только так,
avatar

  22  tibi Автор Сообщений: 882

  • 28 ноября 2014, 11:11
+
0
начал делать
avatar

  27  AM2 Сообщений: 8133 - Андрей

  • 29 ноября 2014, 09:12
+
0
супер ,*friends* 
avatar

  22  tibi Автор Сообщений: 882

  • 29 ноября 2014, 09:19
+
0
При запуске советник считает канал, на указанное количество баров назад и выставляет лимитные ордера по обеим сторонам канала на указанном расстоянии. При срабатывании одного ордера, другой удаляется.



Предварительная версия в базе: www.opentraders.ru/downloads/519/
avatar

  27  AM2 Сообщений: 8133 - Андрей

  • 29 ноября 2014, 12:27
+
0
отлично, попрогоняем и уточним если надо будет
avatar

  22  tibi Автор Сообщений: 882

  • 29 ноября 2014, 12:33
+
0
А МОЖНО ПОДПРАВИТЬ, ЧТОБ СОВА ЛИМИТНИКИ ВЫСТАВЛЯЛА 200 п выше или ниже линии канала, стоп соответственно еще выше на 200
avatar

  22  tibi Автор Сообщений: 882

  • 29 ноября 2014, 13:04
+
0
Все параметры сейчас регулируемые, можно указать любое значение.


//--- Inputs
extern int StopLoss     = 200; // стоп лосс ордера
extern int TakeProfit   = 500; // тейк профит ордера
extern int CountBars    = 8;   // сколько считаем баров назад
extern int Delta        = 200; // расстояние от вершин канала до ордера
extern double Lots      = 0.1; // объем позиции
avatar

  27  AM2 Сообщений: 8133 - Андрей

  • 29 ноября 2014, 14:09
+
0
да да я уже понял, эксперементирую, спасибо
avatar

  22  tibi Автор Сообщений: 882

  • 29 ноября 2014, 14:24
+
0
а 8 баров это как?
avatar

  22  tibi Автор Сообщений: 882

  • 29 ноября 2014, 14:41
+
0
скажем на Н1 считаем назад начиная с последнего 8 штук :) 
avatar

  27  AM2 Сообщений: 8133 - Андрей

  • 29 ноября 2014, 17:11
+
0

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

  22  tibi Автор Сообщений: 882

  • 29 ноября 2014, 21:20
+
0
хорошавин :)  сделаю и такой вариант
avatar

  27  AM2 Сообщений: 8133 - Андрей

  • 29 ноября 2014, 23:27
+
0
Сейчас советник торгует так как указано на картинке




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

#define MAGIC  20141115

extern int    StopLoss     = 200;
extern int    TakeProfit   = 800;
extern int    Diapazon     = 200;
extern int    Delta        = 800;
extern int    ExtDepth     = 10;
extern int    ExtDeviation = 5;
extern int    ExtBackstep  = 3;
extern double Lots         = 0.1;

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double zz0,zz1,zz2,zz3,zz4,zz5;
   int    res,b,s;
   
//---- get Extremum ZigZag Price
 
   zz0=GetExtremumZZPrice(NULL,0,0,ExtDepth,ExtDeviation,ExtBackstep);
   zz1=GetExtremumZZPrice(NULL,0,1,ExtDepth,ExtDeviation,ExtBackstep);
   zz2=GetExtremumZZPrice(NULL,0,2,ExtDepth,ExtDeviation,ExtBackstep);
   zz3=GetExtremumZZPrice(NULL,0,3,ExtDepth,ExtDeviation,ExtBackstep);
   zz4=GetExtremumZZPrice(NULL,0,4,ExtDepth,ExtDeviation,ExtBackstep);
   zz5=GetExtremumZZPrice(NULL,0,5,ExtDepth,ExtDeviation,ExtBackstep);

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
       {
        if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue;
         {
          if(OrderType()==OP_BUY) b++;
          if(OrderType()==OP_SELL) s++;
         }
       }  
     }             
           
   Comment("\n","ZZ0 = ",zz0,"\n",
          "ZZ1 = ",zz1,"\n",
          "ZZ2 = ",zz2,"\n",
          "ZZ3 = ",zz3,"\n",
          "ZZ4 = ",zz4,"\n");
   
//---- buy conditions
   if((zz4-zz2)<=Diapazon*Point && (zz2-zz0)>=Delta*Point && (Ask-zz0)>=Delta*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,fND(Ask-StopLoss*Point),fND(Ask+TakeProfit*Point),"",MAGIC,0,Blue);
      if(res<0)
       {
        Print("Order Buy  error: ",GetLastError());
       }
      else
        Print("OK Order Buy");  
      return;
     }   
//---- sell conditions
   if((zz4-zz2)<=Diapazon*Point && (zz0-zz2)>=Delta*Point && (zz0-Bid)>=Delta*Point)  
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,fND(Bid+StopLoss*Point),fND(Bid-TakeProfit*Point),"",MAGIC,0,Red);
      if(res<0)
       {
        Print("Order Sell  error: ",GetLastError());
       }
      else
        Print("OK Order Sell");  
      return;
     }
//----
  }
//+------------------------------------------------------------------+
double fND(double d, int n=-1) 
  {  
   if (n<0) return(NormalizeDouble(d, Digits)); 
   return(NormalizeDouble(d, n)); 
  }  
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
    {
     lastbar=curbar;
     return (true);
    }
   else
    {
     return(false);
    }
  }  
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;
//--- go trading only for first tiks of new bar
   if(NewBar()==true)
    {
     if(OrdersTotal()<1) CheckForOpen();
    }                               
//----
  }  
//+------------------------------------------------------------------+
avatar

  27  AM2 Сообщений: 8133 - Андрей

  • 30 ноября 2014, 13:48
+
0
прекрассно, а мне самому вносить поправки в старую версию или как, я наверно не смогу
avatar

  22  tibi Автор Сообщений: 882

  • 30 ноября 2014, 13:59
+
0
где файлик с новой совой ?*strah* стырил кто то?
avatar

  22  tibi Автор Сообщений: 882

  • 30 ноября 2014, 14:01
+
0
код можно скопировать отсюда из сообщения. если нужно, обновлю в базе
avatar

  27  AM2 Сообщений: 8133 - Андрей

  • 30 ноября 2014, 17:26
+
0
думаю лучше обновить в базе, а то я так накопирую что боюсь он прям с сайта торговать начнет :D 
avatar

  22  tibi Автор Сообщений: 882

  • 30 ноября 2014, 17:29
+
0
а функцию перевода в безубыток можно прикрутить, чтоб например переводил ордер в бу при прохождении цены в +например 30п по 4-х знаку, и чтоб можно изменять это значение
avatar

  22  tibi Автор Сообщений: 882

  • 30 ноября 2014, 19:28
+
0
обновил советник в базе. бу сделаю. посмотрите как работает сначала. возможно входы еще доработать нужно будет, а потом уже все остальное.
avatar

  27  AM2 Сообщений: 8133 - Андрей

  • 30 ноября 2014, 20:01
+
0
я ее таки протестил, пока только бу надо пока ,, спасибо наперед
avatar

  22  tibi Автор Сообщений: 882

  • 30 ноября 2014, 20:18
+
0
а эта сова не пересчитывает на 4-х знак? что то она не дает никаких результатов по 4-х знакам,
avatar

  22  tibi Автор Сообщений: 882

  • 1 декабря 2014, 08:59
+
0
в настройках нолик нужно убирать
avatar

  27  AM2 Сообщений: 8133 - Андрей

  • 1 декабря 2014, 17:00
+
0
ага, это понятно, а как сделать чтоб в бу переводила?
avatar

  22  tibi Автор Сообщений: 882

  • 1 декабря 2014, 19:14
+
0
можно так:


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

#define MAGIC  20141115

extern int    StopLoss     = 200;
extern int    TakeProfit   = 800;
extern int    BULevel      = 300;    
extern int    Diapazon     = 200;
extern int    Delta        = 800;
extern int    ExtDepth     = 10;
extern int    ExtDeviation = 5;
extern int    ExtBackstep  = 3;
extern double Lots         = 0.1;

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double zz0,zz1,zz2,zz3,zz4,zz5;
   int    res,b,s;
   
//---- get Extremum ZigZag Price
 
   zz0=GetExtremumZZPrice(NULL,0,0,ExtDepth,ExtDeviation,ExtBackstep);
   zz1=GetExtremumZZPrice(NULL,0,1,ExtDepth,ExtDeviation,ExtBackstep);
   zz2=GetExtremumZZPrice(NULL,0,2,ExtDepth,ExtDeviation,ExtBackstep);
   zz3=GetExtremumZZPrice(NULL,0,3,ExtDepth,ExtDeviation,ExtBackstep);
   zz4=GetExtremumZZPrice(NULL,0,4,ExtDepth,ExtDeviation,ExtBackstep);
   zz5=GetExtremumZZPrice(NULL,0,5,ExtDepth,ExtDeviation,ExtBackstep);

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
       {
        if(OrderMagicNumber()!=MAGIC || OrderSymbol()!=Symbol()) continue;
         {
          if(OrderType()==OP_BUY) b++;
          if(OrderType()==OP_SELL) s++;
         }
       }  
     }             
           
   Comment("\n","ZZ0 = ",zz0,"\n",
          "ZZ1 = ",zz1,"\n",
          "ZZ2 = ",zz2,"\n",
          "ZZ3 = ",zz3,"\n",
          "ZZ4 = ",zz4,"\n");
   
//---- buy conditions
   if((zz4-zz2)<=Diapazon*Point && (zz2-zz0)>=Delta*Point && (Ask-zz0)>=Delta*Point)  
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,fND(Ask-StopLoss*Point),fND(Ask+TakeProfit*Point),"",MAGIC,0,Blue);
      if(res<0)
       {
        Print("Order Buy  error: ",GetLastError());
       }
      else
        Print("OK Order Buy");  
      return;
     }   
//---- sell conditions
   if((zz4-zz2)<=Diapazon*Point && (zz0-zz2)>=Delta*Point && (zz0-Bid)>=Delta*Point)  
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,fND(Bid+StopLoss*Point),fND(Bid-TakeProfit*Point),"",MAGIC,0,Red);
      if(res<0)
       {
        Print("Order Sell  error: ",GetLastError());
       }
      else
        Print("OK Order Sell");  
      return;
     }
//----
  }
//+------------------------------------------------------------------+
double fND(double d, int n=-1) 
  {  
   if (n<0) return(NormalizeDouble(d, Digits)); 
   return(NormalizeDouble(d, n)); 
  }  
//+------------------------------------------------------------------+
bool NewBar()
  {
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
    {
     lastbar=curbar;
     return (true);
    }
   else
    {
     return(false);
    }
  }  
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+
void BU()
{
   for(int i=0; i<OrdersTotal(); i++)
      {
       if(OrderSelect(i, SELECT_BY_POS))
        {      
         if(OrderType()==OP_BUY)
          {
           if(OrderOpenPrice()<=(Bid-BULevel*Point)&&OrderOpenPrice()>OrderStopLoss())
            {      
             bool mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green);
            }
          }
            
         if(OrderType() == OP_SELL)
          {
           if(OrderOpenPrice()>=(Ask+BULevel*Point)&&OrderOpenPrice()<OrderStopLoss())
            {
             mod=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Red);
            }
          }
        }
      }
}
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
//---- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false) return;
//--- go trading only for first tiks of new bar
   if(NewBar()==true)
    {
     if(OrdersTotal()<1) CheckForOpen();
    }
   if (BULevel!=0) BU();                                
//----
  }  
//+------------------------------------------------------------------+
avatar

  27  AM2 Сообщений: 8133 - Андрей

  • 1 декабря 2014, 21:08
+
0
еще вопрос, можно добавить к сове, чтоб она могла определить вот такое построение свеч после пробития флетового канала, и только тогда входила в рынок, если да, то надо чтоб в настройках совы можно было добавить или убрать энное количество свечь,
вот рисунок

Редактирован: 2 декабря 2014, 10:02
avatar

  22  tibi Автор Сообщений: 882

  • 2 декабря 2014, 10:01
+
0
наверно наш товарищ програмист сильно занят, раз молчит по поводу моего вопроса :) 
avatar

  22  tibi Автор Сообщений: 882

  • 5 декабря 2014, 08:49
+
0
лучше создать дополнительный топик для доработки, сославшись оттуда на текущий топик
avatar

  39  Bishop Сообщений: 5339 - АЛЬФАХАМЕЦ-Машковод

  • 5 декабря 2014, 11:00
+
0
Спасибо за сову огромное. Весь тырнет облазил чтоб найти.*bravo* 
avatar

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

  • 2 января 2015, 11:40
+
0
какую из трех используеш, и пожалуста результаты тестов сюда скидывай
avatar

  22  tibi Автор Сообщений: 882

  • 2 января 2015, 12:47

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