[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 12

 
eccolo lì
File:
 
igrok2008 >> :

Nel tuo precedente commento hai sottolineato il mio difetto, circa i livelli di acquisto e vendita errati, che (come ho capito) richiede l'inversione dei segni < >.

Per CCI è necessario o meno specificare -100????????????????????????

Prendilo e mettilo nel tester

e mostrerà dove il risultato è migliore

dove c'è un meno o dove non c'è

e quale numero finirà per essere 250 o -250

 

Per favore, scrivete o suggerite come far aprire un ordine quando appare una nuova barra e chiuderlo quando si chiude? Mi fa male la testa, non riesco a capire ))))

 
vadim2304 >> :

Per favore, scrivete o suggerite come far aprire un ordine quando appare una nuova barra e chiuderlo quando si chiude? Mi fa già male la testa, non riesco a pensare ))))

if ( isTime(Period()*60)) { закрытьОткрытыйОрдер(); открытьНовыйОрдер()};


bool isTime(int sec){
   bool res = false;
   static datetime time = 0;
   double min = 0;
   if (TimeCurrent() >= time){
      min = MathFloor( sec / 60);
      if ( min==0) min = 1.0;         
      time = iTime(NULL,PERIOD_H1,0) + (MathFloor(Minute()/ min) + 1) * min * 60;
      res = true;
   } 
   return( res);
}
 
keekkenen >> :

Capisco che questo è per barre con timeframe H1, ma dove scrivere il codice per i prezzi di apertura e chiusura, dopo if (isTime(Period()*60)), e cosa significa, per favore decifra )))

 

equivoco... Periodo()*60 è per qualsiasi TF - tutto è espresso in secondi, cioè

su M1 - 60 sec, M5 - 300 sec ecc. (perché Periodo() su M1 restituisce 1, su M5 - 5...)

L'ho scritto in senso figurato

if ( isTime(Period()*60)) { закрытьОткрытыйОрдер(); открытьНовыйОрдер()};

Il significato di questo - quando appare una nuova barra, puoi chiudere un ordine aperto e aprirne uno nuovo.

Se non riesci a farlo da solo, dai un'occhiata al tutorial https://book.mql4.com/ru/

 
keekkenen >> :

equivoco... Periodo()*60 è per qualsiasi TF - tutto è espresso in secondi, cioè

su M1 - 60 sec, M5 - 300 sec, ecc. (come Periodo() su М1 restituisce 1, su М5 - 5...)

L'ho scritto in senso figurato.

L'idea è di chiudere un ordine aperto e aprirne uno nuovo.

Se non siete in grado di farlo da soli, date un'occhiata a "https://book.mql4.com/ru/" per un tutorial.


E se non ci sono ordini aperti (li chiuderà dopo questa barra), e basta aprire un nuovo ordine, non ci sarà nessun errore.

 
satop >> :

Prendilo e infilalo nel tester

e vi mostrerà dove i risultati sono migliori.

dove c'è un meno o dove non c'è.

e vi mostrerà se è 250 o -250.

Non essere arrabbiato satop. Tutti erano principianti, tutti facevano domande stupide. Pensa al ritorno a scuola. Devono esserci stati dei geek. Erano curiosi, volevano imparare. Con il tempo, naturalmente, li hanno infastiditi, ma ciò dimostra che quelli che erano arrabbiati hanno afferrato e capito tutto più velocemente. Ma entrambi i metodi di insegnamento hanno diritto alla vita. Caesar to Caesar......No offence.......Non nego di essere uno stupido, ma sono curioso. Senza offesa...

 
vadim2304 >> :

E se non ci sono ordini aperti (li chiuderà dopo questa barra) e apriamo solo un nuovo ordine, non ci sarà nessun errore?

Il fatto è che la funzione OrderClose() che chiude l'ordine prende il numero dell'ordine come primo parametro, e il numero dell'ordine può essere ottenuto solo chiamando OrderSelect() agli ordini esistenti, quindi in generale la chiusura appare così...

bool res = false;
int slippage = 3;

for (int i = 0; i < OrdersTotal(); i++) {
   if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES) &&
         OrderSymbol()==Symbol()){

      while (IsTradeContextBusy() || !IsTradeAllowed())
         {Comment("Торговый поток занят ...");Sleep(2000);}               
      res = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(), slippage,CLR_NONE);
      if ( res){  
         res = true; Comment("Ордер закрыт !");              
      }else{
         Comment("Ошибка - ", msg);
      }
   }
}
  


Se OrdersTotal() = 0, cioè se non ci sono ordini aperti, allora il ciclo for finirà immediatamente...

 
igrok2008 >> :

Non essere arrabbiato satop. Tutti erano principianti, tutti facevano domande stupide. Pensa al ritorno a scuola. Sicuramente c'erano dei geek. Erano curiosi, volevano imparare. Con il tempo, naturalmente, li hanno infastiditi, ma questo dimostra che quelli che erano arrabbiati hanno afferrato e capito tutto più velocemente. Ma entrambi i metodi di insegnamento hanno diritto alla vita. Caesar to Caesar......No offence.......Non nego di essere uno stupido, ma sono curioso. >> Senza offesa.

Cosa ti fa pensare che io sia arrabbiato?

È solo il mio modo di spiegare che

prendendo qualsiasi segno di disuguaglianza e correndo

>> nel tester, si può ottenere un positivo

il risultato con qualche livello, e non importa quale livello

positivo o negativo. E quando è stato chiesto

se prendere il livello con o senza il meno,

Purtroppo non c'è una chiara distinzione.

Motivazione: