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
@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 miei dubbi erano principalmente perché temevo che tali azioni eseguite ad ogni tick avrebbero avuto un notevole impatto negativo sulle prestazioni.
Janis Ozols: @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
Il moderatore Artem non sta discutendo. Il moderatore Artem sta discutendo :)
Perché isCrossing() non restituisce 2? La stessa isCrossing() ha una seconda voce if, ma poi non c'è nessuna voce if in OnTick() quando isCrossing() == 2. Cos'è questa sciocchezza...
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