Buff
Артем

 
Уровень 13

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


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

Рейтинг 2146



РЕКОМЕНДУЮ



Заказ на создание советника на основе индикатора Trend Wave

Приветствую всех!!! Время у меня 00-20 самое то написать заказ и выложить все мысли по будущей сове.
Сам индюк TrendWave.mq4 (5 Kb)
Вид индюка

Техническое задание.
Вход осуществлять при появлении точки на индюке либо сверху либо снизу неограниченным количеством стоповых ордеров с указанным шагом.
Выход осуществлять закрытием всех ордеров при появлении точки на противоположной стороне смотрим скрин там все понятно.
При возникновении такой ситуации

Вход осуществляем как обычно при появлении точки неограниченным количеством стоповых ордеров.
Выход осуществляем закрытием всех ордеров при пересечении красной и зеленой линии индюка в зоне где линии (красная зеленая) не достигли 0 отметки индюка. Если линии (красная зеленая) пересекли 0 отметку индюка (смотрим скрин выше) то ничего не закрываем, а ждем появления точки и потом осуществляем выход. Тем самым обезопасим себя от ложных входов, а они будут.
Необходимые параметры совы.
Объем ордера
Расстояние между стоповыми ордерами
Параметры индюка их там 2 вроде
А дальше по желанию разработчиков ММ от баланса, троллинг стоп и т.д.
Таймфрейм любой инструмент тоже.
В принципе все что забыл в комменты.
  • +2
  • Просмотров: 10013
  • 5 ноября 2014, 19:57
  • Buff
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
+1
от цены отступ делать или на расстоянии стоплевел ставим?
avatar

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

  • 5 ноября 2014, 20:18
+
0
без отступа вообще сразу ордер, стоповые ордера только бай или только селл в зависимости от тренда (от волны). Это не как у сеточных маленько.
Редактирован: 5 ноября 2014, 20:39
avatar

  13  Buff Автор Сообщений: 401 - Артем

  • 5 ноября 2014, 20:36
+
+2
Предварительная версия эксперта в базе:

www.opentraders.ru/downloads/497/

avatar

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

  • 5 ноября 2014, 23:27
+
+1
я в шоке время исполнения несколько часов. Время опублткования 5 ноября 2014, 19:57 и время комента АМ2 об окончании 5 ноября 2014, 23:27. Впечатляет*bravo* 
avatar

  13  Buff Автор Сообщений: 401 - Артем

  • 6 ноября 2014, 00:20
+
0
Распиши пожалуйста параметры не все понимают что есть что, да и я сам COUNT EXPIRATION TWLEVEL???
avatar

  13  Buff Автор Сообщений: 401 - Артем

  • 6 ноября 2014, 13:21
+
0
Убери время исполнения ордера вообще, закрытие по точке (пересечение 2-х линий, только не при ложном входе переворот) и переворот в др сторону сразу (выход это и есть вход цикл). И надо добавить параметр уровня входа (на индюке уровни) после которого при пересечении 2-х линий осуществлять вход, а то до точки не всегда доходит и много потерь получается, а так золотое сечение бум искать. То есть нужно оставить все как есть ток добавить уровень и убрать время исполнения.
avatar

  13  Buff Автор Сообщений: 401 - Артем

  • 6 ноября 2014, 14:19
+
+2
вот вариант без времени истечения и комментами к переменным. параметр уровня есть TWLelel. Сейчас напишу вариант с пересечением линий.


//+------------------------------------------------------------------+
//|                                                        TWBot.mq4 |
//|                                              Copyright 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#define MAGIC  20141106

extern int    WavePeriod  = 10;  // период индикатора Trend Wave 
extern int    AvgPeriod   = 23;  // период усреднения индикатора Trend Wave
extern int    TWLelel     = 50;  // уровень индикатора Trend Wave
extern int    Step        = 100; // расстояние между ордерами
extern int    Count       = 10;  // количество выставляемых ордеров 
extern double Lots        = 0.1; // объем позиции
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Comment("");      
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   if(Volume[0]>1) return 0;
   double TWBull=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,4,1);
   double TWBear=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,5,1);
   Comment("\nTWBull: ",TWBull,"\nTWBear: ",TWBear); 
   double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   if (OrdersTotal()<1 && TWBear > TWLelel)
    {       
     for(int i=0;i<=Count;i++)
      {            
       int res=OrderSend(Symbol(),OP_SELLSTOP,Lots,fND(Bid-StopLimits*Point-i*Step*Point),0,0,0,"",MAGIC,0,Red);
       if(res<0)
        {
         Print("Ордер выставлен с ошибкой: ",GetLastError());
        }
       else
       Print("Ордер выставлен успешно");         
      }
      Sleep(1000);
    }
    
   if (OrdersTotal()<1&& TWBull < -TWLelel)
    {       
     for(int i=0;i<=Count;i++)
      {            
       int res=OrderSend(Symbol(),OP_BUYSTOP,Lots,fND(Ask+StopLimits*Point+i*Step*Point),0,0,0,"",MAGIC,0,Blue);
       if(res<0)
        {
         Print("Ордер выставлен с ошибкой: ",GetLastError());
        }
       else
       Print("Ордер выставлен успешно");
       Sleep(1000);
//---  
      }    
    }
    
   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  && TWBull>TWLelel)
          {
           bool mod=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
                    
          }
         else 
         if(OrderType()==OP_SELL && TWBear<-TWLelel)
          {
           bool mod=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
           
          }          
        }
      }
    }  
      
   return(0); 
}
//+------------------------------------------------------------------+
double fND(double d, int n=-1) 
  {  
   if (n<0) return(NormalizeDouble(d, Digits)); 
   return(NormalizeDouble(d, n)); 
  }
//+------------------------------------------------------------------+


avatar

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

  • 6 ноября 2014, 18:22
+
+1
то есть сейчас напишешь вот для этого случая
avatar

  13  Buff Автор Сообщений: 401 - Артем

  • 6 ноября 2014, 18:31
+
0
если последний вариант устраивает, буду смотреть что здесь можно сделать
avatar

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

  • 6 ноября 2014, 18:57
+
0
Выложи пожалуйста откомпилированным файлом, и надо убрать ложные входы при пересечении если линии не достигли 0 отметки индюка. Я описывал это выше. То есть линии пересеклись дали вход, а потом опять пересеклись но до линии 0 отметки как на скрине, что свидетельствует о ложном входе. И мы это все кроем и открываем по новой и так 5 раз как на скрине пока не пойдем вверх (ну это если брать вариант на скрине, а так при оптимизации параметров индюка и уровня TWLEVEL сократятся ложные входы, но нам надо их пресекать на корню чтобы убытков было меньше).
avatar

  13  Buff Автор Сообщений: 401 - Артем

  • 6 ноября 2014, 19:14
+
+1
сейчас кроемся при болтанке и по сигналу за уровнем. после закрытия выставляем сеть противоположного направления.

файл скомпилировал и заменил в базе.




//+------------------------------------------------------------------+
//|                                                        TWBot.mq4 |
//|                                              Copyright 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#define MAGIC  20141106

extern int    WavePeriod  = 10;  // период индикатора Trend Wave 
extern int    AvgPeriod   = 23;  // период усреднения индикатора Trend Wave
extern int    TWLelel     = 50;  // уровень индикатора Trend Wave
extern int    Step        = 100; // расстояние между ордерами
extern int    Count       = 10;  // количество выставляемых ордеров 
extern double Lots        = 0.1; // объем позиции
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
     
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   if(Volume[0]>1) return 0;
   double TWBull=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,4,1);
   double TWBull1=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,4,2);
   
   double TWBear=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,5,1);
   double TWBear1=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,5,2);
   Comment("\nTWBull: ",TWBull,"\nTWBear: ",TWBear); 
   double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   if (OrdersTotal()<1 && TWBear > TWLelel && TWBear>TWBull && TWBull1>TWBear1)
    {       
     OpenSellStop();
    }
    
   if (OrdersTotal()<1 && TWBull < -TWLelel && TWBull>TWBear && TWBear1>TWBull1)
    {       
     OpenBuyStop();
    }
    
   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  && ((TWBear>TWLelel && TWBear>TWBull && TWBull1>TWBear1)||(TWBull< 0 && TWBull>TWBear && TWBear1>TWBull1)))
          {
           bool mod=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
           DeleteOrders();
           OpenSellStop();         
          }
         else 
         if(OrderType()==OP_SELL && ((TWBull<-TWLelel && TWBull>TWBear && TWBear1>TWBull1)||(TWBull>0 && TWBull>TWBear && TWBear1>TWBull1)))
          {
           bool mod=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
           DeleteOrders();
           OpenBuyStop();
          }          
        }
      }
    }  
      
   return(0); 
}
//+------------------------------------------------------------------+
double fND(double d, int n=-1) 
  {  
   if (n<0) return(NormalizeDouble(d, Digits)); 
   return(NormalizeDouble(d, n)); 
  }
//+------------------------------------------------------------------+
void DeleteOrders() 
{ 
 bool del; 
 for (int i=OrdersTotal()-1; i>=0; i--) 
  {
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
   if (OrderType()==OP_BUYSTOP  ) del=OrderDelete(OrderTicket()); 
   if (OrderType()==OP_SELLSTOP ) del=OrderDelete(OrderTicket());  
  }  
}
//+------------------------------------------------------------------+
void OpenBuyStop()
{
  double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
  for(int i=0;i<=Count;i++)
   {            
    int res=OrderSend(Symbol(),OP_BUYSTOP,Lots,fND(Ask+StopLimits*Point+i*Step*Point),0,0,0,"",MAGIC,0,Blue);
      if(res<0)
       {
        Print("Ордер выставлен с ошибкой: ",GetLastError());
       }
      else
        Print("Ордер выставлен успешно");
        Sleep(1000);  
      }    
}
//+------------------------------------------------------------------+
void OpenSellStop()
{
  double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
  for(int i=0;i<=Count;i++)
   {            
    int res=OrderSend(Symbol(),OP_SELLSTOP,Lots,fND(Bid-StopLimits*Point-i*Step*Point),0,0,0,"",MAGIC,0,Blue);
      if(res<0)
       {
        Print("Ордер выставлен с ошибкой: ",GetLastError());
       }
      else
        Print("Ордер выставлен успешно");
        Sleep(1000);  
      }    
}
//+------------------------------------------------------------------+
avatar

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

  • 6 ноября 2014, 21:49
+
0
после закрытия выставляем сеть противоположного направления.
убери это пожалуйста он хуже стал. Вход по пересечению 2-х линий на заданом уровне как было.
avatar

  13  Buff Автор Сообщений: 401 - Артем

  • 7 ноября 2014, 13:03
+
+1
переоткрытие сеткой убрал


//+------------------------------------------------------------------+
//|                                                        TWBot.mq4 |
//|                                              Copyright 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+

#property copyright "Copyright 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#define MAGIC  20141106

