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

 
Vitaly Muzichenko #:

Puoi dirmi come accorciare la costruzione?

Il punto è tagliare le coppie che hanno già un simbolo

Ho una posizione su USDCHF

===

C'è una posizione su EURGBP, il segnale è venuto da AUDUSD - come possiamo rilevare che non c'è una posizione su AUD o USD?

Il pensiero di Valery è corretto. Ma non capisco perché dovremmo identificare la valuta che stiamo cercando nelle valute dell'ordine ad ogni iterazione del ciclo? E mi sembra più facile prendere la valuta del margine e la valuta del profitto invece di guardare nella linea. Guarda la specifica della valuta... Io farei così

bool Search(string _sy)
 {
  int OT = OrdersTotal();
  string curencyProfit = SymbolInfoString(_sy, SYMBOL_CURRENCY_PROFIT),
         currencyMargin = SymbolInfoString(_sy, SYMBOL_CURRENCY_MARGIN);
  for(int i = 0; i < OT; i++)
   {
    if(OrderSelect(i, SELECT_BY_POS))
     {
      bool res = StringFind(OrderSymbol(), curencyProfit) >= 0 ||
                 StringFind(OrderSymbol(), currencyMargin) >= 0;
      if(res)
        return(true);
     }
   }
  return(false);
 }/******************************************************************/
 
Valeriy Yastremskiy #:

StringFind

Penso che ci dovrebbero essere 2 linee, cercando sia le posizioni 0 che 3. Per tagliare una partita a caso nel mezzo.

SZ

Scemo, ci sono 4 condizioni.

Non uguale A B e non uguale C D

condizione A==C o A==D o B==C o B==D

Non credo che qualcuno potrebbe scriverlo)))

Muto al secondo tentativo. A quanto pare è arrivato il momento della sera.

 
Vitaly Muzichenko #:

Puoi dirmi come accorciare la costruzione?

Il punto è tagliare le coppie che hanno già un simbolo

Ho una posizione su USDCHF

===

C'è una posizione su EURGBP, il segnale è venuto da AUDUSD - come rilevare che non c'è una posizione su AUD o USD?

Raccoglierei tutte le valute degli ordini aperti in un array e passerei attraverso l'array alla ricezione del segnale.

 
Alexey Viktorov #:

Valeri ha la giusta direzione di pensiero. Ma non capisco perché dobbiamo definire la valuta che cerchiamo nelle valute d'ordine ad ogni iterazione del ciclo? E penso che sia più facile prendere la valuta del margine e la valuta del profitto invece di guardare nella linea. Guarda le specifiche per le valute ... io farei così

Lo controllerò domani.


Taras Slobodyanik #:

Raccoglierei tutte le valute degli ordini aperti in un array e guarderei attraverso l'array quando ricevo un segnale.

L'idea è la stessa, ma avete anche bisogno di un array

 

si può anche impostare una magia 1 = AUD, 2 = EUR.... per ogni valuta e confrontare le magie,

circa gli array, imho, è razionale, ora 3 coppie di valute 4 condizioni, domani 33 coppie di valute 34 condizioni?

 
Vitaly Muzichenko #:

Lo controllerò domani.


Il punto è lo stesso, ma avete anche bisogno di un array

Perché aspettare fino a domani? Se sei troppo pigro per guardare attraverso le specifiche, esegui lo script attraverso tutti i simboli di interesse e trova una corrispondenza per la valuta di margine e la valuta di profitto.
/********************Script program start function*******************/
void OnStart()
 {

  Comment(SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT), "\n",
          SymbolInfoString(_Symbol, SYMBOL_CURRENCY_MARGIN)
         );
 }/******************************************************************/
Non ho controllato tutto prima di scrivere, ma non ho trovato nessuna corrispondenza...
 
Vitaly Muzichenko #:

Il significato è lo stesso, ma avete anche bisogno di un array

Bene, il punto è veloce - ha preso il codice della valuta, ha fatto una ricerca usando un array pronto, che viene aggiornato quando viene aperto un trade.

[Eliminato]  

Aiuto con il codice. Ho bisogno di un ordine pendente che si muova con l'apertura di una nuova barra lungo la linea di tendenza.

Cioè sarebbe un attraversamento permanente dell'ordine e della linea.

Dovremmo conoscere il punto di incrocio della linea di tendenza e il tempo per farlo spostare. come calcolarlo?

 
Zalevsky1234 ordine pendente si muova con l'apertura di una nuova barra sulla linea di tendenza.

Cioè sarebbe un attraversamento permanente dell'ordine e della linea.

Dovremmo conoscere il punto di incrocio della linea di tendenza e il tempo per farlo spostare. come calcolarlo?

Ecco la funzione per calcolare il punto di intersezione
 

Domanda sulla variabile statica var del metodo X::doJob(). C'è una classe U che crea un oggetto di tipo X, fa del lavoro e poi lo distrugge. E questo accade periodicamente. Domanda: quando viene cancellata la variabile var?


class X {
public:
   void doJob() {
      static int var = 0;
   }
};

class U {
private:
   X *x;
public:
   U(){

   }
   ~U() {
      delete x;
   }
   void U::dojob(){
      x = new X();
      x.doJob();
      delete x;
   }
};