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

 
Vitaly Muzichenko:

Grazie, per qualche motivo non funziona così con il lotto.

double GetLotLastOrder(string sy="", int op=-1, int mn=-1) {
double   r=-1;
  if (sy=="0") sy=Symbol();
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()>1 && OrderType()<6) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (r>OrderLots() || r==-1) {
                r=OrderLots();
  }}}}}}}
  return(r);
}

Come faccio a restituire il lotto del quattordicesimo sell stop sul lotto istantaneo = 0,03?

 
Marina Korotkih:

Grazie, per qualche motivo non funziona così con il lotto.

double GetLotLastOrder(string sy="", int op=-1, int mn=-1) {
  if (sy=="0") sy=Symbol();
  double r=MarketInfo(sy, MODE_MINLOT);
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()>1 && OrderType()<6) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (r>OrderLots()) {
                r=OrderLots();
  }}}}}}}
  return(r);
}
Questo è il minimo, se avete bisogno dell'ordine più recente, allora lo farò ora
 
Vitaly Muzichenko:

Questo è il minimo, se avete bisogno dell'ordine più recente, allora lo farò ora

Qui si cerca il lotto più lontano dal prezzo

double GetLotLastOrder(string sy="", int op=-1, int mn=-1) {
datetime t=0;
double r=-1,l=0;
if (sy=="0") sy=Symbol();
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()>1 && OrderType()<6) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (r>OrderOpenPrice() || r==-1) {
                r=OrderOpenPrice();
                l=OrderLots();
  }}}}}}}
  return(l);
}
 
Marina Korotkih:

Grazie, per qualche motivo non funziona così con il lotto.

double GetLotLastOrder(string sy="", int op=-1, int mn=-1) {
double   r=-1;
  if (sy=="0") sy=Symbol();
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()>1 && OrderType()<6) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (r>OrderLots() || r==-1) {
                r=OrderLots();
  }}}}}}}
  return(r);
}

Come faccio a restituire il lotto del quattordicesimo sell stop nell'istantanea lot= 0,03?



No la funzione funziona correttamente, perché il valore di ritorno non è 1 e14 ordini ma 2?

è un tester?

Per me funziona correttamente.

 
Vitaly Muzichenko:

Qui si cerca il lotto più lontano dal prezzo


Grazie, questo ha senso. Trovato, ora puoi scoprire tutto quello che hai bisogno di sapere su di esso )

 
Alekseu Fedotov:

No la funzione funziona correttamente, perché il valore di ritorno non è 1 e14 ordini ma 2?

è un tester?

Per me funziona correttamente.

Devi ordinare per prezzo, perché non puoi cercare per dimensione, la griglia può essere mista, e troverai o il più grande o il più piccolo, ma non il primo e non l'ultimo
 
Marina Korotkih:

Grazie, questo ha senso. Trovato, ora puoi scoprire tutto quello che c'è da sapere su di esso )

Per trovare tutte le informazioni su un ordine o una posizione, è meglio farlo per ticket

if(OrderSelect(i, SELECT_BY_TICKET)) {
  // всё что угодно
}
 
Alekseu Fedotov:

...perché il valore di ritorno non è 1 e14 ordini ma 2?


Perché io lo chiamo così

GetOrderOpenPrice(Symbol(),OP_SELLSTOP,_Magic)
 
Vitaly Muzichenko:

Per conoscere tutti i dettagli di un ordine o di una posizione, è meglio farlo dal biglietto

if(OrderSelect(i, SELECT_BY_TICKET)) {
  // всё что угодно
}

Ma per fare questo, dobbiamo prima conoscere il biglietto dell'ultimo ordine 14

Quindi l'ordine deve ancora essere cercato per primo, come nella prima funzione?

O semplicemente sostituire SELECT_BY_POS con SELECT_BY_TICKET

 
Marina Korotkih:

Ma per fare questo, dovete prima scoprire il biglietto dell'ultimo ordine 14

Quindi l'ordine deve ancora essere cercato per primo come nella prima funzione?

O semplicemente sostituire SELECT_BY_POS con SELECT_BY_TICKET

Dipende da cosa avete bisogno di controllare. Infatti, possiamo scoprire tutto qui, selezionare l'ordine per prezzo e poi scrivere i parametri richiesti per esso e restituire tutto.

Usare i cicli una volta in più non è una buona idea, quindi, è meglio realizzare tutto in un ciclo; non si nota nel trading reale, ma i test nel tester gireranno per molto tempo. Tuttavia, tutto dipende dal compito, qualcuno scrive programmi per il tester, e qualcuno per il trading, quindi si può usare più di un ciclo.

P.S. Se l'Expert Advisor è un pipsqueak, ovviamente, è meglio non usare un ciclo singolo)