Domanda per gli intenditori - pagina 11

 
Urain >> :

Acronis True Imidge software per creare e ripristinare il backup . Fate il backup del vostro disco C.

Back Up e il sistema come era al momento della creazione.

Il tempo di back up è di 4 minuti.

Grazie anche a te.

 
rid >> :

>> Grazie anche a te.

Caro rid, potresti aiutarmi con una domanda qui) https://forum.mql4.com/ru/15972/page145

 
MQLBankir >> :
Buona giornata!
Ho scritto EAs solo per il primo mese.
Ho risolto quelli semplici: ho un segnale - aprire una posizione. E se ho bisogno di diversi segnali?
Per esempio.
Il 1° segnale di un indicatore
Il 2° segnale arriva dopo, ma la 1° condizione è già FALSA. Capisco che il programma viene eseguito ogni tick, ma ho bisogno di ricordare che la prima condizione (segnale) è vera e non è ancora cancellata.
Stavo pensando di scriverlo in un file. Ma non l'ho ancora capito bene.
Forse c'è un'altra via d'uscita, attraverso una funzione o qualcos'altro?
Puoi darmi un suggerimento?

Non sono molto bravo a farlo.

Ma suppongo che se dopo il 1° segnale si "appende" la bandiera, la si lascia appendere.

Anche se il 1° segnale è già esaurito!

Poi il 2° segnale darà un segnale di apertura senza problemi.

Se ho capito bene la domanda...

 
Infinity >> :

Caro rid, potresti aiutarmi con una domanda) https://forum.mql4.com/ru/15972/page145

È qui che si chiede della chiusura? Guarda qui.

'Posizioni di chiusura. Su un segnale di un indicatore".

//------------------------

Io, a suo tempo, mi sono addentrato nell'argomento.

Ma nel codice che hai postato - è difficile da capire lì e non vedo nessuna sezione sulla chiusura.

Ecco un esempio di blocco di chiusura per voi:

//********* Закрытие позиций ****************************************
if ( AutoClose) { //если выключатель закрытия включен 
//----переменные для закрытия позиций ----
double Stochast_0 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0);
double Stochast_1 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1);
//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect( v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()== MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      if( Stochast_1>75 && Stochast_0<75)     {
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                 //return(0); // выходим
                }       
     }  
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
      if( Stochast_1<25 && Stochast_0>25)    {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
     }  
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_
 
rid >> :

Non sono un esperto in materia.

Ma il presupposto è che se dopo il 1° segnale si "appende" la bandiera, allora la si lascia appesa.

Anche se il 1° segnale è già esaurito!

Poi il 2° segnale darà un segnale di apertura senza problemi.

Se ho capito bene la domanda...



se il secondo segnale viene dopo il primo, ..... e solo così, ma... forse controllando il 2° segnale per aprire il 1° segnale passerà già da falso a vero allora sarà necessario finire il calcolo del 2° segnale, e procedere al passaggio del primo segnale !

 
rid >> :

È qui che si chiede della chiusura? Guarda qui.

'Posizioni di chiusura. Su un segnale di un indicatore".

//------------------------

Io, a suo tempo, sono entrato in questo argomento lì.

Ma in quel codice, che hai postato - è difficile da capire lì e non vedo affatto la sezione sulla chiusura.

Beh, non c'è, .... Non riesco a ottenere il numero di un ordine aperto per chiudere l'ordine, continua a darmi un errore... anche se il numero viene trovato attraverso altre funzioni.

 

Guarda sopra. Ho aggiunto un esempio lì.

Solo che al posto di MagicNum inserite il vostro mn

Nei parametri esterni aggiungere

extern bool AutoClose = true;

 
rid >> :

Solo che al posto di MagicNum inserite il vostro mn

Nei parametri esterni aggiungere

extern bool AutoClose = true;

>> >> sì sì grazie, ho capito).

 
Infinity >> :

Beh, non c'è, .... Non riesco a ottenere il numero di un ordine aperto per chiuderlo, continua a mostrare un errore... anche se il numero viene trovato attraverso altre funzioni.

Prova a selezionare l'ordine per posizione: la funzione dà un ticket t posizione dell'ordine nella lista degli ordini di trading.

int Select_POS(int t)
{//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if(OrderSelect( t, SELECT_BY_POS, MODE_TRADES)) TIC[ t]=OrderTicket();
else TIC[ t]=-1;
return( TIC[ t]);
}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
t = OrdiniTotali() e diminuisce ad ogni ordine processato.
 
Urain >> :

Prova a selezionare un ordine per posizione: la funzione dà la posizione del ticket t dell'ordine nella lista degli ordini commerciali.

t = OrdiniTotali() e diminuisce con ogni ordine processato.


Grazie per l'aiuto, probabilmente funzionerebbe anche questo! Non mancherò di controllare!

Il codice di chiusura ha funzionato.... Tutto funziona ora, il problema era proprio la definizione dell'ordine aperto. Grazie ancora a tutti!