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.

 

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;
   }
};