Come codificare? - pagina 80

 
 

Nascondere lo stoploss

Qualcuno potrebbe dire come nascondere gli stoploss e i trailing stop in un EA? (Non mi piace l'idea che i broker vedano i miei stoploss o trailing stop, è come un bersaglio per loro). Grazie.

 
jturns23:
Qualcuno potrebbe dire come nascondere gli stoploss e i trailing stop in un EA? (Non mi piace l'idea che i broker vedano i miei stoploss o trailing stop, è come un bersaglio per loro). Grazie.

Semplicemente nel tuo codice definisci un valore di stop e un valore target.

Poi, dopo aver piazzato una transazione, ottieni il prezzo al quale sei entrato nella transazione, e poi con ogni nuovo tick controlli se il tuo stop o il tuo target è stato colpito.

Se è stato colpito, l'EA eseguirà la funzione OrderClose.

Personalmente, ho ancora uno stop che il broker può vedere anche se è impostato molto lontano dalla price action 50-100 pips. In questo modo, se il terminale scende per qualche motivo, sei almeno protetto da eventuali movimenti improvvisi.

Grazie,

Hiachiever

 
jturns23:
Qualcuno potrebbe dire come nascondere gli stoploss e i trailing stop in un EA? (Non mi piace l'idea che i broker vedano i miei stoploss o trailing stop, è come un bersaglio per loro). Grazie.

Quello che stai cercando di implementare è spesso chiamato 'soft-stop', dove si traccia dinamicamente il P&L, chiudendo l'ordine (o gli ordini) quando il target richiesto viene raggiunto - al contrario di piazzare 'hards-stop', che il broker può vedere e colpire...

Un hard-stop di qualche grado è essenziale imo (per lo scenario 'just-in-case'...) ma anche questo non vi salverà se avete un broker completamente senza scrupoli - come Fxopen: -

https://www.forex-tsd.com/forum/commercial-talks/9512-complaints-and-brokers-scam#comment_273270

 

una domanda difficile!

cari tutti

Sono nuovo per la programmazione su MT4. Ho finito un codice EA ma quando l'ho testato, ci sono stati alcuni errori Uno è, il mio codice vuole aprire 4 ordini quasi allo stesso tempo e allo stesso prezzo, ma il mio EA solo a volte può aprire tutto ma le altre situazioni sono, gli ordini sono stati appena aperti uno per uno e a prezzi diversi.

Pensi che posso risolvere questo problema usando

if(IsTradeAllowed()==false) Sleep(10000);

potreste aiutarmi a risolvere questo problema?

Grazie in anticipo!

 

Questa è la mia funzione per chiudere tutte le posizioni. Penso che sia molto semplice, ma l'EA spende sempre molto tempo per chiudere tutte le posizioni, il che significa che il prezzo di chiusura può variare.

potresti aiutarmi a risolvere il problema?

grazie in anticipo!

void close_all_position_now(int total_order)

{

int ticket=0;

doppio volume=0, prezzo=0;

for(int i=0;i<totale_ordine;i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso)

interrompere;

// OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber()==magic_number && OrderType()==0)

{

ticket=OrderTicket();

volume=OrderLots();

prezzo=Bid;

OrderClose(ticket,volume,prezzo,slippage,CLR_NONE);

}

else if (OrderMagicNumber()==magic_number && OrderType()==1)

{

ticket=OrderTicket();

volume=OrderLots();

prezzo=Ask;

OrderClose(ticket,volume,prezzo, slippage,CLR_NONE);

}

else if(OrderMagicNumber()==magic_number && OrderType()>=2)

{

ticket=OrderTicket();

OrderDelete(ticket);

}

}

}

 
ys16:
... ma l'EA impiega sempre molto tempo per chiudere tutte le posizioni, il che significa che il prezzo di chiusura può variare. ...}

I modi per chiudere molte posizioni allo stesso prezzo sono solo due:

1) Hanno lo stesso TP (o SL).

2) Aprire una posizione opposta con una dimensione pari al totale dei lotti che vuoi chiudere. In seguito puoi fare un po' di CloseBy().

Aprire più posizioni allo stesso prezzo è lo stesso problema: o si usano i pendings, o si apre una sola posizione del totale dei lotti, e si gestiscono eventualmente chiusure parziali.

 
Michel:
I modi per chiudere molte posizioni allo stesso prezzo sono solo due:

1) Hanno lo stesso TP (o SL).

2) Apri una posizione opposta con una dimensione pari al totale dei lotti che vuoi chiudere. Più tardi puoi fare un po' di CloseBy().

Aprire diverse posizioni allo stesso prezzo è lo stesso problema: o si usano i pendings, o si apre solo una posizione del totale dei lotti, e si gestiscono eventualmente chiusure parziali.

Caro Michel,

Grazie mille. per quanto riguarda il costo, devo pagare lo spread delle posizioni opposte?

Qual è la ragione per cui l'EA non può chiudere tutte le posizioni in un tempo molto breve? È perché gli ordini di chiusura hanno bisogno di tempo per essere eseguiti.

A volte, le 3 posizioni possono essere chiuse dopo una variazione di prezzo, ma a volte solo 1 posizione può essere chiusa.

Avete qualche risorsa relativa alla programmazione MQL4? Non conoscevo la scala temporale per eseguire l'EA.

Conosco bene la programmazione C perché sono un ingegnere, ma il mio EA non può eseguire completamente ciò che ho programmato.

Come

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()==magic_number && OrderType()==OP_BUY)

Pensi che questo tipo di funzione richieda molto tempo per l'esecuzione, che è più lungo di ogni ciclo di EA.

 
ys16:
Caro Michel,

Grazie mille. per quanto riguarda il costo, devo pagare lo spread delle posizioni opposte?

Qual è la ragione per cui l'EA non può chiudere tutte le posizioni in un tempo molto breve? È perché gli ordini di chiusura hanno bisogno di tempo per essere eseguiti.

A volte, le 3 posizioni possono essere chiuse dopo una variazione di prezzo, ma a volte solo 1 posizione può essere chiusa.

Avete qualche risorsa relativa alla programmazione MQL4? Non conoscevo la scala temporale per eseguire l'EA.

Conosco bene la programmazione C perché sono un ingegnere, ma il mio EA non può eseguire completamente ciò che ho programmato.

Come

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()==magic_number && OrderType()==OP_BUY)

Pensate che questo tipo di funzione richieda un tempo di esecuzione molto lungo, più lungo di ogni ciclo dell'EA.

Molti broker permettono un "full hedging", questo significa che il margine usato è calcolato sulla differenza tra le posizioni lunghe e quelle corte. Quindi non c'è margine usato per una posizione completamente coperta, e potete chiuderle entrambe (una con l'altra) senza spread aggiuntivi. Quindi si spende solo uno spread se si chiude una posizione normalmente o aprendone una opposta.

Per quanto riguarda il tempo, il tempo di esecuzione del codice è molto veloce e non ha nulla a che fare con il tempo di dealing desk del broker.

 

esperto su grafico offline

Salve,

Sto cercando di utilizzare un EA su un grafico offline (per esempio come quello creato da period_converter). Non ricevono tick che hanno bisogno di usare il ciclo while() all'interno. Tuttavia, dopo alcuni minuti il grafico offline mostra "Waiting for update" e non viene più aggiornato. Ho il sospetto che si tratti di una sorta di blocco, perché quando apro un altro grafico offline allora viene aggiornato correttamente, e quando lo chiudo il grafico originale è OK per un po' fino al prossimo blocco "Waiting for update".

Sto facendo qualcosa di sbagliato o è un problema di MT4?