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

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от divelse



индикатор aтp Комментариев 20
2018-04-29 17:47:09Рейтинг 0

Вопрос программисту Комментариев 1
2018-05-04 12:01:38Рейтинг 0

Доработка заказа Комментариев 4
2019-04-29 20:44:58Рейтинг 0

Индикатор из полос Комментариев 5
2022-08-26 10:48:35Рейтинг 0

Прошу создать помойника Комментариев 3
2022-10-24 18:23:43Рейтинг 0

индикатор - закрытые сделки

Здравствуйте, знаю что вы не правите чужой код но всё же, нужен индикатор который будет выводить закрытые сделки, нашёл готовый индюк но в нем удаляются все стрелки при нанемении на график, нужно это устранить и в тоже время чтобы тогда работало удаление всех этих сделок после удаления индюка!

Могли бы либо исправить это либо кинуть индюк в котором это уже исправлено

Посути нужен индюк который выведет закрытые сделки из ИСТОРИИ СЧЕТА, всё по стандарту, без лишнего, может вы делали такое уже? обыскался в базе у вас, вроде нету, малоли… Спасибо


//+------------------------------------------------------------------+
//|                                                Show history.mq4  |
//|                                                         Valmars  |
//|                                                   valmars@bk.ru  |
//+------------------------------------------------------------------+
#property copyright "Valmars"
#property link      "valmars@bk.ru"
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start() 
  { 
// Удаление всех стрелок сделок с графика
   ObjectsDeleteAll(0,OBJ_ARROW);
// Удаление всех линий закрытых позиций с графика
   for(int i = 0; i < ObjectsTotal(); i++)
     {
       if(ObjectType(ObjectName(i)) == OBJ_TREND) 
           if(!ObjectGet(ObjectName(i), OBJPROP_RAY))
               ObjectDelete(ObjectName(i)); 
     }
   string name;  // Имя объекта-стрелки
   int Arrow;    // Код стрелки 
   double Color; // Цвет стрелки
//  Проверка для всех открытых и отложенных ордеров    
   for(i = 0; i < OrdersTotal(); i++) 
    { 
      OrderSelect(i, SELECT_BY_POS);   
      // Символы ордера и графика не совпадают
      if(OrderSymbol() != Symbol())
         continue;        // Следующий ордер
       switch(OrderType())  // Параметры стрелок
         {
           case OP_BUY:       Arrow = 1; Color = Aqua;
                              name = OrderTicket() + " buy " +
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at "+ 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break;         
           case OP_SELL:      Arrow = 2; Color = Red;
                              name = OrderTicket() + " sell " +
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS));
                              break; 
           case OP_BUYLIMIT:  Arrow = 1; Color = Yellow;
                              name = OrderTicket() + " buylimit " +
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS));
                              break; 
           case OP_BUYSTOP:   Arrow = 1; Color = Yellow;
                              name = OrderTicket() + " buystop " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break; 
           case OP_SELLLIMIT: Arrow = 2; Color = Yellow;
                              name = OrderTicket() + " selllimit " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " +
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS));
                              break; 
           case OP_SELLSTOP:  Arrow = 2; Color = Yellow;
                              name = OrderTicket() + " sellstop " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS));
                              break; 
         }
       // Стрелка открытия ордера
       ObjectCreate(name, OBJ_ARROW, 0, OrderOpenTime(), OrderOpenPrice());
       ObjectSet(name, OBJPROP_ARROWCODE, Arrow); 
       ObjectSet(name, OBJPROP_COLOR, Color);
     }
