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

Рейтинг 2146



РЕКОМЕНДУЮ



Скрипт для выгрузки ордеров в файл

Привет. Андрей, Сможешь написать скрипт, который при перетаскивании на любой график, должен выгружать текущие ордера, открытые и отложенные по всем инструментам?

Пример описания ордеров в файле.

CADJPY
Buy Stop 90.660
Stop Loss 89.940
Take Profit 91.055
EURAUD
Buy Limit 1.55170
Stop Loss 1.54890
Take Profit 1.56600
EURJPY
Buy 129.289
Sell stop 129.237
Take Profit 128.100
  • 0
  • Просмотров: 1548
  • 24 ноября 2021, 13:10
  • Syte
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
копировщик? :) 
на 30-е
avatar

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

  • 24 ноября 2021, 18:13
+
0
Пока не решил, но похоже все к этому идет. :) 
avatar

  14  Syte Автор Сообщений: 399

  • 24 ноября 2021, 18:45
+
0
сделал в виде советника, чтобы проверить работоспособность:




//+------------------------------------------------------------------+
//|                                                         Copy.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   PutButton("b",88,44,"BUY");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   string s="";

   if(ObjectGetInteger(0,"b",OBJPROP_STATE)==true)
     {
      int r=OrderSend(NULL,0,0.1,Ask,33,Bid-333*_Point,Bid+333*_Point,"",0,0,Green);
      ObjectSetInteger(0,"b",OBJPROP_STATE,false);
     }

   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         s+="\n "+OrderSymbol()+" "+string(OrderType())+" "+string(OrderOpenPrice())+" Stop Loss "+string(OrderStopLoss())+" Take Profit "+string(OrderStopLoss());
        }
     }

   int h=FileOpen("Copy.txt",FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(h,s);
   FileClose(h);

   Comment(s);
  }
//+------------------------------------------------------------------+



а это уже скрипт: www.opentraders.ru/downloads/3187/
avatar

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

  • 27 ноября 2021, 10:12
+
0
ДААААААА… Спасибо. Спасибо, все работает :) ;) ))
avatar

  14  Syte Автор Сообщений: 399

  • 29 ноября 2021, 09:35
+
0
Где то ошибка
Вот в файле
CADJPY 4 89.465 Stop Loss 88.58 Take Profit 88.58
CADJPY 3 89.958 Stop Loss 91.265 Take Profit 91.265
AUDJPY 4 81.375 Stop Loss 80.63 Take Profit 80.63

И есть еще момент, а возможно тип ордера выводить?

Пример в файле
CADJPY 4 89.465 Stop Loss 88.58 Take Profit 88.58
Но типа ордера нету. За место типа стоит «4» Хотя тип ордера buy stop.
Редактирован: 29 ноября 2021, 12:14
avatar

  14  Syte Автор Сообщений: 399

  • 29 ноября 2021, 12:13
+
0
0-бай
2-байлимит
4-байстоп
avatar

  16  ssg Сообщений: 817

  • 29 ноября 2021, 12:34
+
0
Это ясно, но проблема в том, что хотелось бы, видеть название типа ордера. А не цифру. Это возможно, или нет?
avatar

  14  Syte Автор Сообщений: 399

  • 29 ноября 2021, 12:35
+
0
Пробуйте советник:

//+------------------------------------------------------------------+
//|                Copy информация о открытых позициях и ордерах.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                         Copy.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   PutButton("b",88,44,"BUY");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   string s="";

   if(ObjectGetInteger(0,"b",OBJPROP_STATE)==true)
     {
      int r=OrderSend(NULL,0,0.1,Ask,33,Bid-333*_Point,Bid+333*_Point,"",0,0,Green);
      ObjectSetInteger(0,"b",OBJPROP_STATE,false);
     }

   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
        // s+="\n "+OrderSymbol()+" "+string(OrderType())+" "+string(OrderOpenPrice())+" Stop Loss "+string(OrderStopLoss())+" Take Profit "+string(OrderStopLoss());
         s+="\n "+OrderSymbol()+" "+string(GetNameOP(OrderType()))+" "+string(OrderOpenPrice())+" Stop Loss "+string(OrderStopLoss())+" Take Profit "+string(OrderStopLoss());
        }
     }

   int h=FileOpen("Copy.txt",FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(h,s);
   FileClose(h);

   Comment(s);
  }

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование торговой операции                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - идентификатор торговой операции                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
  switch (op) {
    case OP_BUY      : return("Buy");
    case OP_SELL     : return("Sell");
    case OP_BUYLIMIT : return("BuyLimit");
    case OP_SELLLIMIT: return("SellLimit");
    case OP_BUYSTOP  : return("BuyStop");
    case OP_SELLSTOP : return("SellStop");
    default          : return("Unknown Operation");
  }
}
//+------------------------------------------------------------------+
avatar

  16  ssg Сообщений: 817

  • 29 ноября 2021, 12:51
+
+1
Код скрипта не смотрел.Если все устраивает, то сделайте сами по аналогии с советником.
avatar

  16  ssg Сообщений: 817

  • 29 ноября 2021, 12:55
+
0
Урааа. Вопрос решил :) ;) )
//+------------------------------------------------------------------+
//|                                                         Copy.mq4 |
//|                                              Copyright 2021, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string s="";

   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         s+="\n "+OrderSymbol()+" "+string(GetNameOP(OrderType()))+" "+string(OrderOpenPrice())+" Stop Loss "+string(OrderStopLoss())+" Take Profit "+string(OrderTakeProfit());
        }
     }

   int h=FileOpen("Copy.txt",FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(h,s);
   FileClose(h);
  }
  //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование торговой операции                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    op - идентификатор торговой операции                                    |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
  switch (op) {
    case OP_BUY      : return("Buy");
    case OP_SELL     : return("Sell");
    case OP_BUYLIMIT : return("Buy Limit");
    case OP_SELLLIMIT: return("Sell Limit");
    case OP_BUYSTOP  : return("Buy Stop");
    case OP_SELLSTOP : return("Sell Stop");
    default          : return("Unknown Operation");
  }
}
//+------------------------------------------------------------------+
avatar

  14  Syte Автор Сообщений: 399

  • 29 ноября 2021, 13:04
+
0
CADJPY Buy Stop 89.465 Stop Loss 88.58 Take Profit 89.958
CADJPY Sell Limit 89.958 Stop Loss 91.265 Take Profit 0
AUDJPY Buy Stop 81.375 Stop Loss 80.63 Take Profit 81.768
Теперь как надо выводит :) ;) )
Спасибо за помощь
avatar

  14  Syte Автор Сообщений: 399

  • 29 ноября 2021, 13:05
+
0
:) 
avatar

  16  ssg Сообщений: 817

  • 29 ноября 2021, 13:52

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