axe44
Алек

 
Уровень 8


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

Рейтинг 1331



РЕКОМЕНДУЮ




Лучшее от axe44



Крутые памм-счета Комментариев 5
2017-10-24 11:58:58Рейтинг 0

БКС Комментариев 8
2017-08-11 02:57:12Рейтинг 0

торги
2017-01-26 00:01:37Рейтинг 0

HelloDual v3.0 Комментариев 3
2017-11-19 02:21:03Рейтинг 0

Создание советников бесплатно
2017-07-16 22:54:20Рейтинг 0

трал для сеточника

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

Ещё раз спасибо.

П.с. если можно, целиком робота по логике стоп-ордеров. А то мой что-то не больше ста ордеров за два года выдаёт.
  • 0
  • Просмотров: 609
  • 19 октября 2018, 15:55
  • axe44
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
если можно, целиком робота по логике стоп-ордеров
пишите тз целиком
avatar

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

  • 19 октября 2018, 17:38
+
0
avatar

  8  axe44 Автор Сообщений: 398 - Алек

  • 19 октября 2018, 21:35
+
0
//---------- блок подсчёта ордеров
limup=0;
limdn=0;
stopup=0;
stopdn=0;
up=0;
dn=0;

   for( i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0) up++;
            if(OrderType()==1) dn++;
            if(OrderType()==4) stopup++;
            if(OrderType()==5) stopdn++; 
            if(OrderType()==2) limup++;
            if(OrderType()==3) limdn++;  
           }
        }
     }
//-----------------------------------------------------------------


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

Советник: Программа ищет состояния покоя рынка и выставляет стоп ордера от нейкой цены Close[0]; Если рынок двигается, но при этом программа это движение определяет состоянием покоя, или после хорошего движения покой — то передвигаем стоп ордера ближе к этому состоянию Close[0]. Круто было бы если был безубыток.
avatar

  8  axe44 Автор Сообщений: 398 - Алек

  • 19 октября 2018, 21:41
+
0
на 24-е
avatar

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

  • 21 октября 2018, 11:01
+
0
avatar

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

  • 24 октября 2018, 21:34
+
0
Спасибо, дружище! Советник ордера в свет отправляет.
Пока не пойму где чего не хватает, но на оптимизацию поставил.
avatar

  8  axe44 Автор Сообщений: 398 - Алек

  • 24 октября 2018, 22:37
+
0

Привет, Андрей.
Что совсем не понял что ты мне дал. Конечно дарёному коню в зубы не смотрят… поэтому не жалуюсь. Спасибо.
Просто попрошу разъяснить эта задумка автора или как? Картинка хорошо показывает три вещи: количество ордеров сверху и снизу разное, при выставлении ордеров используется математическая прогрессия к расстоянию и иногда просто пробелы, стоп покупки выставляются уже снизу или это просто синяя подсветка к стоп ордерам. Весь код просмотрел но так и не увидел трала к сетке ордеров. Может плохо стал видеть?
Редактирован: 27 октября 2018, 09:03
avatar

  8  axe44 Автор Сообщений: 398 - Алек

  • 27 октября 2018, 09:01
+
0
кол подтягивает стоповые к цене:


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ModeOOP()
  {
   bool m;
   double delta=0,oop=0,sl=0,tp=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_BUYSTOP)
              {
               delta=NormalizeDouble(OrderOpenPrice()-Bid,Digits);
               if(delta>Delta*Point)
                 {
                  oop=NormalizeDouble(Bid+Delta*Point,Digits);
                  if(StopLoss>0) sl=NormalizeDouble(oop-StopLoss*Point,Digits);
                  if(TakeProfit>0) tp=NormalizeDouble(oop+TakeProfit*Point,Digits);
                  m=OrderModify(OrderTicket(),oop,sl,tp,0,Blue);
                  return;
                 }
              }

            if(OrderType()==OP_SELLSTOP)
              {
               delta=NormalizeDouble(Bid-OrderOpenPrice(),Digits);
               if(delta>Delta*Point)
                 {
                  oop=NormalizeDouble(Bid-Delta*Point,Digits);
                  if(StopLoss>0) sl=NormalizeDouble(oop+StopLoss*Point,Digits);
                  if(TakeProfit>0) tp=NormalizeDouble(oop-TakeProfit*Point,Digits);
                  m=OrderModify(OrderTicket(),oop,sl,tp,0,Red);
                  return;
                 }
              }
           }
        }
     }
  }
avatar

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

  • 28 октября 2018, 10:45
+
0
Если По Одному отложному ордеру — работать будет.
Андрей, я просил для сетки ордеров, то есть когда два и более ордеров с неиким шагом между ними. А то получается все ордера в кучу на одном расстоянии.
Спасибо.
avatar

  8  axe44 Автор Сообщений: 398 - Алек

  • 28 октября 2018, 11:48
+
0
такой я делал, смотри в базе. если не найдешь буду у себя в кодах смотреть
avatar

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

  • 28 октября 2018, 15:07

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