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

 
future >> :
Signori, sto ancora agonizzando su una domanda. Come scrivere quanto segue? Se il prezzo a xx.xx del giorno corrente è superiore al prezzo a yy.yy dello stesso giorno....allora... ho bisogno che questi prezzi siano confrontati ogni giorno. Non so come evitare di menzionare la data. Provato datetime Time 1=D'().().() 12:00 '; ma non funziona in tester. Non scrive errori, ma nei test sembra che questa volta i dati vengano semplicemente ignorati.

Funziona così:

int time=iTime(NULL,PERIOD_D1,0)+60*(60*ore+minuti);

double price=iOpen(NULL,PERIOD_M1,iBarShift(NULL,PERIOD_M1,time));

 


Sto seguendo esattamente questo articolo, ma come ho detto sopra,

channel=ddeinit('MT4','BID'); - tutto va bene, channel = 7.2920e-304 - la connessione è stabilita

ma

rc = ddeadv(channel, 'EURUSD','disp(x)','x',[1 1]); - non succede niente,

nonostante rc = 1.

Anche se sembra funzionare nell'articolo, cosa c'è di sbagliato?

 


Ciao!

Potresti per favore dirmi come tenere traccia di quando un trade chiude in stop loss o in profitto nel ciclo?

Quale funzione dovrebbe essere usata per farlo correttamente?

Grazie.

 
Klinskih писал(а) >>

Ciao!

Potresti per favore dirmi come tenere traccia di quando un trade chiude in stop loss o in profitto nel ciclo?

Quale funzione dovrebbe essere usata per farlo correttamente?

Grazie.

Non c'è un evento per chiudere gli ordini in stop loss o take profit, ma è possibile monitorare la disponibilità degli ordini aperti.

int OrdersTotal( )

Restituisce il numero totale di ordini aperti e in sospeso.

bool OrderSelect( int index, int select, int pool= MODE_TRADES) 

La funzione seleziona un ordine per un'ulteriore elaborazione. Restituisce TRUE se la funzione si completa con successo. Restituisce FALSE se la funzione fallisce. Per ottenere le informazioni sull'errore, è necessario chiamare la funzione GetLastError().
Il parametro pool è ignorato se l'ordine è selezionato dal numero del biglietto. Il numero del biglietto è un identificatore unico per l'ordine. Per determinare da quale lista viene selezionato un ordine, dobbiamo analizzare il suo tempo di chiusura. Se il tempo di chiusura dell'ordine è 0, allora l'ordine è aperto o in sospeso e viene preso dalla lista delle posizioni aperte del terminale. Una posizione aperta può essere distinta da un ordine pendente per il suo tipo. Se il tempo di chiusura non è uguale a 0, allora l'ordine è chiuso o in sospeso ed è stato selezionato dalla storia del terminale. La distinzione tra un ordine chiuso e un ordine pendente cancellato può essere fatta anche per tipo di ordine.

Potete anche trovare soluzioni già pronte, per esempio da KimIV - https://www.mql5.com/ru/forum/107476/page2.

 
xeon >> :

Non c'è nessun evento per chiudere l'ordine allo stop o al takeout, ma è possibile monitorare la disponibilità di ordini aperti

Restituisce l'importo totale degli ordini aperti e in sospeso.

Questa funzione seleziona un ordine per lavorarci in seguito. Restituisce TRUE se la funzione si completa con successo. Restituisce FALSE se la funzione fallisce. Per ottenere le informazioni sull'errore, è necessario chiamare la funzione GetLastError().
Il parametro pool viene ignorato se l'ordine viene selezionato utilizzando il numero di biglietto. Il numero del biglietto è un identificatore unico per l'ordine. Per determinare da quale lista viene selezionato un ordine, dobbiamo analizzare il suo tempo di chiusura. Se il tempo di chiusura dell'ordine è 0, allora l'ordine è aperto o in sospeso e viene preso dalla lista delle posizioni aperte del terminale. Una posizione aperta può essere distinta da un ordine pendente per il suo tipo. Se il tempo di chiusura non è uguale a 0, allora l'ordine è chiuso o in sospeso ed è stato selezionato dalla storia del terminale. La differenza tra un ordine chiuso e un ordine pendente cancellato può essere fatta anche dal tipo di ordine.

