Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1124

 
Vladimir Karputov:

ENUM_TRADE_REQUEST_ACTIONS

Identificatore

Descrizione

AFFARE_AZIONE_COMMERCIALE

Piazzare un ordine di compravendita per un'esecuzione immediata con i parametri specificati (ordine di mercato)

AZIONE_COMMERCIALE_IN SOSPESO

Piazzare un ordine di compravendita per l'esecuzione in condizioni specificate (ordine pendente)

Esempio dell'operazione TRADE_ACTION_PENDING per piazzare un ordine in sospeso:

#property description "Example of placing pending orders"
#property script_show_inputs
#define  EXPERT_MAGIC 123456                             // MagicNumber of the expert
input ENUM_ORDER_TYPE orderType=ORDER_TYPE_BUY_LIMIT;   // order type
//+------------------------------------------------------------------+
//| Placing pending orders                                           |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- declare and initialize the trade request and result of trade request
   MqlTradeRequest request={0};
   MqlTradeResult  result={0};
//--- parameters to place a pending order
   request.action   =TRADE_ACTION_PENDING;                             // type of trade operation
   request.symbol   =Symbol();                                         // symbol
   request.volume   =0.1;                                              // volume of 0.1 lot
   request.deviation=2;                                                // allowed deviation from the price
   request.magic    =EXPERT_MAGIC;                                     // MagicNumber of the order
   int offset = 50;                                                    // offset from the current price to place the order, in points
   double price;                                                       // order triggering price
   double point=SymbolInfoDouble(_Symbol,SYMBOL_POINT);                // value of point
   int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);                // number of decimal places (precision)
   //--- checking the type of operation
   if(orderType==ORDER_TYPE_BUY_LIMIT)
     {
      request.type     =ORDER_TYPE_BUY_LIMIT;                          // order type
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;        // price for opening 
      request.price    =NormalizeDouble(price,digits);                 // normalized opening price 
     }
   else if(orderType==ORDER_TYPE_SELL_LIMIT)
     {
      request.type     =ORDER_TYPE_SELL_LIMIT;                          // order type
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point;         // price for opening 
      request.price    =NormalizeDouble(price,digits);                  // normalized opening price 
     }
   else if(orderType==ORDER_TYPE_BUY_STOP)
     {
      request.type =ORDER_TYPE_BUY_STOP;                                // order type
      price        =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening 
      request.price=NormalizeDouble(price,digits);                      // normalized opening price 
     }
   else if(orderType==ORDER_TYPE_SELL_STOP)
     {
      request.type     =ORDER_TYPE_SELL_STOP;                           // order type
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;         // price for opening 
      request.price    =NormalizeDouble(price,digits);                  // normalized opening price 
     }
   else Alert("This example is only for placing pending orders");   // if not pending order is selected
//--- send the request
   if(!OrderSend(request,result))
      PrintFormat("OrderSend error %d",GetLastError());                 // if unable to send the request, output the error code
//--- information about the operation
   PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
  }
//+------------------------------------------------------------------+
 
Vladimir Karputov:

ENUM_TRADE_REQUEST_ACTIONS

Identificatore

Descrizione

AFFARE_AZIONE_COMMERCIALE

Piazzare un ordine di compravendita per un'esecuzione immediata con i parametri specificati (ordine di mercato)

AZIONE_COMMERCIALE_IN SOSPESO

Piazzare un ordine di compravendita per l'esecuzione in condizioni specificate (ordine pendente)

Grazie!

 
Vladimir Karputov:

Esempio dell'operazione TRADE_ACTION_PENDING per piazzare un ordine in sospeso:

Vladimir, non puoi scriverlo in russo?
 
Artyom Trishkin:
Vladimir, non puoi scriverlo in russo?

Non si può. Perché ho citato per intero il riferimento. Altrimenti, è un azzardo: tutti hanno un "biglietto" e alcuni hanno "biglietti". Ecco perché le funzioni, l'aiuto e le citazioni dell'aiuto sono in inglese.

 
Vladimir Karputov:

Non si può. Perché ho citato per intero il riferimento. Altrimenti, è un azzardo: tutti hanno un "biglietto" e alcuni hanno "biglietti". Pertanto, le funzioni, il riferimento e le citazioni nel riferimento sono in inglese.

E hanno "biglietti" solo perché iniziano a tradurre con google :)
Nell'aiuto ufficiale russo, ci sono dei "biglietti".
In foresta-da-drow solo dalle traduzioni libere.
 

Ciao a tutti! Penso che la domanda sia principalmente per i professionisti (come risulta). È passata una settimana con una sola domanda sul codice.

Per esempio - sappiamo che la candela M5 contiene 5 candele M1 (per esempio, 00:00, 00:01, 00:02, 00:03 e 00:04). Inoltre considereremo solo questa congiunzione - cioè eseguiamo l'indicatore su M1 e vogliamo vedere le letture dell'indicatore da M5.

Cioè, per visualizzare correttamente i dati del TF centrale su quello inferiore, dovrei fare un ciclo di tutte le 5 barre del TF inferiore man mano che appaiono. Cioè la prima barra appare 00:00, poi 00:01 ecc. fino a 00:04 e dopo appare la successiva. Significa che il ciclo dovrebbe essere da 0 a 4 - questo è il massimo, mentre i vuoti nella storia non sono considerati. Il problema è che ottengo il ciclo da 0 a 5, e non ho abbastanza logica per arrivare a 4! Credetemi, sto lottando con questo da una settimana e sto davvero chiedendo il vostro aiuto. Qui sotto c'è un codice molto troncato dove il ciclo va a 5 invece che a 4. Voglio che sia 4!!!!!

#property copyright ""
#property link      ""
#property version   ""
#property indicator_chart_window

//+----------------------------------------------+
//| Входные параметры индикатора                 |
//+----------------------------------------------+
input ENUM_TIMEFRAMES TF=PERIOD_M5;
int LastCountBar;
datetime tt;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,    // количество истории в барах на текущем тике
                const int prev_calculated,// количество истории в барах на предыдущем тике
                const datetime &time[],
                const double &open[],
                const double& high[],     // ценовой массив максимумов цены для расчёта индикатора
                const double& low[],      // ценовой массив минимумов цены  для расчёта индикатора
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   datetime IndTime[1];
//--- объявления локальных переменных
   int limit,bar;
//--- индексация элементов в массивах как в таймсериях
   ArraySetAsSeries(time,true);
//--- расчёт стартового номера first для цикла пересчёта баров
   if(prev_calculated>rates_total || prev_calculated<=0) // проверка на первый старт расчёта индикатора
     {
      limit=100; // стартовый номер для расчёта всех баров
      LastCountBar=limit;
     }
   else
      limit=LastCountBar+rates_total-prev_calculated; // стартовый номер для расчёта новых баров

//--- основной цикл расчёта индикатора
   for(bar=limit; bar>=0; bar--)
     {
      //--- копируем вновь появившиеся данные в массив IndTime
      if(CopyTime(Symbol(),TF,time[bar],1,IndTime)<=0)
         return(0);
         
      if(time[bar]>=IndTime[0] && time[bar+1]<IndTime[0])
        {
         LastCountBar=bar;
         //--- Далее проводим вычисления индикатора МТФ ...............
         Print(bar," ",IndTime[0]);
         //---
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

Come si aggiunge una finestra di modifica della vista elenco?

https://www.mql5.com/en/docs/standardlibrary/controls/clistview

Ho la libreria di cui sopra. Voglio aggiungere una casella di modifica con un'etichetta all'interno di questa lista. Puoi dirmi come posso farlo? Ho provato, ma non funziona.

Documentation on MQL5: Standard Library / Panels and Dialogs / CListView
Documentation on MQL5: Standard Library / Panels and Dialogs / CListView
  • www.mql5.com
//|                                             ControlsListView.mq5 | //|                        Copyright 2017, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| defines                                                          |  INDENT_LEFT                         (11)      ...
 
Artyom Trishkin:
E hanno "biglietti" solo perché iniziano a tradurre con google :)
Nel riferimento ufficiale russo "tickety-boo".
Into the woods-da-drova solo dalle traduzioni libere.
OK, lo confesso: mi ha preso. Ha risposto rapidamente e non ha cambiato la lingua dell'aiuto 😎
 
La domanda è questa. Posso aprire 2 (o più) grafici al tocco di un pulsante in modo che siano posizionati verticalmente, occupando equamente tutto il monitor?
 
Vladimir Karputov:
OK, lo confesso: mi ha preso. Ha risposto rapidamente e non ha cambiato la lingua dell'aiuto 😎

Ricevuto ;)