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

 
Vitaly Muzichenko:

Che male c'è in un tale disegno?

O è meglio renderedatetime un tipo lungo?

Finora non vedo alcun problema.
Ma c'è un evidente desiderio di precisione (datetime è più grande di time_t, per dirla tutta).
e dovrebbe essere piuttosto lungo per i confronti temporali. Se il compilatore ottimizza qualcosa, lo butta via, e rimane un deposito per il futuro :-)
 
Maxim Kuznetsov:
Finora non vedo alcun problema.
Ma c'è un'ovvia tendenza ad essere più precisi (datetime è morbidamente più grande di time_t)
ed è più probabile che questo lungo debba essere usato per confrontare i tempi. Se il compilatore ottimizza qualcosa, lo butta via e lascia un deposito per il futuro :-)

Quindi si può usare senza barare senza conseguenze?

 
Vitaly Muzichenko:

Quindi si può usare senza barare senza conseguenze?

Beh, come potrebbe essere senza conseguenze :-)

long x = TimeCurrent(); ottiene già uno "schiaffo in faccia" in una buona compagnia :-) Non solo i tipi sono diversi nella fisica, ma sono anche diversi nella dimensione e si converte un tipo più grande in uno più piccolo.

Ma sì, tutti i secondi da (datetime)TimeCurrent sembrano entrare in lunghi

 
Maxim Kuznetsov:

c'è una grande funzione StringFind() - cerca l'occorrenza della stringa "#" o immediatamente "da #"

Trovato
StringFind(OrderComment(),"to #",0)


e cosa ne facciamo?

InStringSubstr, tutto è chiaro, si ottengono immediatamente cifre - biglietto, ma qui inStringFind , sappiamo già che c'è"a #" nel commento

 
PolarSeaman:
Trovato


e cosa farne?

InStringSubstr tutto è chiaro, otteniamo i numeri immediatamente - biglietto, ma qui inStringFind cosa, sappiamo già che c'è"a #" nel commento

ma non sappiamo dove). StringFind ci dirà se il "to #" che stiamo cercando è in questa posizione o non c'è affatto. Non fate mai affidamento su qualcosa che viene dalla rete e che voi personalmente/personalmente non controllate :-) Stiamo giocando soldi qui - è una cosa seria.

 
Maxim Kuznetsov:

ma non so dove :-) StringFind vi dirà che il "to #" che state cercando è esattamente in questa posizione, o non c'è affatto. Non fate mai affidamento su qualcosa che viene dalla rete e che voi personalmente/personalmente non controllate :-) Stiamo giocando soldi qui - è una cosa seria.

bisogno di evidenziare il biglietto dal commento e buttare fuori il "to #".

il biglietto per una posizione aperta è confrontato con quello del commento per una posizione chiusa

perché stiamo cercando il "to #"?

 

La funzioneStringSubstr restituisce la parte giusta del commento. Perché questa funzione restituisce il profitto di una posizione aperta e non il profitto di una posizione chiusa? Sto passando attraversoMODE_HISTORY

double prof_cl_pos(string sy="0", int op=-1, int mn=-1) {
  datetime ta;
  int      i, k=OrdersHistoryTotal();
  double profit_=0;
  string comment="";
  string substr="";

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              comment=OrderComment();
               substr = StringSubstr(comment, 4, 9);
              if (ticket_op_pos(Symbol(), -1,mn)==substr)
              profit_=OrderProfit();
            }
          }
        }
      }
    }
  }
  return(profit_);
}
 
Vitaly Muzichenko:

Qual è il danno di una tale costruzione?

O è meglio renderedatetime un tipo lungo?

datetime è ulong - è lì che dovresti metterlo.
 
PolarSeaman:

il biglietto dovrebbe essere evidenziato dal commento e il "to #" dovrebbe essere scartato.

il ticket per una posizione aperta deve essere confrontato con il ticket nel commento per una posizione chiusa

perché stiamo cercando il"to #"?

Lo cerchiamo per scoprire "c'è anche to# o from#" nel commento. Se non c'è, allora questo ordine non fa parte di una posizione chiusa e non ne abbiamo bisogno.

Se StringFind(OrderComment(), "#to") è maggiore o uguale a zero, significa che il commento contiene la sottostringa cercata, e solo ora possiamo calcolare la posizione del numero del biglietto in questa stringa.

 
PolarSeaman:

La funzioneStringSubstr restituisce la parte giusta del commento. Perché questa funzione restituisce il profitto di una posizione aperta e non il profitto di una posizione chiusa? Sto passando attraversoMODE_HISTORY.

E questa è la risposta a questa domanda.

Forum sul trading, sistemi di trading automatico e test di strategia

Tutte le domande dei neofiti su MQL4, aiuto e discussione su algoritmi e codici

PolarSeaman, 2018.04.07 00:25

Trovato
StringFind(OrderComment(),"to #",0)


E cosa farne?

Tutto è chiaro inStringSubstr, si ottengono numeri - biglietto, ma qui inStringFind cosa, sappiamo già che c'è"a #" nel commento


Ma se non lo fai, otterrai qualcosa di completamente diverso.