Si possono anche vedere implementazioni già pronte, per esempio da KimIV - https://www.mql5.com/ru/forum/107476/page2

Grazie mille per la risposta esauriente!

 
xeon >> :

Non c'è nessun evento per chiudere l'ordine allo stop o al takeout, ma è possibile monitorare la disponibilità di ordini aperti

Restituisce l'importo totale degli ordini aperti e in sospeso.

Questa funzione seleziona un ordine per lavorarci in seguito. Restituisce TRUE se la funzione si completa con successo. Restituisce FALSE se la funzione fallisce. Per ottenere le informazioni sull'errore, è necessario chiamare la funzione GetLastError().
Il parametro pool è ignorato se l'ordine è selezionato dal numero del biglietto. Il numero del biglietto è un identificatore unico per l'ordine. Per determinare da quale lista viene selezionato un ordine, dobbiamo analizzare il suo tempo di chiusura. Se il tempo di chiusura dell'ordine è 0, allora l'ordine è aperto o in sospeso e viene preso dalla lista delle posizioni aperte del terminale. Una posizione aperta può essere distinta da un ordine pendente per il suo tipo. Se il tempo di chiusura non è uguale a 0, allora l'ordine è chiuso o in sospeso ed è stato selezionato dalla storia del terminale. La differenza tra un ordine chiuso e un ordine pendente cancellato può essere fatta anche dal tipo di ordine.

Si possono anche vedere implementazioni già pronte, per esempio da KimIV - https://www.mql5.com/ru/forum/107476/page2

Grazie mille per la risposta esauriente!

 
future >> :
Signori, sto ancora agonizzando su una domanda. Come scrivere quanto segue? Se il prezzo a xx.xx del giorno corrente è superiore al prezzo a yy.yy dello stesso giorno....allora... ho bisogno che questi prezzi siano confrontati ogni giorno. Non so come evitare di menzionare la data. Provato datetime Time 1=D'().().() 12:00 '; ma non funziona in tester. Non scrive errori, ma nei test sembra che questa volta i dati vengano semplicemente ignorati.

Per il tester va bene.

int час=15; час2=20;
int мин=21; мин2=00;

if(Hour()> час-1&&Hour()< час+1&&Minute()> мин-1&&Minute()< мин+1)
double цена_инструмента=Bid;
if(Hour()> час2-1&&Hour()< час2+1&&Minute()> мин2-1&&Minute()< мин2+1)
double цена_инструмента2=Bid;

if( цена_инструмента> цена_инструмента2)....
if( цена_инструмента< цена_инструмента2)....
 

Salve.

Come faccio a sapere se è scattato lo SL o il TP. Per esempio, se un ordine viene chiuso da

SL o TP, poi eseguire questo e quello. Non ho trovato una tale funzione.

 

Supponiamo che un set di indicatori sia stato salvato nel modello e che il modello sia stato caricato per una coppia di valute.

- Dopo di che, gli indicatori in questa finestra hanno qualche relazione con i parametri salvati nel Template o diventano completamente indipendenti?

 
chief2000 >> :

Supponiamo che un set di indicatori sia stato salvato nel modello e che il modello sia stato caricato per una coppia di valute.

- Gli indicatori in questa finestra hanno qualche relazione con i parametri salvati nel Template o sono completamente indipendenti?


Le coppie salvate sono "inserite" negli indicatori una volta all'inizializzazione del modello, poi "diventano completamente indipendenti".

Tutti i parametri dell'indicatore modificati sono salvati nel modello, se avete cambiato i parametri dell'indicatore, salvate di nuovo il modello.

Motivazione: