Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 70
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Per favore, ditemi perché la funzione OrdersTotal() scrive -1 quando cerca gli ordini.
Esempio: for (i=OrdersTotal()-1 ;i>=0; i--)
perché non solo OrdersTotal()?
Il conteggio degli ordini in questa funzione parte da 0 o da 1? Cioè, se c'è un ordine, OrdersTotal() è uguale a 0 o 1?
Per favore, ditemi perché la funzione OrdersTotal() scrive -1 quando cerca gli ordini.
Esempio: for (i=OrdersTotal()-1 ;i>=0; i--)
perché non solo OrdersTotal()?
Il conteggio degli ordini in questa funzione parte da 0 o da 1? Cioè, se c'è un ordine, OrdersTotal() è uguale a 0 o 1?
OrdersTotal() mostra la quantità, cioè, se c'è un ordine, alloraOrdersTotal() è uguale a 1, ma nella lista degli ordini, il rapporto inizia con 0
0 - primo ordine
1 - secondo ordine
2 - terzo
e così via.
Quindi, se iniziamo la ricerca dalla fine della lista, dobbiamosottrarre uno dal numero totale diOrdersTotal().
OrdersTotal() mostra la quantità, cioè se c'è un ordine, alloraOrdersTotal() sarà uno, ma nella lista degli ordini il rapporto parte da zero
0 - primo ordine
1 - secondo ordine
2 - terzo
e così via.
Quindi, se iniziamo la ricerca dalla fine della lista, dobbiamosottrarre uno dal numero totale diOrdersTotal().
Ma se la prima espressione non sottrae uno, non sarà un errore, se abbiamo un ordine, ci saranno due iterazioni. A meno che non ci sia bisogno di fare due iterazioni quando tutto ciò di cui abbiamo bisogno può essere fatto in una, quindi -1, giusto?
Sì corretto
Non è proprio così.
Si può usare il decremento del prefisso.
Dato che abbiamo una pila di ordini, perché non possiamo semplicemente tirare fuori quello che ci serve? (Quelli giusti) e farne ciò che vogliamo? Per esempio l'ordine (i-4)
Perché questo funzionerà solo nel tester MT4. O quando si fa trading su un solo simbolo e un solo questo EA.
Se ci pensi, l'EA è lo stesso per ogni coppia, solo il saldo del conto è comune (lo switch sarà l'ultimo)
il filtro va a tutti gli ordini che soddisfano la condizione market-open dall'Expert Advisor, se il simbolo coincide
cosa c'è che non va?
Se ci pensi, l'EA è lo stesso per ogni coppia, solo il saldo del conto è comune (lo switch sarà l'ultimo)
il filtro va a tutti gli ordini che soddisfano la condizione market-open dell'EA, se la simulazione corrisponde
cosa c'è che non va?
Beh, ti è già stato spiegato sopra cosa c'è di sbagliato. Gli ordini contano solo i propri, e prendono gli indici dell'array per il numero totale - si ottiene un array con celle vuote. E questo a cosa serve? E se l'array non fosse vuoto, i campi "inutili" conterranno spazzatura inutile che porterà a errori, e stiamo parlando di soldi.
Ok, è così che funziona.
{
int Ticket;
double orderopenprice;
int ordertype;
double profit;
double stoploss;
double lot;
};
myorder orders[];
int i;
int count1=0;
void CalcOrders()
{
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()<2))
orders[count1].Ticket=OrderTicket();
orders[count1].lot=OrderLots();
orders[count1].orderopenprice=OrderOpenPrice();
orders[count1].ordertype=OrderType();
orders[count1].profit=OrderProfit();
orders[count1].stoploss=OrderStopLoss();
count1++;
}
}
giusto?