Auguri per MQL5 - pagina 59

 
diakin >> :

Che tipo di eventi, per esempio?

Per esempio, dalla pratica, la chiusura di una posizione. Ho avuto un compito simile - sapere quando una posizione è stata chiusa per modificare altri ordini tenendo conto dei fondi rilasciati. Ho dovuto monitorare lo stato dell'account per tutto il tempo. Ho provato a rintracciare gli ordini dalla cronologia ma è stato impossibile testarli, tutto richiede molto tempo.

L'unico evento che può essere elaborato ora è un tick.

 
Gupm писал(а) >>

Per esempio, dalla pratica, chiudendo una posizione. Ho avuto un compito simile - sapere quando una posizione è stata chiusa per modificare altri ordini tenendo conto dei fondi rilasciati. Ho dovuto monitorare lo stato dell'account per tutto il tempo. Ho provato a rintracciare gli ordini dalla cronologia ma è stato impossibile testarli, tutto richiede molto tempo.

L'unico evento che può essere gestito ora è un tick.

Ma comunque, start() viene lanciato ad ogni tick. Lì si può fare qualsiasi controllo, se qualche evento si è verificato o meno.

 
diakin писал(а) >>

Quindi, comunque, start() viene eseguito ad ogni tick. Lì si può fare qualsiasi tipo di controllo, se qualche evento è accaduto o meno.

Sì, lo è, lo sto facendo ora, ma quanto sarà meraviglioso quando l'ordine sarà un oggetto, che avrà, per esempio, un evento di chiusura, al quale legherete il vostro gestore e tutto, questa parte del codice è assolutamente separata, debuggata, ecc.

 
Gupm писал(а) >>

Sì, lo fa, è quello che sto facendo ora, ma quanto sarà meraviglioso quando l'ordine sarà un oggetto che avrà, per esempio, un evento di chiusura, al quale legherete il vostro gestore e questo è tutto, questa parte del codice è completamente separata, debuggata, ecc.

Penso che possa essere facile da fare in MQL5.

;)

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

L'ultimo parametro è il nome della funzione da chiamare quando si chiude l'ordine. Il compilatore riconoscerà comunque le funzioni nel testo e le riconoscerà nei parametri.

E gli eventi sono gestiti internamente, poiché il messaggio di chiusura dell'ordine (o di errore) viene stampato nel log.

Ma possiamo aspettarci più eventi, che dovrebbero anche essere descritti in parametri, almeno con valori vuoti, come OnCloseEmpty, OnOpenEmpty , ecc.

In generale, sarebbe bene aggiungere una lista di modelli per le funzioni chiamate frequentemente, quando si seleziona da cui il modello di funzione con tutti i parametri richiesti verrebbe inserito nel testo.

Ora dobbiamo andare nell'aiuto, copiare la descrizione della funzione e modificare i parametri.

 

Vorrei fare una richiesta per MQL5.

Scusate, se lo ripeto, non ho letto tutti i post precedenti...

Vorrei che i cicli in nuovi mql fossero contrassegnati in qualche modo, per esempio, così:

 
Duke3D писал(а) >>

...

Vorrei che i cicli nel nuovo mql fossero evidenziati in qualche modo, ad esempio così:

Almeno fate un pulsante di formattazione del testo con indentazione automatica per le parentesi graffe.

Ora, se si perde una staffa, è molto difficile trovare dove è successo.

E anche aggiungere la numerazione delle linee. Non è una cosa comune in C. È più comodo che cercare il numero di linea sulla barra di stato.

 
diakin >> :

Penso che sia facile da fare in MQL5.

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, 
int magic=0, datetime expiration=0, color arrow_color=CLR_NONE, 
func OnClose) 

;)

L'ultimo parametro è il nome della funzione da chiamare quando si chiude l'ordine. Il compilatore riconosce comunque le funzioni nel testo, e le riconoscerà nei parametri.

E gli eventi sono gestiti internamente, poiché il messaggio di chiusura dell'ordine (o di errore) viene stampato nel log.

Ma possiamo aspettarci più eventi, che dovrebbero anche essere descritti in parametri, almeno con valori vuoti, come OnCloseEmpty, OnOpenEmpty , ecc.

In generale, sarebbe bene aggiungere una lista di modelli per le funzioni chiamate frequentemente, quando si seleziona da cui il modello di funzione con tutti i parametri richiesti verrebbe inserito nel testo.

Ora devo andare nell'aiuto, copiare la descrizione della funzione e modificare i parametri.

Perché solo onClose? Che dire di onModify, onOpen?

Forse se questo è un oggetto, dovrebbe essere qualcosa come questo:


TOrder order = new  TOrder(symbol, cmd,  volume, price, slippage, stoploss, takeprofit, comment);
order.addEventListener( "open", myOpenHandler);
order.addEventListener( "close", myCloseHandler);
order.addEventListener( "modify", myModifyHandler);
order.send();

Ы?

 
TedBeer писал(а) >>

Perché solo onClose? Che dire di onModify, onOpen?

Forse se l'ordine è un oggetto, ci dovrebbe essere qualcosa come questo:

Ы?

È difficile da dire.

int ticket=OrderSend(parametri); // la solita funzione di MQL4

order(ticket).addEvent ("open", myOpenHandler);

O più compatto

Order(ticket).OnOpen=myOpenHandler;

dove Order(handle) è qualcosa di standard, un oggetto o una struttura attraverso la quale si può arrivare alle proprietà dell'oggetto dato handle.

double MyVolume=Order(ticket).Volume;


Un sacco di eventi personalizzati non possono essere avvitati. O possiamo?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler);

Dove è descritto "MyCustomEvent" in questo caso? (se NON è una combinazione di eventi e precondizioni standard).

Anche se da quanto ho capito MQL5 è già stato scritto, quindi è un desiderio per il futuro ;)))

 
diakin >> :

È difficile da dire.

int ticket=OrderSend(parametri); // solita funzione da MQL4

Order(ticket).addEvent ("open", myOpenHandler);

O più compatto

Order(ticket).OnOpen=myOpenHandler;

dove Order(handle) è qualcosa di standard, un oggetto o una struttura attraverso la quale si può arrivare alle proprietà dell'oggetto dato handle.

double MyVolume=Order(ticket).Volume;


Un sacco di eventi personalizzati non possono essere avvitati. O possiamo?

Order(ticket).addEvent ("MyCustomEvent", MyCustomEventHandler);

Dove è descritto "MyCustomEvent" in questo caso? (se NON è una combinazione di eventi e precondizioni standard).

Anche se, da quanto ho capito, MQL5 è già stato scritto, quindi è un desiderio per il futuro ;)))

Beh, avete un'accozzaglia di approccio funzionale e OOP. Ideologicamente, dovrebbe essere l'uno o l'altro. Anche se le solite funzioni sono conservate per la retrocompatibilità, anche l'OOP dovrebbe essere implementata, altrimenti che senso ha una modernizzazione così profonda chiamata MQL5?

Purtroppo tutte le nostre discussioni sono simili alla lettura delle foglie di tè. Non servono a niente, dato che non vediamo nessuna volontà da parte di methaquotes, non solo di dare la versione beta, ma anche di pubblicare le specifiche del linguaggio che hanno implementato. Poi si potrebbe ragionevolmente chiedere di fare qualcosa con il linguaggio prima di rilasciarlo come prodotto.