Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1601

 
PapaYozh:

Questo va dall'indice zero, cioè dall'inizio.

Sono confuso... hai assolutamente ragione!
 
PapaYozh:

Questo cerca dall'indice zero, cioè dall'inizio.

PapaYozh:

Questo va dall'indice zero, cioè dall'inizio.

Ahh... Ora tutto ha un senso, grazie.

 
Maxim Kuznetsov:

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 errori :-) adattatelo alle vostre esigenze e usatelo

per favore dimmi cosa significa -"!" nel tuo codice?

Non lo capisco ancora troppo bene

o forse qualcun altro può spiegarmelo, oltre all'autore?

 
законопослушный гражданин:

per favore dimmi, cosa significa -"!" nel tuo codice?

Non l'ho ancora capito bene.

o qualcuno può spiegarmelo oltre all'autore?

! - questa è una negazione booleana, NOT

if { !OrderSelect() } si traduce in "se OrderSelect NON ha successo"

!= rispettivamente "NON uguale"

 
Maxim Kuznetsov:

! - è una negazione booleana, NOT

if { !OrderSelect() } si traduce come "se NON riesce OrderSelect".

!

grazie

 
Maxim Kuznetsov:

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, ha un sacco di errori :-) adattatelo alle vostre esigenze e usatelo

Potrei aver "pulito" il codice, ma questa linea mostra un avvertimento per (int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--)

possibile perdita di dati a causa della conversione del tipo

Non riesci a capire cosa c'è che non va?

 
законопослушный гражданин:

Mi sembra di aver ripulito il codice, ma su questa linea for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) appare l'avviso:

possibile perdita di dati a causa della conversione del tipo

Non riesco a capire cosa c'è che non va?

Ho confuso i parametri... è un casino comune quando si scrive "al volo" direttamente nel forum bypassando il terminale

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) dovrebbe essere

 
Maxim Kuznetsov:

Parametri confusi... confusione comune quando si scrive "al volo" direttamente nel forum bypassando il terminale

iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) dovrebbe essere

grazie

 
законопослушный гражданин:

Mi sembra di aver ripulito il codice, ma su questa linea for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) appare l'avviso:

possibile perdita di dati a causa della conversione del tipo

Non riesco a capire cosa c'è che non va?

Non riesco proprio a capire cosa c'è di sbagliato? Posso allegare tutta questa "cosa" al mio Expert Advisor ed eseguirla attraverso lo strategy tester con l'output delle informazioni nel test report?

funzionerà?

 

Qualche consiglio su come affrontare questo?

Nel tester sulla storia una semplice apertura di un ordine a volte causa un errore...

OrderSend(_Symbol,OP_SELL,0.5,Bid,0,0,0,NULL,0)
2021.08.26 14:56:33.375 2017.08.07 08:00:00  Trader EURUSD,H1: OrderSend error 3

ERR_INVALID_TRADE_PARAMETERS - che diavolo è questo e cosa significa?

Motivazione: