Kashtan
Игорь

 
Уровень 18

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


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

Рейтинг 2081



РЕКОМЕНДУЮ



Советник на пробой или отбой максимума/минимума за определенный период

Сделайте пожалуйста советник на основе локальных экстремумов. В момент установки на график советник определяет хай/лоу за последние N свечей и на соответствующих ценовых уровнях ставит две отложки Бай/Стоп. Советник ставит ордера в том случае, если расстояние от текущей цены до Хай/Лоу не меньше чем заданно в настройках. В момент когда одна из отложек сработала, советник противоположную удаляет. После того как открытый ордер закрылся по тейку или стопу, советник начинает всё сначала.

Техническое задание:
1. Лот.
2. Количество свечей для определения Хай/Лоу.
3. Максимально допустимый спред для выставления ордеров.
4. Минимальное расстояние в пунктах до ближайшего хай/лоу, при котором советник выставит ордера.
5. Выбор типа ордеров — Стоп/Лимит.
6. Стоп лосс.
7. Тейк профит.
8. Работа по времени.
  • 0
  • Просмотров: 11568
  • 10 января 2016, 21:14
  • Kashtan
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Вам придется подождать до следующего месяца т.к. у вас уже есть заказ или могу реализовать платно.
avatar

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

  • 10 января 2016, 21:16
+
0
Спасибо за ответ, подожду)
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 10 января 2016, 22:05
+
0
Мне первого числа новый топик сделать?
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 10 января 2016, 22:10
+
0
Мне первого числа новый топик сделать?

Еще есть вариант попросить друга :) 
avatar

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

  • 10 января 2016, 23:19
+
0
Среди друзей програмЁров увы нету:D 
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 10 января 2016, 23:25
+
0
Я вчера ради интереса ознакомился с учебником по MQL4 и окуку… л:)  Сколько по вашему мнению Андрей в среднем надо время, чтоб с нуля этим делом более менее овладеть?
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 10 января 2016, 23:30
+
0
Среди друзей програмЁров увы нету


Я о том что можно попросить трейдера с уровнем от 3-х, разместить ваш заказ от своего имени.
avatar

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

  • 11 января 2016, 00:58
+
0
Сколько по вашему мнению Андрей в среднем надо время, чтоб с нуля этим делом более менее овладеть?


Лучше начинать с небольших статеек здесь или на мкл. Свой первый советник таким образом сможете написать за один вечер. Затем будете находить чужие подобные коды и переделывать под свои нужды.
avatar

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

  • 11 января 2016, 01:03
+
0
Два убитых вечера показали, что это явно не для моих слабых мозгов Андрей)))))) Придётся как и раньше просить что то написать раз в месяц:) 
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 12 января 2016, 21:25
+
0
Два убитых вечера показали


То что в этом топике, конечно сразу не получится.
avatar

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

  • 12 января 2016, 21:37
+
0
Посмотрите:


//+------------------------------------------------------------------+
//|                                                        OtBoy.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property description "Simple expert advisor"

#include <stdlib.mqh>

//--- Inputs
extern double Lots          = 0.1; //лот
extern int    StopLoss      = 500; //стоплосс отложенного ордера(если 0 то на предыдущий хай или лоу)
extern int    TakeProfit    = 500; //тейкпрофит  отложенного ордера
extern int    Delta         = 100; //расстояние от лоу или хая
extern int    StartHour     = 0;   //час начала торговли
extern int    StartMin      = 30;  //минута начала торговли
extern int    EndHour       = 23;  //час окончания торговли
extern int    EndMin        = 30;  //минута окончания торговли
extern int    StopLimit     = 0;   //0-stop 1-limit
extern int    Slip          = 0;   //проскальзывание ордеров
extern int    Spread        = 20;  //спред
extern int    Count         = 8;   //баров для расчета
extern int    Magic         = 123; //магик
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   Comment("");
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0,int mb=0,int he=0,int me=0)
  {
   datetime db, de;           // Время начала и окончания работы
   int      hc;               // Часы текущего времени торгового сервера

   db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+hb+":"+mb);
   de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+he+":"+me);
   hc=TimeHour(TimeCurrent());

   if(db>=de)
     {
      if(hc>=he) de+=24*60*60; else db-=24*60*60;
     }

   if(TimeCurrent()>=db && TimeCurrent()<=de) return(True);
   else return(False);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DelAllOrders()
  {
   bool del=true;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderMagicNumber()==Magic || OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUYSTOP) del=OrderDelete(OrderTicket());
            if(OrderType()==OP_SELLSTOP) del=OrderDelete(OrderTicket());
            if(OrderType()==OP_BUYLIMIT) del=OrderDelete(OrderTicket());
            if(OrderType()==OP_SELLLIMIT) del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr;
   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 CountOrders(int type)
  {
   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()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   int spread=MarketInfo(NULL,MODE_SPREAD);
   double Max=High[iHighest(NULL,0,MODE_HIGH,Count,1)];
   double Min= Low[iLowest(NULL,0,MODE_LOW,Count,1)];

   if(CountTrades()>0) DelAllOrders();
   if(CountTrades()<1 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin) && spread<=Spread)
     {
      if(StopLimit==0)
        {
         if(CountOrders(4)<1) PutOrder(4,Max+Delta*Point);
         if(CountOrders(5)<1) PutOrder(5,Min-Delta*Point);
        }

      if(StopLimit==1)
        {
         if(CountOrders(3)<1) PutOrder(3,Max+Delta*Point);
         if(CountOrders(2)<1) PutOrder(2,Min-Delta*Point);
        }
     }
  }
//+------------------------------------------------------------------+

avatar

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

  • 13 января 2016, 06:02
