Si può accedere a un ordine con il comando OrderSelect tramite il suo numero.
Domanda, è possibile conoscere in anticipo i numeri degli ordini esistenti, per non passarli tutti? Per esempio, possiamo memorizzare questo numero quando apriamo un nuovo ordine.
Capisco che questo numero è assegnato in ordine a partire da 1. Quali sono le possibili sfumature?
Grazie in anticipo.
Possiamo rivolgerci a questo ordine per il suo indice nella lista degli ordini (quando lo proviamo nel ciclo), o per il suo biglietto (se è conosciuto in anticipo).
Non desiderabile - in caso di qualsiasi guasto (riavvio dell'Expert Advisor, riavvio del terminale, guasto del sistema, ecc.), i ticket memorizzati possono essere persi. Quindi, devono essere memorizzati o in variabili globali del terminale, o in un file, il che è fattibile, ma più difficile della solita ricerca, che non viene fatta ad ogni tick, ma solo quando serve.
No. A partire dal numero 1, e in ordine crescente - solo nel tester.
Ci si può riferire ad esso per il suo indice nella lista degli ordini (quando si cerca nel ciclo), o per il suo biglietto (se è conosciuto in anticipo)
Non desiderabile - in caso di qualsiasi guasto (riavvio dell'EA, riavvio del terminale, guasto del sistema, ecc.), i biglietti memorizzati possono essere persi. Quindi, devono essere memorizzati o in variabili globali del terminale, o in un file, il che è fattibile, ma più difficile della solita ricerca, che non viene fatta ad ogni tick, ma solo quando serve.
No. A partire dal numero 1, e in ordine crescente - solo nel tester.
Per favore.
È possibile eseguire nel codice OnInit() nel ciclo OrdersTotal() e raccogliere tutte le informazioni sugli ordini aperti, in particolare OrderTicket()?
string orders[][3];
intOnInit() {
for (int n = OrdersTotal() + 1; n >= 0; n--) {
if (OrderSelect(n, SELECT_BY_POS, MODE_TRADES)) {
int i = (ArraySize(orders) / 3);
ArrayResize(orders, i + 1);
orders[i][0] = IntegerToString(OrderTicket());
orders[i][1] = IntegerToString(OrderType());
orders[i][2] = DoubleToString(OrderOpenPrice(), Digits);
}
}
return(INIT_SUCCEEDED);
}
Quando un ordine viene chiuso automaticamente da TP o SP, è possibile ottenere i dati di questo ordine?
È possibile eseguire il programma nel corpo OnInit() e raccogliere tutte le informazioni sugli ordini aperti, in particolare OrderTicket(), nel ciclo OrdersTotal()?
Quando un ordine viene chiuso automaticamente da TP o SP, è possibile ottenere i dati di questo ordine?
Sì, possiamo. E poi? Gli ordini possono cambiare nel tempo, e le informazioni raccolte durante l'inizializzazione non sono aggiornate.
Dobbiamo trovare l'ultimo ordine chiuso e ottenere tutte le informazioni necessarie su di esso.
È possibile. E poi? Gli ordini possono cambiare nel tempo e le informazioni su di essi, raccolte durante l'inizializzazione, diventeranno obsolete.
Bisogna trovare l'ultimo ordine chiuso e ottenere tutte le informazioni necessarie su di esso.
Durante BUY, SELL salvo i dati richiesti in un array e poi arrotolo questo array e a seconda del prezzo faccio le modifiche richieste (trasferimento SL a Breakeven, chiusura dell'ordine dopo l'inversione, etc.), indirizzando all'ordine richiesto tramite il ticket.
Ma ho ordini con TP e SL che possono chiudersi a mia insaputa. Non mi piace l'opzione di cercare l'ultimo ordine chiuso ogni tick e cercarlo nel mio array per correggerlo.
"Gli ordini possono cambiare nel tempo, e le informazioni raccolte su di essi durante l'inizializzazione diventeranno obsolete" . Suppongo che questo sia ciò che si intende - chiudere l'ordine?
L'unica opzione che vedo è quella di fare 2 cicli in un tick, il mio con gli ordini eOrdersTotal() e non mi piace nemmeno questo.
"Ma più complicato della solita forza bruta, che non viene fatta ad ogni spunta, ma solo quando serve" Si prega di condividere questo algoritmo.
È possibile eseguire il programma nel corpo OnInit() e raccogliere tutte le informazioni sugli ordini aperti, in particolare OrderTicket(), nel ciclo OrdersTotal()?
Quando un ordine viene chiuso automaticamente da TP o SP, è possibile ottenere i dati di questo ordine?
E perché abbiamo bisogno di convertire tutto questo in una stringa? È un tipo di stringa?
È possibile eseguire il programma nel corpo OnInit() e raccogliere tutte le informazioni sugli ordini aperti, in particolare OrderTicket(), nel ciclo OrdersTotal()?
Quando un ordine viene chiuso automaticamente da TP o SP, è possibile ottenere i dati di questo ordine?
struct SOrders
{
int ticket,
type;
double price;
} orders[];
intOnInit() {
for (int n = 0; n < OrdersTotal(); n++)
{
if(!OrderSelect(n, SELECT_BY_POS, MODE_TRADES)) continue;
int i = ArraySize(orders);
if(ArrayResize(orders, i+1) < i+1) continue;
orders[i].ticket = OrderTicket();
orders[i].type = OrderType();
orders[i].price = OrderOpenPrice();
}
return(INIT_SUCCEEDED);
}
Ecco, ho trovato il mio errore. Alcune persone hanno bisogno di esprimere la loro domanda per capire dopo come hanno sbagliato.
Purtroppo, a quanto pare, io sono uno di quei personaggi. (((
OrderSend
OrderSelect
Suppongo che lei intenda pernumero di biglietto?
Qualche insidia?
Saluti!
Si può accedere a un ordine con il comando OrderSelect tramite il suo numero.
Domanda, è possibile conoscere in anticipo i numeri degli ordini esistenti, per non passarli tutti? Per esempio, possiamo memorizzare questo numero quando apriamo un nuovo ordine.
Capisco che questo numero è assegnato in ordine a partire da 1. Quali sono le possibili sfumature?
Grazie in anticipo.
È possibile eseguire nel codice OnInit() nel ciclo OrdersTotal() e raccogliere tutte le informazioni sugli ordini aperti, in particolare OrderTicket()?
Quando un ordine viene chiuso automaticamente da TP o SP, è possibile ottenere i dati di questo ordine?
È possibile eseguire il programma nel corpo OnInit() e raccogliere tutte le informazioni sugli ordini aperti, in particolare OrderTicket(), nel ciclo OrdersTotal()?
Quando un ordine viene chiuso automaticamente da TP o SP, è possibile ottenere i dati di questo ordine?
Durante BUY, SELL salvo i dati richiesti in un array e poi arrotolo questo array e a seconda del prezzo faccio le modifiche richieste (trasferimento SL a Breakeven, chiusura dell'ordine dopo l'inversione, etc.), indirizzando all'ordine richiesto tramite il ticket.
Ma ho ordini con TP e SL che possono chiudersi a mia insaputa. Non mi piace l'opzione di cercare l'ultimo ordine chiuso ogni tick e cercarlo nel mio array per correggerlo.
"Gli ordini possono cambiare nel tempo, e le informazioni raccolte su di essi durante l'inizializzazione diventeranno obsolete" . Suppongo che questo sia ciò che si intende - chiudere l'ordine?
L'unica opzione che vedo è quella di fare 2 cicli in un tick, il mio con gli ordini eOrdersTotal() e non mi piace nemmeno questo.
"Ma più complicato della solita forza bruta, che non viene fatta ad ogni spunta, ma solo quando serve" Si prega di condividere questo algoritmo.
È possibile eseguire il programma nel corpo OnInit() e raccogliere tutte le informazioni sugli ordini aperti, in particolare OrderTicket(), nel ciclo OrdersTotal()?
Quando un ordine viene chiuso automaticamente da TP o SP, è possibile ottenere i dati di questo ordine?
E perché abbiamo bisogno di convertire tutto questo in una stringa? È un tipo di stringa?
È possibile eseguire il programma nel corpo OnInit() e raccogliere tutte le informazioni sugli ordini aperti, in particolare OrderTicket(), nel ciclo OrdersTotal()?
Quando un ordine viene chiuso automaticamente da TP o SP, è possibile ottenere i dati di questo ordine?
Perché tradurre tutto questo in una stringa? Tipo di stringa?