Скачать MetaTrader 5

[Архив!] ПИШЕМ СОВЕТНИКА ВМЕСТЕ!!!

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

Предлагаю написать совместными усилиями советника. Во первых это поможет ответить на многие интересные вопросы (об этом по завершению проэкта), во-вторых, может и получится совместно сделать граальчик:) и наконец, новичкам (коем я себя и считаю в плане программирования) будет интересно поучиться как поэтапно строиться МТС. За основу взял простейшую стратегию... Просто открываемся на пробитие High/Low предыдущего дня с фиксированным т.профитом и со стопом на High/Low сегоднешнего дня. Почему именно так? Да потому что во-первых, такая система не использует ни одного индикатора, во-вторых проф.фактор с 2000г. по сей день равен 1,00 +/-0,03 (в зависимости от историч. данных т.к. могут отличаться) т.е. впринцепи она 50/50 и наконец, я считаю что пробитие Нigh/Low предыдущего дня все же психологически важно для рынка. Предлагаю найти другие ключевые уровни или воспользоваться вспомогательными индекаторами или еще что-то, но главное, получить более прибыльный эксперт чем представлен ниже. Это график из тестора с 01.01.2009 по сегодняшний день, более подробный отчет можете получить у себя самостоятельно. Главная идея, то что остальные инструменты должны только помогать системе, а не строиться на них... т.е. за основу берем рабочую систему и пытаемся ее модернизировать (улучшить). Вот что я получил...

Данная ТС обсолютно "голая", но в ней есть потенциал...

Новичкам не рекомендую использовать... следующие 5 лет она будет сливать ;)

Так что тут поле не паханное...

Вот код

//+-----------------------------------------------------------------------+
//|                                                     Крокодил ГЕНА.mq4 |
//|                                                         Крокодил ГЕНА |
//+-----------------------------------------------------------------------+
// Описание ТС
// 1. Открытие позиций происходит при пробитии High или Low предыдущего дня
//    SL ставиться на High или Low текущего дня, TP выставляется во внешних переменных, 
//    единственная оговорка не более 1 позиции в день в переменной LastTradeTime 
//    если в ней нет необходимост смело сносите /RomanS/
// 2.
// 3.
// 4.
// 5.
 
  // Внешние переменные
  extern double TakeProfit = 900; 
  extern double Lot        = 1;    
  extern string SYMBOL     = "EURUSD";
  
  // Глобальные переменные
  int LastTradeTime = 0;      // Время последней открытой сделки
  
  // Поехали... :)
  int start() 
  {  
     int Ticket;
  double BID,
         ASK,
         SL=0,
         TP=0;                                  
    bool Trade     = true,
         Open_Bay  = false,
         Open_Sell = false;

  // Проверяем можно ли торговать
  if (Trade==true) 
   {
   
  // Критерии открытия позиций
    if (Bid > iHigh (SYMBOL,PERIOD_D1,1)) Open_Bay = true; 
    if (Bid < iLow (SYMBOL,PERIOD_D1,1)) Open_Sell = true;
        
  // Открытие позиций
      if (Open_Bay == true && OrdersTotal()==0 && TimeDay(TimeCurrent())!=LastTradeTime)                                           
        {      
         RefreshRates(); 
         Alert("111111111111");
          ASK = MarketInfo(SYMBOL,10);                                
          SL = iLow(SYMBOL,PERIOD_D1,0);
          TP = ASK + TakeProfit*Point;
          if ((ASK-SL)/Point<MarketInfo(SYMBOL,14)) return;  // проверяем минимальный уровень стопов
          Alert("Пробуем открыть Buy ",SYMBOL, " по ",ASK, SL, TP);         
          Ticket=OrderSend(SYMBOL,OP_BUY,Lot,ASK,20,SL,TP);         
           if (Ticket > 0)                                                  
            {            
             Alert ("Открыт ордер Buy ",Ticket);
             LastTradeTime=TimeDay(TimeCurrent()); // задаем время сделки, чтобы сегодня больше не торговать 
             return;                                                       
            }         
        }
     if (Open_Sell == true && OrdersTotal()==0 && TimeDay(TimeCurrent())!=LastTradeTime)                                             
        {      
         RefreshRates();                                             
          BID = MarketInfo(SYMBOL,9);
          SL = iHigh (SYMBOL,PERIOD_D1,0);
          TP = BID - TakeProfit*Point;
          if ((SL-ASK)/Point<MarketInfo(SYMBOL,14)) return; // проверяем минимальный уровень стопов
          Ticket = OrderSend(SYMBOL,OP_SELL,Lot,BID,20,SL,TP);         
           if (Ticket > 0)                                                  
             { 
              Alert ("Открыт ордер Sell ",Ticket);
              LastTradeTime=TimeDay(TimeCurrent());  // задаем время сделки, чтобы сегодня больше не торговать
              return;                                   
             }         
          return;                                                       
        }
   
   // Закрытие позиции
   
   // Модификация ордера
   
   }
  return;       
  }



Сразу хочу предложить привести исходник к нормальному виду, я не профи... я "любитель", так чтобы дальше было удобнее работать. Или вообще.. новую схему. Главное чтоб условие







    if (Bid > iHigh (SYMBOL,PERIOD_D1,1)) Open_Bay = true; 
    if (Bid < iLow (SYMBOL,PERIOD_D1,1)) Open_Sell = true;

на данном этапе сохранялось.

Всем откликнувшимся спасибо.

Файлы:
Alexey
1365
Alexey  

А оптимизируется советник на всех участках, и насколько долго держатся соптимизированные параметры

Роман
2355
Роман  
ivandurak >>:

А оптимизируется советник на всех участках, и насколько долго держатся соптимизированные параметры

Какая оптимизация???

Сдесь (на данном этапе) только т.проф. можно оптимизировать, ну можно конечно и лот прогнать, только смысла нет

Илья
2546
Илья  

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

Отсюда мой совет - пробойные системы лучше строить на пробой узких диапазонов, где тейк больше пробойного диапазона. Самый яркий пример - пробой утреннего флета. Абсолютно правильное в этом смысле решение.

Если плясать от дневок, до без дополнительных ориентировок в виде ещё каких-то уровней, примочек и шаманского бубна не обойтись. 

Роман
2355
Роман  
sayfuji >>:

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

Отсюда мой совет - пробойные системы лучше строить на пробой узких диапазонов, где тейк больше пробойного диапазона. Самый яркий пример - пробой утреннего флета. Абсолютно правильное в этом смысле решение.

Если плясать от дневок, до без дополнительных ориентировок в виде ещё каких-то уровней, примочек и шаманского бубна не обойтись. 

замени в советнике 

РERIOD_D1 на РERIOD_Н4 может результат лучше будет???

Если честно, я с этой МТС ничего не пробывал... Просто ради интереса сделал...

Как я уже говорил в прошлой ветке, на форуме известного ДЦ на букву "А", форумяне год писали совместно эксперта...

Давайте и мы что-нить придумаем... У нас потенциал программирования больше..

Alexey
1365
Alexey  
RomanS писал(а) >>

Какая оптимизация???

Сдесь (на данном этапе) только т.проф. можно оптимизировать, ну можно конечно и лот прогнать, только смысла нет

Это я к ведению виртуальной торговли . Лучшие оптимальные параметры выбираются для реальной торговли . И исчо пишем двух советников в одном коде,один работает на пробой другой на отскок, который лучше тот и торгует .

Роман
2355
Роман  

Сейчас уже вижу ошибки в нашей МТС

Хотел чтобы на всех валютных парах работало, а получилось только для EURUSD

Сейчас поправлю...

-----------------------------------------------+
//|                                                     Крокодил ГЕНА.mq4 |
//|                                                         Крокодил ГЕНА |
//+-----------------------------------------------------------------------+
// Описание ТС
// 1. Открытие позиций происходит при пробитии High или Low предыдущего дня
//    SL ставиться на High или Low текущего дня, TP выставляется во внешних переменных, 
//    единственная оговорка не более 1 позиции в день в переменной LastTradeTime 
//    если в ней нет необходимост смело сносите /RomanS/
// 2.
// 3.
// 4.
// 5.
 
  // Внешние переменные
  extern double TakeProfit = 900; 
  extern double Lot        = 1;    
  extern string SYMBOL     = "EURUSD";
  
  // Глобальные переменные
  int LastTradeTime = 0;      // Время последней открытой сделки
  
  // Поехали... :)
  int start() 
  {  
     int Ticket;
  double BID,
         ASK,
         SL=0,
         TP=0;                                  
    bool Trade     = true,
         Open_Bay  = false,
         Open_Sell = false;

  // Проверяем можно ли торговать
  if (Trade==true) 
   {
   
   ASK = MarketInfo(SYMBOL,10);
   BID = MarketInfo(SYMBOL,9);
  
  // Критерии открытия позиций
    if (BID > iHigh (SYMBOL,PERIOD_D1,1)) Open_Bay = true; 
    if (BID < iLow (SYMBOL,PERIOD_D1,1)) Open_Sell = true;
        
  // Открытие позиций
      if (Open_Bay == true && OrdersTotal()==0 && TimeDay(TimeCurrent())!=LastTradeTime)                                           
        {      
         RefreshRates(); 
          SL = iLow(SYMBOL,PERIOD_D1,0);
          TP = ASK + TakeProfit*Point;
          if ((ASK-SL)/Point<MarketInfo(SYMBOL,14)) return;  // проверяем минимальный уровень стопов
          Alert("Пробуем открыть Buy ",SYMBOL, " по ",ASK, SL, TP);         
          Ticket=OrderSend(SYMBOL,OP_BUY,Lot,ASK,20,SL,TP);         
           if (Ticket > 0)                                                  
            {            
             Alert ("Открыт ордер Buy ",Ticket);
             LastTradeTime=TimeDay(TimeCurrent()); // задаем время сделки, чтобы сегодня больше не торговать 
             return;                                                       
            }         
        }
     if (Open_Sell == true && OrdersTotal()==0 && TimeDay(TimeCurrent())!=LastTradeTime)                                             
        {      
         RefreshRates();                                             
          SL = iHigh (SYMBOL,PERIOD_D1,0);
          TP = BID - TakeProfit*Point;
          if ((SL-ASK)/Point<MarketInfo(SYMBOL,14)) return; // проверяем минимальный уровень стопов
          Ticket = OrderSend(SYMBOL,OP_SELL,Lot,BID,20,SL,TP);         
           if (Ticket > 0)                                                  
             { 
              Alert ("Открыт ордер Sell ",Ticket);
              LastTradeTime=TimeDay(TimeCurrent());  // задаем время сделки, чтобы сегодня больше не торговать
              return;                                   
             }         
          return;                                                       
        }
   
   // Закрытие позиции
   
   // Модификация ордера
   
   }
  return;       
  }
