[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 307

 

Di solito si usa <=. O >=. In entrambi i casi, l'implementazione è hardware, Metaquotes non ha nulla a che fare con esso.

Anche gli sviluppatori di altre lingue non hanno nulla a che fare con questo. Funzionamento di base. Come + e -.

 
drknn:

Poiché la condizione non è una disgiunzione stretta (ed è sempre vera se almeno 1 elemento è vero), il modo più logico di gestire questa condizione sarebbe quello di dividere prima la molecola(a>b || c>d) in atomi "a>b" e "c>d", poi fare un ciclo attraverso gli atomi in modo sequenziale per controllare la verità. E se il prossimo atomo è vero, allora interrompiamo immediatamente il ciclo, permettendo al programma di fare l'azione che si trova subito dopo le parentesi - cioè, di non cercare attraverso il resto degli atomi, perché non è necessario. E non importa se cerchiamo dall'inizio alla fine o dalla fine all'inizio della lista di atomi creata. Solo lo sviluppatore può mostrare la direzione di ricerca (meta-citazioni). Ma perché ne avete bisogno? Stai scrivendo il tuo compilatore?
Mi è venuto in mente: se nella logica di TC la condizione a>b è vera molto più spesso di c>d==vero, allora può essere importante l'ordine di controllo della verità di queste due condizioni per accelerare il programma
 
artmedia70:
Mi viene in mente: se nella logica di TC la condizione a>b è vera molto più spesso di c>d==vero, allora potrebbe essere importante come queste due condizioni sono controllate per velocizzare il programma

In realtà l'espressione si presenta così: if(a>b || (a<=b && c>d)). Se il controllo di verità viene eseguito da sinistra a destra, l'espressione a<=b sarà superflua dal punto di vista della velocità del programma. La domanda era esattamente se è da sinistra a destra o viceversa, o in modo diverso nei diversi casi.
 
AndEv:

In realtà l'espressione si presenta così: if(a>b || (a<=b && c>d)). Se il controllo di verità viene eseguito da sinistra a destra, l'espressione a<=b sarà superflua dal punto di vista della velocità del programma. La domanda era solo se è da sinistra a destra o viceversa, o diversamente in casi diversi.

Puoi spiegare il motivo per cui l'EA non apre gli ordini e scrive l'errore 133
 
paladin80:

È necessario confrontare il tempo di apertura della posizione con l'attuale tempo di apertura della barra Time[0]. Se il tempo di apertura di una posizione è maggiore o uguale al tempo di apertura della barra - l'Expert Advisor non apre nuove posizioni. Quando appare una nuova barra, Time[0] cambierà il suo valore in un tempo successivo e questo confronto mostrerà che la posizione non è ancora stata aperta sulla barra corrente (nuova) e possiamo negoziare.

A proposito, la tua domanda può anche essere suddivisa in 2 sotto-domande:
1. Alla barra attuale è stata aperta una posizione che è riuscita a chiudere, ma siamo ancora in attesa di una nuova barra.
2. Sulla barra corrente è stata aperta una posizione ed è riuscita a chiudersi, allora possiamo aprire di nuovo una posizione sulla stessa barra (cioè una posizione può essere aperta sulla stessa barra simultaneamente).

Cioè in una stessa barra la condizione per aprire una posizione diventa Vera per alcuni minuti e la posizione viene aperta. poi diventa Falsa e poi di nuovo Vera e viene aperta una seconda posizione. come gestire la cosa? ho solo pensato di aprire una posizione una volta per barra forse ci sono altre opzioni?
 
Cos'è il detrending, è come "smettere di parlare"?
 
GarKain:
Ho un problema con questo: in una e la stessa barra per alcuni minuti la condizione per aprire un ordine diventa vera e l'ordine si apre. poi fallisce e di nuovo apre un secondo ordine. come posso combattere questo? ho solo provato ad aprire un ordine una volta per barra forse ci sono altre opzioni?

Vedo che stai usando una bandiera che permette/disperde l'apertura di una posizione. Senza conoscere le condizioni della bandiera, è impossibile dirvi qualcosa. Nel mio EA uso 2 approcci per aprire una posizione e posso offrire il seguente codice:

if (OrdersTotal()>0)
{  for (i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderSymbol()==Symbol())
         {  if (OrderMagicNumber()==MagNum) // Проверка соответствия позиции по магик-номеру
            {  Closed_bar=OrderOpenTime();
               if (Closed_bar>=iTime(NULL,PERIOD_H1,0))
               return(0);
         }  }
}  }  }
 
moskitman:
Cos'è il detrending, è come "smettere di parlare"?

Applicare un filtro passa-basso a una serie == sottrarre la componente di tendenza (pendenza). l'esempio più semplice: applicare un muwing al prezzo, e poi mostrare la differenza in una finestra separata.
 
paladin80:

Vedo che stai usando una bandiera che permette/disperde l'apertura di una posizione. Senza conoscere le condizioni della bandiera, è impossibile dirvi qualcosa. Nel mio EA uso 2 approcci quando apro una posizione e posso offrire il seguente codice:



if (OrdersTotal()>0)
{  for (i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderSymbol()==Symbol())
         {  if (OrderMagicNumber()==MagNum) // Проверка соответствия позиции по магик-номеру
            {  Closed_bar=OrderOpenTime();
               if (Closed_bar>=iTime(NULL,PERIOD_H1,0))
               return(0);
         }  }
}  }  }

Non capisco bene cosa va dove e da dove.

 
L'ho scritto così:

se questo e quello, allora è "uguale a".

Se è uguale a "True" allora l'ordine si apre.



Se scrivo se questo e quello, l'ordine si apre. questo risolverà il problema?