ordersend() aiuto nella codifica... - pagina 2

 

Sai che stavo pensando a quello che ti ho detto prima

Se è un acquisto:

SL = Bid - StopLoss* Point

TP = Bid + TakeProfit* Point

Se è una vendita:

SL = Ask + StopLoss* Point;

TP = Ask - TakeProfit* Point;

Ho sempre fatto in questo modo perché è così che si fa negli esempi del libro MQL4, ma ora sto pensando che non sembra corretto, sicuramente se apri sul prezzo Ask vuoi prendere profitto a quel prezzo + il tuo importo TP, e vuoi fermarti a quel prezzo - il tuo importo SL?

In altre parole, il modo in cui l'hai fatto sembra essere corretto o c'è qualcosa che mi sfugge?

 
mugged:

1) Sì, questo metodo funziona! C'è un modo per aggirare questo problema? Odio il pensiero del caso peggiore in cui l'ordine iniziale entra ma la modifica non avviene (la connessione muore, si verifica un errore, ecc ecc)

Bella domanda! Non ho MAI visto nessuno con un work around per questo.

Chiedi gentilmente al tuo broker di questo "caso peggiore".

 
mugged:

1) Sì, questo metodo funziona! C'è un modo per aggirare questo problema? Odio il pensiero del caso peggiore in cui l'ordine iniziale entra ma la modifica non avviene (la connessione muore, si verifica un errore, ecc ecc)

Nel mio codice se l'OrderModify fallisce viene riprovato più volte, se i tentativi falliscono allora l'ordine viene chiuso, se l'OrderClose fallisce viene riprovato, se i tentativi falliscono c'è un'altra funzione che controlla tutti i trade, rileverà l'ordine senza SL o TP impostato e cercherà di chiuderlo. Tutti questi fallimenti genereranno errori, questi errori sono segnalati sullo schermo e via email, l'email genererà anche un avviso spinto sul mio cellulare.

C'è un'altra modalità di errore che non ho ancora gestito, cioè una perdita di connettività a Internet subito dopo che l'ordine è stato piazzato e prima che venga modificato. Ho un'idea per gestire questo, ma non ho le competenze di codifica PHP necessarie.

 

Ho contattato il mio broker, sono stati abbastanza inutili in quanto non offrono alcun aiuto di programmazione. Praticamente tutto quello che il rappresentante sapeva era come applicare un EA al grafico.

È piuttosto strano che questo problema abbia iniziato ad accadere solo ora, in passato funzionava perfettamente bene. Mi chiedo cosa l'abbia causato...

 
Avete avuto questo problema per molto tempo o è qualcosa di nuovo?
 
È un fatto della vita con un broker ECN.
 

Grazie per il vostro aiuto ragazzi.

Credo che ci lavorerò intorno.

 
RaptorUK:

Nel mio codice se l'OrderModify fallisce viene riprovato diverse volte, se i tentativi falliscono allora l'ordine viene chiuso, se l'OrderClose fallisce viene riprovato, se i tentativi falliscono c'è un'altra funzione che controlla tutti i trade, rileverà l'ordine senza SL o TP impostato e cercherà di chiuderlo. Tutti questi fallimenti genereranno errori, questi errori sono segnalati sullo schermo e via email, l'email genererà anche un avviso spinto sul mio cellulare.

C'è un'altra modalità di errore che non ho ancora gestito, cioè una perdita di connettività a Internet subito dopo che l'ordine è stato piazzato e prima che venga modificato. Ho un'idea per gestire questo, ma non ho le competenze di codifica PHP necessarie.


Raptor, se non ti dispiace... come pensavi di controllare la connettività via PHP?
 
Forse si potrebbe avere un cellulare in modalità modem collegato al computer in modo che se il computer perde la sua connettività internet regolare può temporaneamente riconnettersi utilizzando la rete cellulare
 
RaptorUK:
C'è un'altra modalità di fallimento che non ho ancora gestito, cioè una perdita di connettività a Internet subito dopo che l'ordine è stato piazzato e prima che venga modificato. Ho un'idea per gestire questo, ma non ho le competenze di codifica PHP necessarie.

Il mio approccio è quello di segnalare solo l'errore e tornare indietro. Al prossimo tick, al riavvio, alla riconnessione, il ciclo orderSelect di EA troverà l'ordine aperto e quindi imposterà gli stop.

Il problema più grande è l'orderSend che non restituisce alcun risultato. L'ordine può essere aperto o meno. Quando avrai il prossimo tick allora lo saprai.