Файлы:
Роман
2355
Роман  
sayfuji >>:

Если плясать от дневок, до без дополнительных ориентировок в виде ещё каких-то уровней, примочек и шаманского бубна не обойтись. 

Так вот шампанское и бубен должны прилагаться, совместно...

Одиночками, меньше шансов, надо общаться, на то и форум...

Александр
427
Александр  

Добрый день, RomanS.

Идея отличная. Я очень часто вижу, как на зарубежных форумах трейдеры объединяются в команду и обоюдными усилиями создают эксперта. Готов поддержать.

Что касается вашей идеи, то она сливная. И это не грааль. Если уже будем работать, то давайте работать серьезно, возлагая надежды иначе, нах это все начинать? Мое мнение такое: систему нужно создавать только под M1 EUR/USD. В основу алгоритма заложить способ определения тренда. Давайте, возъмем, скажем, ....мм..... скользящее среднее с алгоритмом сглаживания по Тильсону. Далее определимся со входом. Можно взять пересечение двух быстрых машек, по ним же и закрытие. Можно еще много прибамбасов прикрутить. Предлагайте :-) Плюс обязательно ММ с возможностью включать Мартина со своими настройками.

Вобщем, давайте плясать от этого. Выдвигайте ваши идеи по входу/выходу. Вместе сделаем. Но пробитие уровней high & Low на D1 - это слив. sayfuji все правильно написал.

Левитин Сергей В.
5163
Левитин Сергей В.  

А что в одной ветке https://forum.mql4.com/ru/ 23917 не пишется ?

А вообще объединяются обычно вокруг общеинтересной идеи, а тут кризис жанра...

Роман
2355
Роман  
Alex5757000 >>:

Добрый день, RomanS.

Идея отличная. Я очень часто вижу, как на зарубежных форумах трейдеры объединяются в команду и обоюдными усилиями создают эксперта. Готов поддержать.

Что касается вашей идеи, то она сливная. И это не грааль. Если уже будем работать, то давайте работать серьезно, возлагая надежды иначе, нах это все начинать? Мое мнение такое: систему нужно создавать только под M1 EUR/USD. В основу алгоритма заложить способ определения тренда. Давайте, возъмем, скажем, ....мм..... скользящее среднее с алгоритмом сглаживания по Тильсону. Далее определимся со входом. Можно взять пересечение двух быстрых машек, по ним же и закрытие. Можно еще много прибамбасов прикрутить. Предлагайте :-) Плюс обязательно ММ с возможностью включать Мартина со своими настройками.

Вобщем, давайте плясать от этого. Выдвигайте ваши идеи по входу/выходу. Вместе сделаем. Но пробитие уровней high & Low на D1 - это слив. sayfuji все правильно написал.

То, что пока это не грааль (время покажет) это точно!

То, что она не сливная (в долгосрочном плане), это видно при ее запуске в тестере (50/50 когда-то работает, клгда-то нет), но не сливная... проф.фактор примерно 1,00

По поводу М1 это конечно интенресно, но вряд ли заинтересует профи, к томуже я предложил систему не на дневках... я ее тестировал на М5, да вообщем нет и разницы.

По поводу МА-шек вообще пройденный этап...

В основу алгоритма заложить способ определения тренда

Ты предложил заложить  способ определения тренда, так заложи.... в чем проблема??? мы обсудим...

Давайте, возъмем, скажем, ....мм..... скользящее сре днее с алгоритмом сглаживания по Тильсону.

Нет проблем...  можно вставить пару строк кода и вооляя... проф.фактор больше 2,0

В том то и дело, что я предлагаю не предпологать, а делать, а тех кто не умеет делать.. учиться как другие делают.

Лично я (как любитель) хочу набраться опыта от профи...