extern int    WavePeriod  = 10;  // период индикатора Trend Wave 
extern int    AvgPeriod   = 23;  // период усреднения индикатора Trend Wave
extern int    TWLelel     = 50;  // уровень индикатора Trend Wave
extern int    Step        = 100; // расстояние между ордерами
extern int    Count       = 10;  // количество выставляемых ордеров 
extern double Lots        = 0.1; // объем позиции
 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
     
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   if(Volume[0]>1) return 0;
   double TWBull=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,4,1);
   double TWBull1=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,4,2);
   
   double TWBear=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,5,1);
   double TWBear1=iCustom(Symbol(),0,"TrendWave",WavePeriod,AvgPeriod,5,2);
   Comment("\nTWBull: ",TWBull,"\nTWBear: ",TWBear); 
   double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   if (OrdersTotal()<1 && TWBear > TWLelel && TWBear>TWBull && TWBull1>TWBear1)
    {       
     OpenSellStop();
    }
    
   if (OrdersTotal()<1 && TWBull < -TWLelel && TWBull>TWBear && TWBear1>TWBull1)
    {       
     OpenBuyStop();
    }
    
   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  && ((TWBear>TWLelel && TWBear>TWBull && TWBull1>TWBear1)||(TWBull< 0 && TWBull>TWBear && TWBear1>TWBull1)))
          {
           bool mod=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
           DeleteOrders();         
          }
         else 
         if(OrderType()==OP_SELL && ((TWBull<-TWLelel && TWBull>TWBear && TWBear1>TWBull1)||(TWBull>0 && TWBull>TWBear && TWBear1>TWBull1)))
          {
           bool mod=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
           DeleteOrders();
          }          
        }
      }
    }  
      
   return(0); 
}
//+------------------------------------------------------------------+
double fND(double d, int n=-1) 
  {  
   if (n<0) return(NormalizeDouble(d, Digits)); 
   return(NormalizeDouble(d, n)); 
  }
//+------------------------------------------------------------------+
void DeleteOrders() 
{ 
 bool del; 
 for (int i=OrdersTotal()-1; i>=0; i--) 
  {
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 
   if (OrderType()==OP_BUYSTOP  ) del=OrderDelete(OrderTicket()); 
   if (OrderType()==OP_SELLSTOP ) del=OrderDelete(OrderTicket());  
  }  
}
//+------------------------------------------------------------------+
void OpenBuyStop()
{
  double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
  for(int i=0;i<=Count;i++)
   {            
    int res=OrderSend(Symbol(),OP_BUYSTOP,Lots,fND(Ask+StopLimits*Point+i*Step*Point),0,0,0,"",MAGIC,0,Blue);
      if(res<0)
       {
        Print("Ордер выставлен с ошибкой: ",GetLastError());
       }
      else
        Print("Ордер выставлен успешно");
        Sleep(1000);  
      }    
}
//+------------------------------------------------------------------+
void OpenSellStop()
{
  double StopLimits=MarketInfo(Symbol(),MODE_STOPLEVEL);
  for(int i=0;i<=Count;i++)
   {            
    int res=OrderSend(Symbol(),OP_SELLSTOP,Lots,fND(Bid-StopLimits*Point-i*Step*Point),0,0,0,"",MAGIC,0,Blue);
      if(res<0)
       {
        Print("Ордер выставлен с ошибкой: ",GetLastError());
       }
      else
        Print("Ордер выставлен успешно");
        Sleep(1000);  
      }    
}
//+------------------------------------------------------------------+
avatar

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

  • 7 ноября 2014, 23:57
+
0
Однако нужен трол, потому что вход находим, а закрываемся уже когда цена ушла или альтернативное какое то закрытие надо (не по пересечению 2-х линий) возможно закрытие по уровню или по др индюку.
avatar

  13  Buff Автор Сообщений: 401 - Артем

  • 8 ноября 2014, 14:15
+
+1
напишите что именно нужно и я добавлю
avatar

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

  • 8 ноября 2014, 18:33
+
0
Давай добавим троллинг стоп
avatar

  13  Buff Автор Сообщений: 401 - Артем

  • 8 ноября 2014, 20:17
+
+2
советник с трейлингом всех ордеров в базе. скомпилированный файл и исходник.

www.opentraders.ru/downloads/497/
avatar

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

  • 9 ноября 2014, 12:20
+
0
А вот что у меня получилось на основе этого индикатора. Правда, я его немного изменил.
fargo.opentraders.ru/23446.html
avatar

  13  Fargo Сообщений: 495

  • 3 марта 2015, 13:29

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