+
0
Спасибо большое Андрей! После работы посмотрю. Вчера мне показалось, что может правильнее было бы не количество пунктов советнику анализировать от хай/лоу, а проценты? Имею ввиду, что на каждой свече советник как бы мысленно строит новые хай/лоу до тех пор пока одно из них обновляется, а когда скажем хай N свечей подряд обновляться перестал и хай/лоу таким образом на некоторое время зафиксировались, советник начинает смотреть на проценты, предположим 30. То есть если расстояние между хай/лоу составляет 1000 пунктов и в настройках задано 30%, то как только цена уйдёт от переставшего обновляться в данном случае хая хотя бы на 300 пунктов, советник открывает позицию) Это так, мысли в слух… Просто интересно узнать ваше мнение)
Редактирован: 13 января 2016, 06:58
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 13 января 2016, 06:28
+
0
Можно я сделаю видеоролик, в котором покажу как бы я торговал на истории? И с текстовыми комментариями. Так вам будет максимально наглядно Андрей. Не важно когда этим займётесь, сейчас или через месяц. Главное чтоб была понятна задумка
Редактирован: 13 января 2016, 12:50
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 13 января 2016, 12:50
+
+2
Оформляй как свою ТС, с формализацией правил, примерами, комментариями и т.д.
Отдельным топиком
Получится тройная польза:
1. Еще раз сформулируешь свою идею. Возможно заметишь какие есть ошибки, неоднозначные моменты. Поправишь их.
2. Если народу понравится — получая плюсы быстрее поднимешь свой уровень
3. Чем лучше программист поймет задачу, тем точнее будет воплощение.
avatar

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

  • 13 января 2016, 16:24
+
0
Запусти тестер (с каким-нибудь индюком или советником-пустышкой) и записывай видео, что в этот момент я откроюсь, так как то-то и то-то… Т.е. не на истории это делать, когда виден весь график, а в тестере в режиме прогона хотя и истории, но так как «будущее» еще не видно, то эффект будет другим.
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 13 января 2016, 19:15
+
0
На истории я собирался делать нажимая F12(шаг за шагом) при том масштабе графика, в котором показано именно то количество баров, по которым строить поддержку и сопротивления. А твоим способом надо либо на предпоследней скорости визуализации делать где скорость построения баров слишком медленная на минутном графике, либо на последней скорости где бары строятся слишком быстро и не будешь успевать вовремя на паузу жать<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; Что если я по скайпу через демонстрацию экрана покажу? там пять минут займёт
Редактирован: 13 января 2016, 20:29
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 13 января 2016, 20:02
+
0
Что если я по скайпу через демонстрацию экрана покажу? там пять минут займёт
Так вы же Андрею заказ делаете — с ним и договаривайтесь. «Столом заказов» он рулит.
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 13 января 2016, 22:02
+
0
Так вы предложили тестер для записи видео использовать, вот я и предложил скайп вам а не кому то ещё)
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 13 января 2016, 23:20
+
0
От меня были просто мысли в слух, как с моей точки зрения, лучше снять видео. Для кого снимать собираетесь, у кого заказываете советник — это вам решать.
Редактирован: 14 января 2016, 14:01
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 14 января 2016, 14:01
+
0
Договорились) На истории всё хорошо выглядит, интересно что получилось бы в тестере за длительный период после реализации сова. Чтоб программист понял задачу точнее, придётся формулировать максимально подробно)
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 13 января 2016, 16:47
+
0
Ток боюсь скринов там будет дохера… Не страшно надеюсь:) 
avatar

  18  Kashtan Автор Сообщений: 737 - Игорь

  • 13 января 2016, 16:53
+
0
Всем привет. Я в программировании MQl4 новичок, поэтому просьба не смеяться над моими вопросами. В вышеописанном коде мне не понятна функция «PutOrder(int type,double price)». Особенно непонятно if(type==1 || type==3 || type==5). Может мне кто нибудь объяснит что это?
avatar

  10  Nadejda-stav Сообщений: 157

  • 22 июля 2016, 22:40
+
0
PutOrder(тип ордера, цена)
в if типы ордеров, которые можно посмотреть здесь: docs.mql4.com/ru/constants/tradingconstants/orderproperties
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 23 июля 2016, 01:28
+
0
Спасибо
avatar

  10  Nadejda-stav Сообщений: 157

  • 23 июля 2016, 16:26
+
0
Скажите. Как добавить дополнительное время работы? Хочу из этого советника сделать советника для торговли на новостях. Спасибо.
avatar

  10  Nadejda-stav Сообщений: 157

  • 24 июля 2016, 15:29
+
0
Когда у вас будет 3-й уровень на этом сайте, опубликуйте топик в этой группе. Возможно, Андрей(AM2) и добавит. (иногда Андрей помогает и пользователям меньшего уровня, но топик нужен от вас)
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 25 июля 2016, 00:02
+
0
Как получить 3-й уровень?
avatar

  10  Nadejda-stav Сообщений: 157

  • 25 июля 2016, 07:39
+
0
Как получить 3-й уровень?

Активность на сайте: полезные топики, обсуждения или просто обращаетесь к администрации сайта.
avatar

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

  • 25 июля 2016, 07:44
+
0
Если я предоставлю участникам форума редкую и полезную вещицу, это поможет мне поднять рейтинг?
avatar

  10  Nadejda-stav Сообщений: 157

  • 25 июля 2016, 15:10
+
+1
Поможет, если вещицу оценят и плюсанут за топик. Напишите несколько интересных вещей/топиков. Чем больше за них плюсанут — тем быстрее подрастёте по лвлам.
avatar

  20  Anatoly74 Сообщений: 3710 - Анатолий

  • 25 июля 2016, 16:00

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