Кто может написать советника?

 

Это очень прибыльная система проверенно на реале!

 

Стратегия проста! Если линия голубая, надо чтоб советник продал, как только линия поменяет цвет на синий то надо чтоб он закрыл предидущую и  купил!

Кто сможет бесплатно! Это советник не лично мне, а всему форуму! 

Файлы:
 
MeZirg:

Это очень прибыльная система проверенно на реале!

 

Стратегия проста! Если линия голубая, надо чтоб советник продал, как только линия поменяет цвет на синий то надо чтоб он закрыл предидущую и  купил!

Кто сможет бесплатно! Это советник не лично мне, а всему форуму! 

Как то так:


//+------------------------------------------------------------------+
//|                                              Moving Averages.mq5 |
//|          Copyright Copyright 2010, MetaQuotes Software Corp.,AM2 |
//|                                              http://www.mql5.com |
//|                                   http://www.crossmaker.narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp.,AM2."
#property link      "http://www.mql5.com"
#property link      "http://www.crossmaker.narod.ru "
#property version   "1.04"

#include <Trade\Trade.mqh>

input int    MovingPeriod       = 20;      // Moving Average period

//---
int   ExtHandle=0;

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   if(rt[1].tick_volume>1) return;
//--- get current Moving Average
   double   ma[3];
   if(CopyBuffer(ExtHandle,0,0,3,ma)!=3)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;
     }
//--- check signals
   ENUM_ORDER_TYPE signal=WRONG_VALUE;

   if(ma[0]>ma[1]) signal=ORDER_TYPE_SELL;    // sell conditions
   else
      if(ma[0]<ma[1]) signal=ORDER_TYPE_BUY;  // buy conditions
//--- additional checking
   if(signal!=WRONG_VALUE)
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
         if(Bars(_Symbol,_Period)>200)
           {
            CTrade trade;
            trade.PositionOpen(_Symbol,signal,1,
                               SymbolInfoDouble(_Symbol,signal==ORDER_TYPE_SELL ? SYMBOL_BID:SYMBOL_ASK),
                               0,0);
           }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   if(rt[1].tick_volume>1) return;
//--- get current Moving Average
   double   ma[3];
   if(CopyBuffer(ExtHandle,0,0,3,ma)!=3)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;
     }
//--- positions already selected before
   bool signal=false;
   long type=PositionGetInteger(POSITION_TYPE);

   if(type==(long)POSITION_TYPE_BUY   && ma[0]>ma[1]) signal=true;
   if(type==(long)POSITION_TYPE_SELL  && ma[0]<ma[1]) signal=true;
//--- additional checking
   if(signal)
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
         if(Bars(_Symbol,_Period)>200)
           {
            CTrade trade;
            trade.PositionClose(_Symbol,3);
           }
//---
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   ExtHandle=iCustom(NULL,0,"trend",MovingPeriod);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(PositionSelect(_Symbol)) CheckForClose();
   else                        CheckForOpen();
//---
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+

 

 
AM2:

Как то так:

 

Интересная ситуация. Пытаюсь запустить приведенный выше код в тестере. Компиляция - без ошибок. При запуске в тестере:

 

2010.11.08 22:20:30 Tester loading of C:\Program Files\MetaTrader 5\MQL5\Experts\is7n_trend.ex5 failed
2010.11.08 22:20:30 MQL5 wrong type, loading of is7n_trend failed

??? (build 353).

 
Ashes:

Интересная ситуация. Пытаюсь запустить приведенный выше код в тестере. Компиляция - без ошибок. При запуске в тестере:

 

2010.11.08 22:20:30 Tester loading of C:\Program Files\MetaTrader 5\MQL5\Experts\is7n_trend.ex5 failed
2010.11.08 22:20:30 MQL5 wrong type, loading of is7n_trend failed

??? (build 353).

А вы переименовали is7n_trend в trend ?

Или здесь замена:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---   ExtHandle=iCustom(NULL,0,"trend",MovingPeriod);
//---   return(0);
  }
//+------------------------------------------------------------------+

на:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---   ExtHandle=iCustom(NULL,0,"is7n_trend",MovingPeriod);
//---   return(0);
  }
//+------------------------------------------------------------------+

 

 
AM2:

А вы переименовали is7n_trend в trend ?

Или здесь замена:

на:

 

Всё понял: в "советнике" не оказалось OnTick, OnTrade, OnTimer, но есть OnCalculate... И вообще текст советника скачался совершенно не такой (имя-такое)...

Оказалось, это первоначальный вариант. Что-то не соображу, как выцепить код - все копируется одной длиннной строкой... 

Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Ashes:

Всё понял: в "советнике" не оказалось OnTick, OnTrade, OnTimer, но есть OnCalculate... И вообще текст советника скачался совершенно не такой (имя-такое)...

Оказалось, это первоначальный вариант. Что-то не соображу, как выцепить код - все копируется одной длиннной строкой... 

Вот файл эксперта exptrend.mq5. Положите его в папку /Experts.

И файл индикатора trend.mq5. Д.б. в папке /Indicators. 

 

 

Файлы:
trend.mq5  4 kb
exptrend.mq5  5 kb
 
MeZirg:

Это очень прибыльная система проверенно на реале! 

Стратегия проста! Если линия голубая, надо чтоб советник продал, как только линия поменяет цвет на синий то надо чтоб он закрыл предидущую и  купил!

Если "очень прибыльная" и "проверенная", то почему ничего не выходит?  Попробуйте чуть по-другому (покупка, для продажи - зеркально).

1.  Открываемся на пробое последнего мах (хай) Х баров  при условии, что на этих Х баров был откат хотя бы по хаям (можно усложнить, но можно попробовать и НАСТОЛЬКО "тупо").

2. СЛ - под минимумом этих Х баров (он может быть и на пробойном!!!), ТП= Y% от СЛ.

Для начала Y=100%, далее можно оптимизировать и его, и Х. Для Х желательно будет подобрать ДИАПАЗОН, т.е. минимальное и максимальное количество баров. Думаю, что должно получиться как минимум несливалово, которое потом можно будет и доработать (в т.ч. "нормировать"/оптимизировать величину отката).

И главное - забудьте про перевороты, особенно на МА. Ситуация есть - выскочил, урвал кусок и назад, в кусты. Совсем не факт, что рынок на малейшем качке должен разворачиваться даже на тяжелой МА, а у вас мелкая МАша... 

PS: набросал "мимоходом", если где описка - сорри, ИМХО смысл понятен. 

Улучшить введением доп. фильтра (напр. МАКД или одной  более тяжелой МА) элементарно, но начать лучше с того, что написал. 

 

Вообще-то если говорить об оптимизации, то начинать надо с периода МА - подбирать под конкретный инструмент и таймфрейм, сначала визуально/грубо, исходя из того, какие сигналы предпочтительней, а потом уж всё остальное.

Мне всё равно понадобится такой элемент как составная часть будущего советника, поэтому если у кого получится что-нибудь приличное в первом приближении, могу предложить совместно ПЛОТНО поработать онлайн/реалтайм  на ОБЩЕЕ благо. С МАшами работаю давно и плотно, на них основана моя главная ТС.

 
AM2:

Вот файл эксперта exptrend.mq5. Положите его в папку /Experts.

И файл индикатора trend.mq5. Д.б. в папке /Indicators. 

 

 

мне показалось или в настройках советника действительно только период МА?
Причина обращения: