Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 100

 
ulong  HistoryDealGetTicket(
   int  index      // номер сделки
   );

Cos'è un numero di transazione?

Come si seleziona l'ultimo trade? Indice 0?

Ho un conto con una posizione aperta e una storia di scambi. Voglio selezionare l'ultimo trade:

#include <Trade\DealInfo.mqh>  

CDealInfo deal;  

   for(int n=20;n>=0;n--)
     {
      deal.SelectByIndex(n);
      Print("Тикет сделки=",deal.Ticket()," n=",n);
     }


Tutte le zecche 0...
 
tor4en:
ulong  HistoryDealGetTicket(
   int  index      // номер сделки
   );

Cos'è un numero di transazione?

Vedere la descrizione della funzione HistoryDealGetTicket(). C'è anche un esempio di come lavorare con una lista di offerte.
 
Yedelkin:
Vedere la descrizione della funzione HistoryDealGetTicket(). C'è anche un esempio di come lavorare con la lista delle offerte.
Non è chiaro come lavorare con la funzione SelectByIndex() della libreria standard.
 
tor4en Non è chiaro come gestire la funzione SelectByIndex() della libreria standard.
Ho cercato di suggerire una risposta alla tua domanda "Cos'è un numero di transazione? Possiamo supporre che lei abbia affrontato questa domanda?
 
Yedelkin:
Ho cercato di suggerire una risposta alla tua domanda "Cos'è un numero di transazione? Possiamo supporre che lei abbia affrontato questa domanda?
Potete, grazie. Potete dirmi se è possibile selezionare l'ultima offerta su una posizione senza passare attraverso le offerte e confrontare i tempi o i loro biglietti?
 
tor4en: Sapete se è possibile selezionare l'ultima operazione di una posizione senza passare attraverso le operazioni e confrontare i tempi o i tick?

1. Sfortunatamente, cerco di non usare la Libreria Standard, quindi non posso suggerire correttamente come lavorare con il metodo SelectByIndex(). Posso solo notare che la classe CDealInfo stessa è posizionata come una classe per lavorare con le proprietà delle transazioni, cioè i problemi di ottenere la lista delle transazioni sembrano essere lasciati fuori.

2. Come sapete, il metodo SelectByIndex() usa semplicemente la funzione HistoryDealGetTicket(). Dalla descrizione di questafunzione segue che prima di accedere all'affare è necessario ottenere la lista di tutti gli affari . In particolare,

//--- запросим историр ю сделок в указанном интервале
   HistorySelect(from_date,to_date);
//--- общее количество в списке сделок
   int deals=HistoryDealsTotal();
//--- теперь обработаем каждую сделку
   for(int i=0;i<deals;i++)
     {
      deal_ticket=HistoryDealGetTicket(i);
      ...
     }

Circa un anno fa, ho chiesto sul forum, se è possibile considerare che l'ultimo affare nella lista ha sempre un indice di HistoryDealsTotal()-1, ma non ho ricevuto una risposta (o non ho notato che ne dubito). Usando il metodo della prova scientifica, non ho trovato una confutazione di questa tesi. Così, logicamente, ogni nuovo affare, le cui informazioni sono ricevute nel terminale di base, dovrebbe semplicemente aumentare la lista degli affari di uno e, rispettivamente, gli indici nella lista degli affari sarebbero assegnati ad ogni nuovo affare in ordine crescente. Come è in realtà - non so.

3. Suggerisco anche di leggere l'articoloOrdini, posizioni e compravendite in MetaTrader 5 e (non l'ho letto io stesso) - Come usare le classi commerciali della Standard Library quando si scrive un Expert Advisor.

Questo è tutto :)

 
HistoryDealsTotal()-1
Questa sembra essere una buona idea. Se stiamo cercando accordi per posizione specifica, è meglio usare HistorySelectByPosition(position_ID). Grazie.
Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
Торговые функции / HistorySelectByPosition - Документация по MQL5
 
tor4en: Se stiamo cercando accordi su una posizione specifica, è meglio usare HistorySelectByPosition().
Esattamente giusto :)
 
Ciao!!!

Esperti, aiuto, per favore. Ho costruito due EAs per, per così dire, effetto sinergico, i più semplici sembrano collegarsi, ma questo non si compila, anche se ho fatto tutto correttamente come con il precedente. Ecco cosa dà

'Supervisor' - la funzione può essere dichiarata solo nell'ambito globale 20_200_pips_MQL5_v1.mq5 360 18

'Perceptron' - la funzione può essere dichiarata solo nell'ambito globale 20_200_pips_MQL5_v1.mq5 418 8

'basicTradingSystem' - la funzione può essere dichiarata solo nell'ambito globale 20_200_pips_MQL5_v1.mq5 434 6

La funzione può essere dichiarata solo nell'ambito globale

Sono davvero confuso: dov'è l'ambito globale

 
chipo: Ho collegato due EAs per una sorta di effetto sinergico, i più semplici sembrano collegarsi, ma questo non si compila, anche se ho fatto tutto correttamente come con il precedente. Questo è ciò che dà

'Supervisor' - la funzione può essere dichiarata solo nell'ambito globale 20_200_pips_MQL5_v1.mq5 360 18

'Perceptron' - la funzione può essere dichiarata solo nell'ambito globale 20_200_pips_MQL5_v1.mq5 418 8

'basicTradingSystem' - la funzione può essere dichiarata solo nell'ambito globale 20_200_pips_MQL5_v1.mq5 434 6

La funzione può essere dichiarata solo nell'ambito globale

Sono davvero confuso: dov'è l'ambito globale

Tali messaggi appaiono, per esempio, quando una funzione è dichiarata dentro un'altra. Vedi se c'è qualcosa del genere nel codice:

func_1()
   {
    void  func_2()...
   }