Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1820

 
Valeriy Yastremskiy #:
Non esiste una cosa del genere. Questo non è un linguaggio procedurale. Qui, il programma è rigorosamente top-down. E le chiamate di funzione risolvono tutto ciò che ci sono i loop, se è così. E OOP)
Capito. Capito. Grazie per il chiarimento.
 
Tretyakov Rostyslav #:

Grazie!

 
Tretyakov Rostyslav #:

Ciao

    if(OrderSelect(FindTicketOrder(), SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(FindTicketOrder(),OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

Ho un ordine di profitto su un biglietto, voglio chiudere quando raggiunge -x.

Ma ho tutti gli ordini chiusi in fila.

Puoi dirmi come farlo correttamente?

 
Alexander Avksentyev #:

Ciao

Ho un ordine di profitto su un biglietto, voglio chiudere quando raggiunge -x.

Ma ho tutti gli ordini chiusi in fila.

Puoi dirmi come farlo correttamente?

Prova a farlo in questo modo

 int min_ticket=FindTicketOrder();
    if(OrderSelect(min_ticket, SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(min_ticket,OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

In generale, si dovrebbe sviluppare l'intera funzione per capire cosa si sta facendo

//+------------------------------------------------------------------+
void Функция()
  {
   ...твой код, возможные ошибки;
  }
//+------------------------------------------------------------------+
 
Alexander Avksentyev #:

Ciao

Ho un ordine di profitto su un biglietto, voglio chiudere quando raggiunge -x.

Ma ho tutti gli ordini chiusi in fila.

Puoi dirmi come farlo correttamente?

Come si fa a far chiudere tutti gli ordini se vedo solo una chiamata OrderClose?

Non è molto chiaro dove viene chiamato questo codice... Anche l'algoritmo del robot non è chiaro...
 
Mihail Matkovskij #:

Come si chiudono tutti gli ordini se vedo solo una chiamata OrderClose?

Chiude un ordine non appena viene aperto

 
Tretyakov Rostyslav #:
Non è quello che volevi - è un esempio. Stavo facendo un EA per il trading semi-automatico.


Quello che vuoi lo devi scrivere tu).

Semmai, vi aiuterò.

Quindi, descriverò più specificamente ciò di cui ho bisogno per questo EA Fast Pending Orders Panel, ho parzialmente trovato pezzi di codice da questa lista (20%), ma il resto dovrò chiedere a voi, colleghi.


1) Guscio: visualizza come tale un tabellone con pulsanti sul grafico: BUY_lp(lower ASK in___pips), SELL_hp (higher BID in___pips) - numero in pip inserito manualmente sul tabellone, BUY_lt (lower ASK fino a____seconds),SELL_ht (higher BID fino a____seconds) - numero in secondi inserito manualmente sul tabellone, CLOSE_buys, CLOSE_sells - chiude tutti gli ordini.

a) codice per creare un pulsante sul grafico; il tabellone come oggetto di sfondo;

b) codice per inserire valori in questo tabellone (pip, secondi) campi speciali per questo

c) salvare il valore dei pip in un certo file di memoria dove il prezzo è fissato dopo aver premuto il pulsante e il numero di pip per il prezzo al quale si vuole entrare nel mercato viene aggiunto o sottratto;

d) salvare il valore dei secondi in un certo file di memoria, dove il valore minimo/massimo del prezzo per il periodo selezionato "in secondi" è continuamente contato;

2) all'interno: esecuzione.

a) leggere il valore in pip e il prezzo fisso dal file, dopo aver premuto il pulsante BUY_lp o SELL_hp, per confrontarlo con il prezzo corrente;

b) quando viene premuto il pulsante BUY_lt o SELL_ht, il valore in secondi e il prezzo massimo/minimo modificato viene letto da un file in modo da essere confrontato con il prezzo corrente;

c) quando il prezzo corrente raggiunge il valore richiesto - entrare nel mercato (ordine aperto);

d) pulsante per chiudere l'ordine o tutti gli ordini. Questo pulsante dovrebbe funzionare diversamente a seconda della modalità di esecuzione; se il prezzo è stato inserito per "pips", allora, dopo aver chiuso per un numero uguale di pips, il prezzo di chiusura dovrebbe essere diverso nella direzione "migliore" (aspettando quel prezzo dopo aver premuto "close"), se il pulsante è "per secondi", allora il prezzo migliore dovrebbe essere calcolato per un certo periodo (aspettando quel prezzo, ma non inferiore/superiore al momento in cui si preme il pulsante).

 
Alexander Avksentyev #:

Chiude l'ordine non appena si apre

Beh, sì. Il profitto ha sempre un valore negativo nel momento in cui viene inserito a causa dello spread... Prova a diminuire il valore di x.

Ed è meglio fare la propria funzione di calcolo dei profitti in pip (naturalmente, se non si vuole impostarla nella valuta di deposito).
 
Mihail Matkovskij #:

Beh, sì. Il profitto ha sempre un valore negativo al momento dell'entrata a causa dello spread... Prova a ridurre il valore di x.

-x meno di spread, output su Print

if(OrderProfit()<=-x);

sarà vero se le condizioni corrispondono. aggiungendo un comando di chiusura. chiude immediatamente

 
Mihail Matkovskij #:

Beh, sì. Il profitto ha sempre un valore negativo nel momento dopo l'entrata a causa della presenza di spread... Prova a ridurre il valore di x.

E sarebbe meglio fare la propria funzione per calcolare il profitto in pip (naturalmente, se non si vuole impostarlo nella valuta di deposito).

Puoi farlo con i punti, non fa molta differenza. Volevo solo renderlo più semplice