Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1598
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
solo per aggiungere, NON è GARANTITO che il terminale abbia e dia una storia sufficiente.
nell'esempio precedente non c'è alcun riferimento alla storia
quindi è garantito che il risultato di OrderSelect() sia vero
UPD: OrderSelect in 4 funziona molto bene, provato una volta - per gli ordini a mercato il tempo di accesso alle proprietà dell'ordine.... è davvero milioni di volte al secondo, non voglio cercarlo, penso che stavo discutendo con il moderatore Artem, ma come si dice "tutte le punte sono diverse", mi piace - tienilo
Salve, c'è bisogno di dati sul prelievo di ogni transazione.
Qualcuno può incontrare uno script per raccogliere tali statistiche e produrre un output sotto forma di rapporto?
Grazie
Salve, c'è bisogno di dati sul prelievo di ogni transazione.
Qualcuno può incontrare uno script per raccogliere tali statistiche e produrre un output sotto forma di rapporto?
grazie
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
è "scritto a mano", non testato, pieno di bug :-) basta modificarlo secondo le proprie esigenze e usarlo
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
scritto "a mano", non controllato, pieno di errori :-) adattati alle tue esigenze e usa
Grazie, cercherò di capirlo!
@Igor Makanu, grazie mille per le tue risposte sull'ordinamento degli ordini nel terminale. Probabilmente li salverò come array di strutture e li ordinerò io stesso. I dubbi erano principalmente perché temevo che tali azioni eseguite ad ogni tick avrebbero avuto un notevole impatto negativo sulle prestazioni.
Allora perché ordinare ad ogni spunta? Basta solo quando il numero di voci cambia o la lista cambia completamente...
nell'esempio precedente non c'è alcun riferimento alla storia
quindi è garantito che il risultato di OrderSelect() sia vero
UPD: OrderSelect in 4 funziona molto bene, lo stavo testando una volta - per gli ordini a mercato il tempo di accesso alle proprietà dell'ordine.... è davvero milioni di volte al secondo, non voglio cercarlo, penso che stavo discutendo con il moderatore Artem, ma come si dice "tutte le punte sono diverse", mi piace - tienilo