[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 604
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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.