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

 
tommy27:
Grazie, l'ho fatto con Close e come mi hai consigliato:
ma il risultato viene aggiornato solo quando appare una nuova barra e io voglio vedere e registrare i cambiamenti su ogni tick.

Se l'EA non è in loop, il risultato cambierà ad ogni tick
 

Grazie a tutti, separatamente tutto funziona:

//+------------------------------------------------------------------+
//|                                                        Delta.mq4 |
//|                                                          tommy27 |
//|                                                  tommy27@mail.ru |
//+------------------------------------------------------------------+
#property copyright "tommy27"
#property link      "tommy27@mail.ru"

double 
       StartPrice1,
       Delta1,
       Price00;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   Price00 = 5000;
StartPrice1 =  iClose(0,0,0);
//StartPrice1 = Close[0];
Delta1 = MathAbs (Price00 - StartPrice1);
//if (Delta1>1000) Delta1=0;
Comment (Delta1);
Print ("Raznica= ",Delta1);
//----
   return(0);
  }
//+------------------------------------------------------------------+

Ma il codice principale conta solo sulla chiusura della barra, lo esaminerò.

 
PapaYozh:

Se l'EA non è in loop, il risultato cambierà ad ogni tick
Grazie.
 
Ci sono due opzioni in OrderSelect():
MODE_TRADES - l'ordine viene selezionato tra gli ordini aperti e in sospeso,
MODE_HISTORY - l'ordine viene selezionato tra gli ordini chiusi e cancellati.

- Ho capito bene che MODE_TRADES è usato solo con OrdersTotal(), e MODE_HISTORY - solo con OrdersHistoryTotal()?
- Se è così, perché sono necessari?
Grazie!
 
chief2000:
Ci sono due opzioni in OrderSelect():
MODE_TRADES - l'ordine viene selezionato tra gli ordini aperti e in sospeso,
MODE_HISTORY - l'ordine viene selezionato tra gli ordini chiusi e cancellati.

- Ho capito bene che MODE_TRADES è usato solo con OrdersTotal(), e MODE_HISTORY - solo con OrdersHistoryTotal()?
- Se è così, perché sono necessari?
Grazie!


Avete capito bene.

La sua seconda domanda non è chiara. Se si seleziona un ordine in base alla sua posizione, è necessario conoscere il numero totale di ordini

 
PapaYozh:


Avete capito bene.

La sua seconda domanda non è chiara. Se si seleziona un ordine in base alla sua posizione, è necessario conoscere il numero totale di ordini

Entrambi questi parametri (MODE_TRADES e MODE_HISTORY) sono usati solo in caso di SELECT_BY_PO, ma potreste rimuoverli completamente (usate quello di default in MT4 - rispettivamente per OrdersTotal() e OrdersHistoryTotal()).
Non è una questione di principio, la cosa principale per me era la risposta alla prima domanda.
Grazie!
 

alsu, aprire l'acquisto se il prezzo è salito più di 20 pip negli ultimi 10 minuti; aprire la vendita se il prezzo è sceso più di 20 pip negli ultimi 10 minuti.

E se non è un problema: Aprire l'acquisto se il prezzo attuale è superiore al massimo della barra precedente, aprire la vendita se il prezzo attuale è inferiore al minimo della barra precedente.

P.S. Il codice per aprire l'acquisto e la vendita è già nella scheda, quindi non ho bisogno di descriverli... Sono più interessato a come scrivere correttamente le condizioni di apertura descritte sopra...

 
oDin48:

alsu, aprire l'acquisto se il prezzo è salito più di 20 pip negli ultimi 10 minuti; aprire la vendita se il prezzo è sceso più di 20 pip negli ultimi 10 minuti.

Apro esattamente nel momento in cui il livello viene superato o dopo 10 minuti?)


E se non è troppo difficile: aprire l'acquisto se il prezzo attuale è un po' più alto del massimo della barra precedente, aprire la vendita se il prezzo attuale è un po' più basso del minimo della barra precedente.

extern int level = 10; //в пунктах

....
int start()
{
...

   RefreshRates();

   if(Bid>High[1]+level*Point)
   {
      //BUY
   }

   if(Bid<Low[1]-level*Point)
   {
      //SELL
   }
...
}
 

alsu, esattamente quando attraversare, controllare il tempo e se cade all'interno della gamma di tempo fare un commercio.

Grazie. Lo proverò ora.

 
oDin48:

alsu, esattamente quando si attraversa, controllare il tempo e se cade nel range di tempo fare un commercio.

In una tale variante, bisogna ricordare la storia dei tick degli ultimi 10 minuti... il codice non è banale

Motivazione: