[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 227

 
Neo333:
Ciao, ecco il problema: l'EA imposta ordini limite pendenti, poi il prezzo si muove e gli ordini diventano ordini a mercato. Tutto funziona, ma su alcuni ordini c'è un glitch assolutamente poco chiaro, poiché tutti gli ordini sono impostati attraverso una certa costante fissa "K", la distanza tra loro dovrebbe essere sempre una costante (Rn+1 = Rn + "K"). Tuttavia, non abbiamo fortuna; l'ordine è aperto, il prezzo è indicato e tutto è controllato ma la distanza dall'ordine precedente a quello successivo non è uguale a "K". Se controlliamo i risultati delle operazioni aritmetiche con i prezzi, cioè se semplicemente sottraiamo e controlliamo il risultato, è uguale a "K"; tuttavia il confronto logico == mostra ancora falso e questo porta l'EA ad aprire costantemente ordini a quel prezzo e quindi a "pensare" che non ci sia alcun ordine. Scusate se è troppo lungo, volevo solo spiegare in modo più dettagliato. Onestamente, non capisco davvero cosa fare :(
Se confrontate per ==, allora usate NormalizeDouble, in generale il migliore MathAbs(Price1-Price2)<delta
 
VladimirR:

Grazie mille! Ma c'è questo 2011.09.30 21:26:49 TestGenerator: unmatched data error (volume limit 13634 at 2011.07.19 20:00 exceeded)

Per quanto ho capito, questo messaggio non riguarda l'Expert Advisor, ma vorrei comunque sapere come capirlo?



Incoerenza nella storia dei tempi. https://www.mql5.com/ru/forum/108760
 
sergeev:

Aiuta a fissare la funzione


73
Eugene1 30.09.2011 16:19

Sto cercando di scrivere una funzione che determini il prezzo di chiusura dell'ultimo ordine (per il tempo più vicino all'ora corrente)

Lo scrivo così:


Ma

do

uble PriceCloseLastPos(string smb = "", int cmd = -1, int mMin = -1, int mMax = -1) {
int ticketDateTime=0;
int orderTicket=-1;
double closePrice = 0;
int ordTotal = OrdersTotal();
if (smb == "0") smb = Symbol();
for (int i = 0; i < ordTotal; i++) {
se (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
se (OrderSymbol() == smb || smb == "") {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
se (cmd < OP_BUY || OrderType() == cmd) {
se (mMin < 0 || (OrderMagicNumber() >= mMin && OrderMagicNumber() <= mMax)) {
se (ticketDateTime < OrderCloseTime()) {
ticketDateTime = OrderCloseTime();
orderTicket = OrderTicket();
closePrice = OrderClosePrice();
}
}
}
}
}
}
}
if(orderTicket > -1) OrderSelect(orderTicket, SELECT_BY_TICKET, MODE_HISTORY );
return(closePrice);
}

Ma per qualche motivo, la funzione restituisce i dati del primo ordine aperto nel tester.

In realtà questo è il mio obiettivo intermedio. Volevo scrivere una funzione che desse l'ultimo prezzo di chiusura di un ordine parziale (non per l'intero volume del lotto), ma non so come fare...

int ordTotal = OrdersTotal();

Invece...

int ordTotal = OrdersHistoryTotal();

... Avanti ...

if(orderTicket > -1) OrderSelect(orderTicket, SELECT_BY_TICKET, MODE_HISTORY );

Qui vedo che la tua conoscenza non è molto buona. Quando si seleziona un ordine per ticket, il parametro pool viene ignorato. Cioè, è inutile scrivere MODE_HISTORY - questo parametro si riferisce solo alla selezione per indice.

Se un ordine è stato selezionato per ticket, devi controllare il tempo di chiusura per assicurarti che sia stato selezionato dalla lista degli ordini chiusi. Deve essere maggiore di zero - solo le posizioni chiuse hanno questo parametro >0.

 
Sul timeframe a 5 minuti nel terminale di trading MT4, la storia non viene visualizzata. Può essere risolto?
 
rosman:
Sul timeframe a 5 minuti nel terminale di trading MT4, la storia non viene visualizzata. Può essere risolto?
Mi scuso per la domanda stupida. Volevo dire che la storia prima del novembre 2010 non viene visualizzata :)
 
rosman:
Mi scuso per la domanda schietta. Volevo dire che la storia prima del novembre 2010 non viene visualizzata :)

Allora non esiste. Si può anche chiarire. Prova a fare più barre sul grafico nelle impostazioni di MT4.

Si risolve scaricando o comprando una storia più lunga.

 
Zhunko:

Allora non esiste. Si può anche chiarire. Prova a fare più barre sul grafico nelle impostazioni di MT4.

Questo può essere risolto scaricando o comprando una storia più lunga.

Servizio>Impostazioni> scheda Grafici >il numero massimo di barre nella finestra era 65 000 --> l'ho cambiato in 100 000 o più, ancora solo novembre 2010 è l'ultimo. L'archivio delle quotazioni per questo strumento e timeframe è completamente caricato - fino a novembre 1999
 
Qual è il numero massimo di barre nella storia? Forse la storia è già tagliata.
 
Zhunko:
Qual è il numero massimo di barre nella storia? Forse la storia è già tagliata.
Vale 10.000.000.
 
Carica l'archivio. Darò un'occhiata al mio.
Motivazione: