Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1005

 

Mando una richiesta come questa per metterne una in sospeso. Ma non scade alla fine del giorno di negoziazione. Ho provatoORDER_TIME_SPECIFIED_DAY ma non funziona nemmeno questo. Qual è il problema?

MqlTradeRequest  request = {0};
         request.action = TRADE_ACTION_PENDING;
         request.symbol = _Symbol;
         request.volume = Lot;
         request.price  = high(Quant_Bars); 
         request.sl     = sl;
         request.tp     = tp;
         request.type   = ORDER_TYPE_BUY_STOP; 
         request.expiration = ORDER_TIME_DAY;
         request.magic = magicN;
MqlTradeResult result = {0};

if (OrderSend (request,result))
    {
    Print ("Ордер успешно отправлен, ошибок нет =  ", GetLastError());
    } else
       {
        Print ("Не удалось отправить запрос, ошибка = ", GetLastError());
       }
 

La funzione TrendLineVisible - dalla classe standard CCurve - è una linea di regressione?

Come posso fare in modo che questa linea appaia completamente sul grafico, invece di essere tagliata?


 

perché qui dice che ... posizione dovrebbe essere selezionata solo dal metodo Select o SelectByIndex,

se anche il metodo SelectByTicket funziona?

 

Aiutatemi con la funzione ArrayPrint - voglio ottenere gli ultimi 100 elementi di un array, e i primi 100 e gli ultimi 100.

               ArrayPrint(arr_P_val_X,8,NULL,Calc_XY-100,100,ARRAYPRINT_INDEX);//Ожидаю получить 100 последних элементов, выдает первые
               ArrayPrint(arr_P_val_X,ARRAYPRINT_LIMIT);//Хочу получить 100 и 100 последний - выдает весь массив - что не так?

Calc_XY - il numero di elementi nella matrice.

 

come posso ottenere il biglietto di un trade che è stato appena aperto?
Se usate la classe CTrade e la funzione Buy().

In mt4, la funzione OrderSend() dà immediatamente un biglietto.



C'è una funzione che dà un biglietto per una posizione in base all'indice di posizione?

o è necessario selezionare una posizione (select) prima?

 
multiplicator:

come posso ottenere il biglietto di un trade che è stato appena aperto?
Se usate la classe CTrade e la funzione Buy().

In mt4, la funzione OrderSend() dà immediatamente un biglietto.



C'è una funzione che dà un biglietto per una posizione in base all'indice di posizione?

o è necessario selezionare una posizione (select) prima?

In OnTradeTransaction con transazione di tipo trans.type == TRADE_TRANSACTION_DEAL_ADD si trova un biglietto nella struttura trans.position

struct MqlTradeTransaction 
  { 
   ulong                         deal;             // Тикет сделки 
   ulong                         order;            // Тикет ордера 
   string                        symbol;           // Имя торгового инструмента 
   ENUM_TRADE_TRANSACTION_TYPE   type;             // Тип торговой транзакции 
   ENUM_ORDER_TYPE               order_type;       // Тип ордера 
   ENUM_ORDER_STATE              order_state;      // Состояние ордера 
   ENUM_DEAL_TYPE                deal_type;        // Тип сделки 
   ENUM_ORDER_TYPE_TIME          time_type;        // Тип ордера по времени действия 
   datetime                      time_expiration;  // Срок истечения ордера 
   double                        price;            // Цена  
   double                        price_trigger;    // Цена срабатывания стоп-лимитного ордера 
   double                        price_sl;         // Уровень Stop Loss 
   double                        price_tp;         // Уровень Take Profit 
   double                        volume;           // Объем в лотах 
   ulong                         position;         // Тикет позиции 
   ulong                         position_by;      // Тикет встречной позиции 
  };
 
Ciao a tutti cari membri del forum, moderatori, amministratori ecc.
Si prega di spiegare come calcolare il profitto totale delle posizioni aperte in MQL5. Non c'è nessun problema in MQL4. Non sono pigro, ma non so come fare. Usando PositionGetDouble(POSITION_PROFIT), il profitto è calcolato solo per la prima posizione aperta. 

Ma in MQL4, OrderProfit() mostra ilprofitto su tutti gli ordini. Forse, mi sono perso qualcosa...
Scusa, ho dimenticato di specificare il tipo di conto hedge
 
Ramiz Mavludov:
Scusa, ho dimenticato di dire che il tipo di conto è hedge.

Dovresti urgentemente e senza dubbio frequentare un corso di sradicamento dell'analfabetismo. In mql5, così come in mql4, prima di lavorare con una posizione (in mql4, un ordine), è necessario selezionare la posizione. A differenza di mql4, in mql5 ricordo tre funzioni per selezionare una posizione. La documentazione ha una buona descrizione di essi. Il modo... Non consideratelo scortese.

 
Ramiz Mavludov:
Scusa, ho dimenticato di specificare, tipo di account hedge

Precedente CodiceCandle Breakdown 3, funzione CalculatePositions, profitto totale

//+------------------------------------------------------------------+
//| Calculate positions Buy and Sell                                 |
//+------------------------------------------------------------------+
void CalculatePositions(int &count_buys,int &count_sells,double &profit)
  {
   count_buys=0;
   count_sells=0;
   profit=0.0;

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            profit+=m_position.Commission()+m_position.Swap()+m_position.Profit();
            if(m_position.PositionType()==POSITION_TYPE_BUY)
               count_buys++;

            if(m_position.PositionType()==POSITION_TYPE_SELL)
               count_sells++;
           }
//---
   return;
  }

Dopo l'attraversamento di tutte le posizioni per questo simbolo e Magic, la variabile delprofitto mostrerà il profitto totale.

 
Vladimir Karputov:

Precedente CodiceCandle Breakdown 3, funzione CalculatePositions, profitto totale

Dopo l'attraversamento di tutte le posizioni per un dato simbolo e Magic, la variabile delprofitto mostrerà il profitto totale.

Grazie Vladimir.