//  Проверка для всех закрытых и удалённых ордеров
   for(i = 0; i < HistoryTotal(); i++)  
    { 
      OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
      // Символы ордера и графика не совпадают
      if(OrderSymbol() != Symbol())
         continue;   // Следующий ордер
       switch(OrderType())
         {
           case OP_BUY:       Arrow = 1; Color = Aqua;
                              name = OrderTicket() + " buy " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " +
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS));
                              break;
           case OP_SELL:      Arrow = 2; Color = Red;
                              name = OrderTicket() + " sell " +
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(),
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break;
           case OP_BUYLIMIT:  Arrow = 1; Color = Yellow;
                              name = OrderTicket() + " buylimit " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break;
           case OP_BUYSTOP:   Arrow = 1; Color = Yellow;
                              name = OrderTicket() + " buystop " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break;
           case OP_SELLLIMIT: Arrow = 2; Color = Yellow;
                              name = OrderTicket() + " selllimit " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break;
           case OP_SELLSTOP:  Arrow = 2; Color = Yellow;
                              name = OrderTicket() + " sellstop " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break;
         }
       // Стрелка открытия ордера
       ObjectCreate(name, OBJ_ARROW, 0, OrderOpenTime(), OrderOpenPrice());
       ObjectSet(name, OBJPROP_ARROWCODE, Arrow); 
       ObjectSet(name, OBJPROP_COLOR, Color);
       switch(OrderType())
         {
           case OP_BUY:       Arrow = 1; Color = Aqua;
                              name = OrderTicket() + " buy  " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " +  
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break;
           case OP_SELL:      Arrow = 2; Color = Red;
                              name = OrderTicket() + " sell  " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break;
           case OP_BUYLIMIT:  Arrow = 1; Color = Yellow;
                              name = OrderTicket() + " buylimit  " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break;
           case OP_BUYSTOP:   Arrow = 1; Color = Yellow;
                              name = OrderTicket() + " buystop  " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS));
                              break;
           case OP_SELLLIMIT: Arrow = 2; Color = Yellow;
                              name = OrderTicket() + " selllimit  " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); break;
           case OP_SELLSTOP:  Arrow = 2; Color = Yellow;
                              name = OrderTicket() + " sellstop  " + 
                              DoubleToStr(OrderLots(), 2) + " " + 
                              OrderSymbol() + " at " + 
                              DoubleToStr(OrderOpenPrice(), 
                              MarketInfo(OrderSymbol(), MODE_DIGITS)); 
                              break;
         }       
       // Стрелка закрытия ордера
       ObjectCreate(name, OBJ_ARROW, 0, OrderCloseTime(), OrderClosePrice());
       ObjectSet(name, OBJPROP_ARROWCODE, 3); 
       ObjectSet(name, OBJPROP_COLOR, Color);
       // Прорисовка линий закрытых позиций
       name = OrderTicket() + DoubleToStr(OrderOpenPrice(), MarketInfo(OrderSymbol(), 
              MODE_DIGITS)) + "->" + DoubleToStr(OrderClosePrice(), 
              MarketInfo(OrderSymbol(), MODE_DIGITS));
       ObjectCreate(name, OBJ_TREND, 0, OrderOpenTime(), OrderOpenPrice(), 
                    OrderCloseTime(), OrderClosePrice());
       ObjectSet(name, OBJPROP_STYLE, STYLE_DOT); 
       ObjectSet(name, OBJPROP_WIDTH, 1);
       ObjectSet(name, OBJPROP_RAY, false);
       ObjectSet(name, OBJPROP_COLOR, Color); 
    }
   return(0);
  }
//+------------------------------------------------------------------+
  • 0
  • Просмотров: 3666
  • 23 сентября 2018, 14:31
  • divelse
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
я делал здесь такой вариант: www.opentraders.ru/downloads/1504/

еще один: www.opentraders.ru/downloads/1503/

сделки выделяются в истории и кидаются на график. так вообще без индюков.
avatar

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

  • 23 сентября 2018, 16:23
+
0
Спасибо но нужно именно индюк, смотреть закрытые сделки
я понимаю что можно перебросить, но могли бы вы найти или же сделать индикатор который показывает закрытые сделки. Пожалуйтста
avatar

  7  divelse Автор Сообщений: 152

  • 23 сентября 2018, 16:57
+
0
на 28-е
avatar

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

  • 23 сентября 2018, 19:36
+
0
avatar

  8  Kofa Сообщений: 42

  • 23 сентября 2018, 22:36
+
0
Здесь я заказывал Андрею сделать кнопку для показа закрытых сделок. zakaz.opentraders.ru/44451.html Очень удобно! Я еще доделал немного. Теперь первая кнопка показывает сделки. Вторая профит закрытых. Третья профит текущих.

Редактирован: 23 сентября 2018, 22:39
avatar

  8  Kofa Сообщений: 42

  • 23 сентября 2018, 22:38
+
0
но в нем удаляются все стрелки при нанемении на график, нужно это устранить и в тоже время чтобы тогда работало удаление всех этих сделок после удаления индюка!

сейчас при перетаскивании стрелки не удаляются, скрипт висит на графике, после удаления исчезают все стрелки и линии: www.opentraders.ru/downloads/2102/
avatar

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

  • 27 сентября 2018, 18:46
+
0
Андрей спасибо что отписались, при удалении скрипта удаляются все стрелки помимо стрелок этого индикатора, пожалуйста исправьте
avatar

  7  divelse Автор Сообщений: 152

  • 28 сентября 2018, 15:19
+
0
напишите с каким именем у вас стоят стрелки я попробую это учесть
avatar

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

  • 28 сентября 2018, 17:34
+
0
Спасибо, сейчас попробую узнать
avatar

  7  divelse Автор Сообщений: 152

  • 28 сентября 2018, 18:09
+
0
а можно ли в этом скрипте задать своё имя которое бы точно не было ни в 1 из индикаторов тобишь своё
А удалять по префиксу(может чушь написал)
avatar

  7  divelse Автор Сообщений: 152

  • 28 сентября 2018, 18:10
+
0
Андрей нашёл причину очень давно)
в этом скрипте удаляются вообще все стрелки:
// Удаление всех стрелок сделок с графика
   ObjectsDeleteAll(0,OBJ_ARROW);
// Удаление всех линий закрытых позиций с графика
   ObjectsDeleteAll(0,OBJ_TREND);


Пожалуйста задайте как то своё личное, бин не знаю как написать, но в скрипте удаляются сразу все стрелки и линии а мне нужно чтобы удалялись только те стрелки и те линии которые работают от индикатора, пожалуйста разберитесь что я написал) Спасибо!
avatar

  7  divelse Автор Сообщений: 152

  • 28 сентября 2018, 18:13
+
0
нормально написал. посмотрю сегодня
avatar

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

  • 28 сентября 2018, 18:22
+
0
так нормально? www.opentraders.ru/downloads/2102/
avatar

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

  • 28 сентября 2018, 23:41
+
0
да вроде бы идеально, Спасибо огромное)))
avatar

  7  divelse Автор Сообщений: 152

  • 29 сентября 2018, 05:26
+
0
Андрей все круто работает, пожалуйста подскажите как правильно сделать, у вас это займет не более минуты, а у меня мозгов нехватает:
<code>
     if(lparam==(StringGetChar(KNOPKA_P,0)))
     {
        //тут нужно указать название любой стрелки или же линии которое присутствует на графике
        if(ObjectFind(0,"sh569296869 selllimit 0.03 GBPUSD at 1.3561")>=0)
        {             
           //тут удаление
           for(int ihist=ObjectsTotal()-1; ihist>=0; ihist--)
           {
           if(StringFind(ObjectName(ihist),"sh",0)>=0) ObjectDelete(ObjectName(ihist));
           }
           //тут удаление
        }
      else
        {  
тут создается сам этот индюк(переделка со скрипта)
        }
     }
</code>
так работает но в коде прописано название: sh569296869 selllimit 0.03 GBPUSD at 1.3561
как можно задать имя? Пожалуйста посмотрите))
пытался пытался ругается if и else
Редактирован: 29 сентября 2018, 19:03
avatar

  7  divelse Автор Сообщений: 152

  • 29 сентября 2018, 06:52
+
0
т.е я вручную посмотрел название и ввел, все работает, но как задать имя чтобы оно работало, не написав в ручную?
avatar

  7  divelse Автор Сообщений: 152

  • 29 сентября 2018, 10:03

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