Domanda sul consulente multivaluta - pagina 12

 

Pomeriggio. Funzione MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )

visualizza correttamente un ordine di ticker che è attualmente più lontano dal prezzo corrente rispetto agli altri ordini.

Devo cancellare questo ordine "lontano" se il numero di ordini effettuati supera il valore specificato.

Io faccio così:

//--------Удаление лишних ордеров--------------

if ( NumberOfOrders(NULL,OP_BUYSTOP,-1)> Количество_ордеров_  ){
//если число ордеров больше заданного

 for (int v=0; v<OrdersTotal(); v++)                                   {       
  if (OrderSelect( v, SELECT_BY_TICKET, MODE_TRADES))                    {
// перебираем по тикету
           
   if (OrderSymbol()==Symbol())                                        {                  
    if (OrderType() == OP_BUYSTOP)     { выбираем байстопы 


if (OrderTicket()== MiniMaxOrderPrice(Symbol(), -1,OP_BUYSTOP,1) )
//если тикет равен тикету самого дальнего ордера, - удаляем его

{     OrderDelete(OrderTicket(),Yellow);     return(0);    }
             }}}}} 


Ma purtroppo non è affatto l'ordine più lontano che viene cancellato (se viene cancellato).

Tuttavia, posso vedere nel commento e sul grafico che la funzione è cancellata.

MiniMaxOrderPrice(Symbol(), -1,OP_BUYSTOP,1)
è il biglietto più lontano che viene restituito.

Ma è l'ordine vicino che viene rimosso. E poi, dopo diverse cancellazioni, cominciamo a ricevere errori di cancellazione dell'ordine 4108 (biglietto sbagliato/biglietto sconosciuto).

Apparentemente c'è un errore nel codice nelle ultime 2-3 righe.... !

Si prega di consigliare dove potrebbe esserci un errore ...? ??


 
rid писал(а) >>

Pomeriggio. Funzione MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )

visualizza correttamente un ordine di ticker che è attualmente più lontano dal prezzo corrente rispetto agli altri ordini.

Devo cancellare questo ordine "lontano" se il numero di ordini effettuati supera il valore specificato.

Io faccio così:


Ma purtroppo non è l'ordine più lontano che viene cancellato (se viene cancellato).

Anche se, nel commento e visivamente nel grafico, vedo che la funzione

restituisce il biglietto esattamente il più lontano.

Ma cancella quello vicino per qualche motivo. E poi, dopo diverse cancellazioni, cominciano a verificarsi gli errori di cancellazione dell'ordine 4108 (biglietto sbagliato/biglietto sconosciuto).

Apparentemente c'è un errore nel codice nelle ultime 2-3 righe.... !

Si prega di consigliare dove potrebbe esserci un errore ...? ??

int DeleteTicket= MiniMaxOrderPrice(Symbol(), -1,OP_BUYSTOP,1);
OrderSelect( DeleteTicket, SELECT_BY_TICKET);
OrderDelete(OrderTicket(),Yellow);  
Potresti fare qualcosa del genere, anche se non sono sicuro che sia l'opzione migliore
 
Grazie. Farò un tentativo.
 

Già...

Sembra che l'ordinamento per biglietto in questa situazione sia un affare complicato e non del tutto corretto.

Il programma si confonde nei biglietti! Si sta ritardando l'uscita. Cancella gli ordini fuori ordine...

Cercherò di stabilire degli ordini con diversi maghi. E poi ordinare per mago con tutte le implicazioni...

 

Se non ti dispiace, posso dare un'occhiata all'intero codice, controllare. vinin@mail.ru

 

OK! Grazie. Pulisco il moccio nel codice, lo spazzolo e lo mando.

 

Puoi dirmi qualcosa, per favore? Se apro un mucchio di grafici e metto un EA su ogni grafico, funzionerà ognuno di essi o solo quello nella finestra del grafico attivo?

 

Sì - è probabile che questo sia il caso. Tutti gli EA funzioneranno, in tutte le finestre.

Inoltre, dai un'occhiata ai parametri di EA.

Ci deve essere un'opzione Magic o qualcosa di simile. SIMILE.

Cioè, questo è il parametro con cui l'EA distingue gli ordini e le posizioni "aliene" dalle proprie!

È come ha detto il poeta! -

Se un uomo mi è fedele - è mio fratello,
Un fratello infedele è mio nemico, dannalo al centuplo.
La medicina a volte è più pericolosa del veleno,
La malattia a volte cura il veleno. (O.H.)

In altre parole, i mandati messi in piedi da un altro esperto, con un altro mago, ogni particolare esperto non presta attenzione. Ed espone e "raccoglie per la modifica" o chiude solo il loro, con il mago specificamente impostato da lui!

Questo è tutto...

 

Mi chiedo se ognuno ha il proprio wizard e solo una posizione consentita alla volta, l'EA aprirà una posizione se c'è già una posizione aperta

da un altro EA?

 

La domanda è formulata in modo vago, ma l'ho capita.

La risposta è - Sì! - certo che sì! Perché è detto:

Chi nel calice della vita farà brillare una goccia?
Tu o io? Egli brillerà e svanirà.
E il coppiere della vita, - milioni
Radioso schizza e versa e verserà.(0.X.)

//-------------------------------------------------------------

Indipendentemente dal fatto che ci siano posizioni aperte nel terminale per questo strumento. Aperto manualmente o da un altro Expert Advisor.

Ma se il magik di queste posizioni aperte non corrisponde al magik dello specifico EA in questione, allora questo EA aprirà la propria posizione con il proprio magik! Nonostante la presenza di altre posizioni (con un diverso mago) per questo strumento.


Motivazione: