← К каталогу
Исходный код · ID 1299

showordersonchart.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данный индикатор для MetaTrader 4 отображает открытые и закрытые ордера на графике в виде графических объектов. Он использует функции работы с ордерами MQL4 для сбора данных о текущих позициях и истории ордеров по текущему символу, а затем создаёт на графике вертикальные линии, стрелки и текстовые метки.

Для каждого открытого ордера отрисовывается пунктирная вертикальная линия во времени открытия, стрелка по цене открытия и текст с типом ордера, ценой, временем и информацией о текущем эквити. Для закрытых ордеров дополнительно отображаются цена и время закрытия, баланс и маркер в виде креста по цене закрытия.

Объекты раскрашиваются в зависимости от результата: зелёный цвет при положительном результате, тёмно-красный — при отрицательном. Индикатор автоматически обновляет отображение при изменении количества ордеров, проверяя это в функции start(). Параметры не определены, индикатор работает с настройками по умолчанию, фильтруя ордера только по текущему символу графика и типам OP_BUY и OP_SELL.

Получить полный код

Поиск по коду файла

#property indicator_chart_window

     int iOrdersTotal = 0;
     int iOpenedOrders = 0;        // ?????????? ???????? ??????? ?? ??????? ???????????
     int aOpenedOrderTypes[0];
  string aOpenedOrderSymbols[0];
datetime aOpenedOrderOpenTimes[0];
  double aOpenedOrderOpenPrices[0];
     int aOpenedOrderTickets[0];
  double aOpenedOrderProfits[0];
  double aOpenedOrderSwaps[0];  
  double aOpenedOrderLots[0];    

     int iOrdersHistoryTotal = 0;
     int iClosedOrders = 0;
     int aClosedOrderTypes[0];
  string aClosedOrderSymbols[0];
datetime aClosedOrderOpenTimes[0];
datetime aClosedOrderCloseTimes[0];
  double aClosedOrderOpenPrices[0];
  double aClosedOrderClosePrices[0];
     int aClosedOrderTickets[0];
  double aClosedOrderProfits[0];     
  double aClosedOrderSwaps[0];
  double aClosedOrderLots[0];  

  string sSymbol;

int init()  {
      // код доступен только после оплаты
   }
int deinit()  {  fDeleteOrderObjects ();  }

void fInitOrders(bool bAll=true)  {
    int iOrderType;
    int iCounter = 0;
    string sOrderSymbol;

    /* ???????? ?????? */

    iOrdersTotal=OrdersTotal();
    if  (iOpenedOrders>0)  {
        ArrayResize(aOpenedOrderTypes,0);
        ArrayResize(aOpenedOrderSymbols,0);
        ArrayResize(aOpenedOrderOpenTimes,0);
        ArrayResize(aOpenedOrderOpenPrices,0);
        ArrayResize(aOpenedOrderTickets,0);
        ArrayResize(aOpenedOrderProfits,0);        
        ArrayResize(aOpenedOrderSwaps,0);                
        ArrayResize(aOpenedOrderLots,0);
        iOpenedOrders=0;
    }
    for(int i=0;i<iOrdersTotal;i++)
        if (OrderSelect(i,SELECT_BY_POS)==true)  {
            iOrderType=OrderType();
            sOrderSymbol=OrderSymbol();
            if (sOrderSymbol==sSymbol && (iOrderType == OP_BUY || iOrderType == OP_SELL))  {
                iOpenedOrders++;
                ArrayResize(aOpenedOrderTypes,iOpenedOrders);
                ArrayResize(aOpenedOrderSymbols,iOpenedOrders);
                ArrayResize(aOpenedOrderOpenTimes,iOpenedOrders);
                ArrayResize(aOpenedOrderOpenPrices,iOpenedOrders);
                ArrayResize(aOpenedOrderTickets,iOpenedOrders);            
                ArrayResize(aOpenedOrderProfits,iOpenedOrders);
                ArrayResize(aOpenedOrderSwaps,iOpenedOrders);                
                ArrayResize(aOpenedOrderLots,iOpenedOrders);                                
                aOpenedOrderTypes[iOpenedOrders-1]=iOrderType;
                aOpenedOrderSymbols[iOpenedOrders-1]=sOrderSymbol;
                aOpenedOrderOpenTimes[iOpenedOrders-1]=OrderOpenTime();
                aOpenedOrderOpenPrices[iOpenedOrders-1]=OrderOpenPrice();
                aOpenedOrderTickets[iOpenedOrders-1]=OrderTicket();                
                aOpenedOrderProfits[iOpenedOrders-1]=OrderProfit();
                aOpenedOrderSwaps[iOpenedOrders-1]=OrderSwap();                
                aOpenedOrderLots[iOpenedOrders-1]=OrderLots();                                
            }

        }

    /* ???????? ?????? */
    if (bAll)  {
        iOrdersHistoryTotal=OrdersHistoryTotal();
        if  (iClosedOrders>0)  {
            ArrayResize(aClosedOrderTypes,0);
            ArrayResize(aClosedOrderSymbols,0);
            ArrayResize(aClosedOrderOpenTimes,0);
            ArrayResize(aClosedOrderCloseTimes,0);        
            ArrayResize(aClosedOrderOpenPrices,0);
            ArrayResize(aClosedOrderClosePrices,0);        
            ArrayResize(aClosedOrderTickets,0);
            ArrayResize(aClosedOrderProfits,0);        
            ArrayResize(aClosedOrderSwaps,0);
            ArrayResize(aClosedOrderLots,0);        
            iClosedOrders=0;
        }
        for(int j=0;j<iOrdersHistoryTotal;j++)
            if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)==true)  {
                iOrderType=OrderType();
                sOrderSymbol=OrderSymbol();
                if (sOrderSymbol==sSymbol && (iOrderType == OP_BUY || iOrderType == OP_SELL))  {
                    iClosedOrders++;
                    ArrayResize(aClosedOrderTypes,iClosedOrders);
                    ArrayResize(aClosedOrderSymbols,iClosedOrders);
                    ArrayResize(aClosedOrderOpenTimes,iClosedOrders);
                    ArrayResize(aClosedOrderCloseTimes,iClosedOrders);                
                    ArrayResize(aClosedOrderOpenPrices,iClosedOrders);
                    ArrayResize(aClosedOrderClosePrices,iClosedOrders);                
                    ArrayResize(aClosedOrderTickets,iClosedOrders);            
                    ArrayResize(aClosedOrderProfits,iClosedOrders);                            
                    ArrayResize(aClosedOrderSwaps,iClosedOrders);
                    ArrayResize(aClosedOrderLots,iClosedOrders);                
                    aClosedOrderTypes[iClosedOrders-1]=iOrderType;
                    aClosedOrderSymbols[iClosedOrders-1]=sOrderSymbol;
                    aClosedOrderOpenTimes[iClosedOrders-1]=OrderOpenTime();
                    aClosedOrderCloseTimes[iClosedOrders-1]=OrderCloseTime();                
                    aClosedOrderOpenPrices[iClosedOrders-1]=OrderOpenPrice();
                    aClosedOrderClosePrices[iClosedOrders-1]=OrderClosePrice();                
                    aClosedOrderTickets[iClosedOrders-1]=OrderTicket();                
                    aClosedOrderProfits[iClosedOrders-1]=OrderProfit();                                
                    aClosedOrderSwaps[iClosedOrders-1]=OrderSwap();
                    aClosedOrderLots[iClosedOrders-1]=OrderLots();

                }

            }
    }     
}

void fDrawOrders(bool bAll=true)  {
    for(int i=0;i<iOpenedOrders;i++)  {               
        ObjectCreate("rukukiLine"+aOpenedOrderTickets[i],OBJ_VLINE,0,aOpenedOrderOpenTimes[i],0,0,0,0,0);
        ObjectSet("rukukiLine"+aOpenedOrderTickets[i],OBJPROP_BACK,true);
        ObjectSet("rukukiLine"+aOpenedOrderTickets

Показано первые 50% кода (символов: 8461)

Открыть по тарифу

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

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
846,10₽ ≈ $10.34