Non è il tempo in sé che conta, ma se qualcosa è stato fatto entro un certo periodo di tempo, questo è ciò che si dovrebbe controllare.
P.S. E non avete bisogno di definire N, basta fare il vostro controlloif(TimeCurrent() >= iTime(Symbol(),1440,0) ) fino a quando l'azione che volete è fatta (impostare un ordine).
Ma se lo imposti in questo modo
if(TimeCurrent() >= iTime(Symbol(),1440,0)
In questo modo il segnale sarà valido per tutto il tempo dopo l'apertura della barra e . All'infinito. Perché ne ho bisogno? La cosa principale è aprire un ordine all'apertura di un bar, non un pacchetto.
In questo modo il segnale sarà valido permanentemente dopo l'apertura della barra e ... Fino all'infinito. A cosa mi serve? La cosa principale è aprire un ordine all'apertura del bar invece del pacco.
И ... All'infinito - questo è un caso speciale, se la vostra condizione necessaria - l'impostazione dell'ordine - non sarà soddisfatta oggi o domani...
E per evitare l'apertura di un pacchetto, dovremmo semplicemente controllare prima di ogni apertura o l'esistenza di un ordine aperto o se l'apertura ha avuto luogo nel periodo necessario.
In pratica si usa in tutte le operazioni che lavorano con gli ordini. Bisogna prima selezionare l'ordine e poi fare qualcosa con esso (visualizzare le informazioni dell'ordine, inviare un ordine di compravendita al server per modificarlo o chiuderlo) Ci sono due modi per selezionare gli ordini nel terminale, per ticket, che è il numero assegnato all'ordine sul server che non cambia per un ordine particolare, o per il numero dell'ordine (indice) con cui l'ordine è memorizzato nel terminale. Questo numero può cambiare ad ogni tick, a seconda di quali e quanti ordini vengono aperti, impostati, chiusi o cancellati.
Per lavorare con gli ordini, vengono implementati cicli di valutazione degli ordini.
Come posso ottenere una variabile che dia TRUE quando gli ultimi due trade sono in perdita, e FALSE quando sono in profitto?
O in questo modo.
quando le transazioni sono chiuse da stop - da qualche parte la casella di controllo counter.... dovrebbe essere attivata ma come faccio a catturare il momento della chiusura?
Questo è l'indice che definisce la posizione dell'ordine nell'array in cui sono memorizzati i dati sugli ordini presenti nel terminale.
Cioè,ciò che è sottolineato (sotto SELECT_BY_POS) bool OrderSelect(int index, int select, int pool=MODE_TRADES)
Ho capito bene che l'ultimo ordine che ho chiuso avrà l'indice 1. E dopo aver chiuso quello successivo, indice 2... e così via con ogni nuova posizione chiusa? E i totali giornalieri? Contano gli scambi di ieri? O si ricomincia tutto da capo ogni giorno?
Come posso ottenere una variabile che dia TRUE quando gli ultimi due trade sono in perdita, e FALSE quando sono in profitto?
O in questo modo.
quando le transazioni sono chiuse da stop - da qualche parte la casella di controllo counter.... dovrebbe essere attivata ma come faccio a catturare il momento della chiusura?
Il modo più semplice è quello di passare attraverso tutti gli ordini nel ciclo, cercando quello che è stato chiuso per ultimo, vedere se il tuo ordine ha chiuso su uno stop o un profitto, scegliere il suo ticket, ricominciare il ciclo da capo, se l'ordine con il ticket che hai salvato ha salvato, saltarlo, trovare quello che ha chiuso per ultimo ma uno...
ma un'altra domanda ... funzioneSecondsAfterOpenLastPos() . se l'EA è stato disattivato, questa funzione restituirà il valore dell'ultimo trade CHIUSO ieri? (non posso controllarlo - il mercato è stagnante)
Ci sono alcune soluzioni a questi problemi. La più semplice è probabilmente la seguente: passa attraverso tutti gli ordini nel ciclo, cerca quello che è stato chiuso per ultimo, usa lo stop o il profitto per trovare l'ordine, salva il suo ticket, riavvia il ciclo, se l'ordine con il ticket che hai salvato è stato selezionato, saltalo,trova quello che ha chiuso per ultimo ma uno...
P.S. E nonMODE_TRADES, ma MODE_HISTORY.
la logica è chiara.... ma per me è impossibile scriverla nel mio codice... è troppo complicato... non ho mai lavorato con i cicli di forza bruta... semplicemente non ne avevo bisogno... quindi è una foresta oscura :))) e i loop che ho visto non mi sono molto chiari... è chiaro che provano qualcosa... e basta.
Potresti darmi l'esempio più semplice... ma con spiegazioni, così capisco cosa succede nel ciclo e dove?
lottamer: Ma un'altra domanda ... la funzioneSecondsAfterOpenLastPos() . se l'EA è stato disattivato, questa funzione restituirà il valore dell'ultimo trade CHIUSO ieri? (non posso controllarlo - il mercato è stagnante)
Lo farà.
Più precisamente, sarà, ma non chiuso, bensì aperto.
In pratica si usa in tutte le operazioni che lavorano con gli ordini. Bisogna prima selezionare un ordine e poi fare qualcosa con esso (visualizzare le informazioni dell'ordine, inviare un ordine di compravendita al server per modificarlo o chiuderlo) Ci sono due modi per selezionare gli ordini nel terminale, per ticket, che è il numero assegnato all'ordine sul server che non cambia per un ordine particolare, o per il numero dell'ordine (indice) dove l'ordine è memorizzato nel terminale. Questo numero può cambiare ad ogni tick, a seconda di quali e quanti ordini vengono aperti, impostati, chiusi o cancellati.
Per lavorare con gli ordini, ci sono cicli di valutazione degli ordini.
Bene, per esempio, ho un ordine limite all'apertura di D1. TP e SL potrebbero non funzionare per alcuni giorni, se controlliamo un ordine, sarà disponibile e non ne apriremo uno nuovo. Quindi non è buono. Così, si perderanno potenziali scambi.
Non è il tempo in sé che conta, ma se qualcosa è stato fatto entro un certo periodo di tempo, questo è ciò che si dovrebbe controllare.
P.S. E non avete bisogno di definire N, basta fare il vostro controlloif(TimeCurrent() >= iTime(Symbol(),1440,0) ) fino a quando l'azione che volete è fatta (impostare un ordine).
Ma se lo imposti in questo modo
In questo modo il segnale sarà valido per tutto il tempo dopo l'apertura della barra e . All'infinito. Perché ne ho bisogno? La cosa principale è aprire un ordine all'apertura di un bar, non un pacchetto.
Ma se la metti così
In questo modo il segnale sarà valido permanentemente dopo l'apertura della barra e ... Fino all'infinito. A cosa mi serve? La cosa principale è aprire un ordine all'apertura del bar invece del pacco.
И ... All'infinito - questo è un caso speciale, se la vostra condizione necessaria - l'impostazione dell'ordine - non sarà soddisfatta oggi o domani...
E per evitare l'apertura di un pacchetto, dovremmo semplicemente controllare prima di ogni apertura o l'esistenza di un ordine aperto o se l'apertura ha avuto luogo nel periodo necessario.
In pratica si usa in tutte le operazioni che lavorano con gli ordini. Bisogna prima selezionare l'ordine e poi fare qualcosa con esso (visualizzare le informazioni dell'ordine, inviare un ordine di compravendita al server per modificarlo o chiuderlo) Ci sono due modi per selezionare gli ordini nel terminale, per ticket, che è il numero assegnato all'ordine sul server che non cambia per un ordine particolare, o per il numero dell'ordine (indice) con cui l'ordine è memorizzato nel terminale. Questo numero può cambiare ad ogni tick, a seconda di quali e quanti ordini vengono aperti, impostati, chiusi o cancellati.
Per lavorare con gli ordini, vengono implementati cicli di valutazione degli ordini.
So come iniziare un tale ciclo.
for(int i=0; i<totale; i++)
{
se(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
Come posso ottenere una variabile che dia TRUE quando gli ultimi due trade sono in perdita, e FALSE quando sono in profitto?
O in questo modo.
quando le transazioni sono chiuse da stop - da qualche parte la casella di controllo counter.... dovrebbe essere attivata ma come faccio a catturare il momento della chiusura?
Questo è l'indice che definisce la posizione dell'ordine nell'array in cui sono memorizzati i dati sugli ordini presenti nel terminale.
Cioè,ciò che è sottolineato (sotto SELECT_BY_POS) bool OrderSelect(int index, int select, int pool=MODE_TRADES)
Ho capito bene che l'ultimo ordine che ho chiuso avrà l'indice 1. E dopo aver chiuso quello successivo, indice 2... e così via con ogni nuova posizione chiusa? E i totali giornalieri? Contano gli scambi di ieri? O si ricomincia tutto da capo ogni giorno?
So come iniziare un tale ciclo...
for(int i=0; i<totale; i++)
{
se (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
Come posso ottenere una variabile che dia TRUE quando gli ultimi due trade sono in perdita, e FALSE quando sono in profitto?
O in questo modo.
quando le transazioni sono chiuse da stop - da qualche parte la casella di controllo counter.... dovrebbe essere attivata ma come faccio a catturare il momento della chiusura?
Il modo più semplice è quello di passare attraverso tutti gli ordini nel ciclo, cercando quello che è stato chiuso per ultimo, vedere se il tuo ordine ha chiuso su uno stop o un profitto, scegliere il suo ticket, ricominciare il ciclo da capo, se l'ordine con il ticket che hai salvato ha salvato, saltarlo, trovare quello che ha chiuso per ultimo ma uno...
P.S. E nonMODE_TRADES, ma MODE_HISTORY.
Ci sono alcune soluzioni a questi problemi. La più semplice è probabilmente la seguente: passa attraverso tutti gli ordini nel ciclo, cerca quello che è stato chiuso per ultimo, usa lo stop o il profitto per trovare l'ordine, salva il suo ticket, riavvia il ciclo, se l'ordine con il ticket che hai salvato è stato selezionato, saltalo,trova quello che ha chiuso per ultimo ma uno...
P.S. E nonMODE_TRADES, ma MODE_HISTORY.
la logica è chiara.... ma per me è impossibile scriverla nel mio codice... è troppo complicato... non ho mai lavorato con i cicli di forza bruta... semplicemente non ne avevo bisogno... quindi è una foresta oscura :))) e i loop che ho visto non mi sono molto chiari... è chiaro che provano qualcosa... e basta.
Potresti darmi l'esempio più semplice... ma con spiegazioni, così capisco cosa succede nel ciclo e dove?
forse puoi rifare le due opzioni da qui https://forum.mql4.com/ru/38949/page5#434244
Funzione TimeOpenLastPos().
Questa funzione restituisce l'ora dell'ultima posizione aperta.
Abbiamo bisogno di un tempo aperto dell'ultima posizione CHIUSA.
o
Funzione SecondsAfterOpenLastPos().
Questa funzione restituisce il numero di secondi dall'ultima posizione aperta.
E DEVE essere in ore.... invece che in secondi.
questo è più vicino.
Ma un'altra domanda ... la funzioneSecondsAfterOpenLastPos() . se l'EA è stato disattivato, questa funzione restituirà il valore dell'ultimo trade CHIUSO ieri? (non posso controllarlo - il mercato è stagnante)
Lo farà.
Più precisamente, sarà, ma non chiuso, bensì aperto.
In pratica si usa in tutte le operazioni che lavorano con gli ordini. Bisogna prima selezionare un ordine e poi fare qualcosa con esso (visualizzare le informazioni dell'ordine, inviare un ordine di compravendita al server per modificarlo o chiuderlo) Ci sono due modi per selezionare gli ordini nel terminale, per ticket, che è il numero assegnato all'ordine sul server che non cambia per un ordine particolare, o per il numero dell'ordine (indice) dove l'ordine è memorizzato nel terminale. Questo numero può cambiare ad ogni tick, a seconda di quali e quanti ordini vengono aperti, impostati, chiusi o cancellati.
Per lavorare con gli ordini, ci sono cicli di valutazione degli ordini.
Bene, per esempio, ho un ordine limite all'apertura di D1. TP e SL potrebbero non funzionare per alcuni giorni, se controlliamo un ordine, sarà disponibile e non ne apriremo uno nuovo. Quindi non è buono. Così, si perderanno potenziali scambi.