[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 358

 
Chiripaha:

Questo parametro è responsabile del colore della freccia di cancellazione https://docs.mql4.com/ru/trading/OrderDelete - Puoi rimuoverlo (il parametro) da lì del tutto, allora la freccia non apparirà solo. E se avete davvero bisogno di una freccia, è meglio che rileggiate la sezione Tipi di variabili del libro.

A proposito, sono lo stesso non particolarmente sofisticato nel coding (alcune persone lo chiamano programmazione, non distinguendo tra questi concetti - ma è coding). E lo stesso vale per i libri di riferimento e per cercare cosa sono queste cose. Masticare più spesso libri di riferimento e libri di testo. Di regola, la maggior parte delle questioni sono coperte lì. - Lo fanno tutti, anche quelli esperti, perché non si può memorizzare tutto. Questi sono tutti materiali di riferimento.

clDelete - come si può intuire, cl è il colore, Delete è la cancellazione. Il colore della cancellazione.


Grazie mille per la risposta, ho già cancellato la variabile clDelete

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
  if (sy=="") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) 
          {
          OrderDelete(OrderTicket());
          }

Ma in questo caso il compilatore genera un altro errore.

'DeleteOrders' - la funzione non restituisce alcun risultato C:\Program Files\Alpari NZ MT4\experts/delete.mq4 (68, 5)

Come risolvere il problema.


 
solnce600:

Buon pomeriggio a tutti!

Sto cercando di utilizzare la funzione per cancellare TUTTI gli ordini pendenti nel tester dalle funzioni di Kim

Quando provo a compilarlo, ottengo un errore che dice che la variabile 'clDelete ' non è definita.

'clDelete' - variabile non definita C:\Program Files\Alpari NZ MT4\experts\Positive.mq4 (94, 38)

Per favore, ditemi - come e dove dovrebbe essere definito?

Grazie.

Per prima cosa, invertire il ciclo:

    for (i = k - 1; i <= 0; i--)

e dare alla funzione OrderDelete() ciò che vuole.

 
TarasBY:

Array enumerazione:

- Se ho capito bene i tuoi "desideri".

Igor, grazie mille!

Da quanto ho capito, non c'è una funzione speciale, quindi deve essere forza bruta.

 
Chiripaha:

Igor, grazie mille!

Da quanto ho capito, non c'è una funzione speciale, quindi deve essere eccessiva.

Non c'è una funzione standard.
 
solnce600: 'DeleteOrders' - la funzione non restituisce alcun risultato C:\Program Files\Alpari NZ MT4\experts\Orders.mq4 (68, 5)

La vostra funzione (auto-scritta) DeleteOrders() non restituisce nulla! Guardate nel vostro codice - come lo chiamate.
 

Grazie mille per la sua pronta risposta.

Il ciclo è stato distribuito.

Ora genera un altro errore

DeleteOrders' - la funzione non restituisce alcun risultato

E di cos'altro ha bisogno la funzione OrderDelete(OrderTicket()) come parametro passato, a parte OrderTicket() e a parte il colore della freccia (che non mi serve)?

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ot;
  
  if (sy=="") sy=Symbol();
   for (i = k - 1; i <= 0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot==OP_SELLSTOP) {
        if (OrderSymbol()==sy && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) 
          {
          OrderDelete(OrderTicket());
 
TarasBY:
La tua funzione (auto-scritta) DeleteOrders() non restituisce nulla! Guardate il vostro codice - come lo chiamate.
Cioè ci dovrebbero essere linee TRUE o FALSE alla fine del codice della vostra funzione personalizzata?
 
TarasBY:
La tua funzione (auto-scritta) DeleteOrders() non restituisce nulla! Guarda nel tuo codice - come lo chiami.

Inserite linee alla fine del codice della funzione che restituiscono true

Modificata la chiamata di funzione

R = DeleteOrders(true);
if(R ==true )

Ticket=OrderSend(Symbol(),OP_SELLSTOP,0.1,iHigh( Symbol (), 0,1)-1500*Point,1,iHigh( Symbol (), 0,1),iHigh( Symbol (), 0,1)-1610*Point, "jfh",123 );//ENA
//Ticket=OrderSend(Symbol(),OP_SELLSTOP,0.1,iHigh( Symbol (), 0,1)-1000*Point,1,iHigh( Symbol (), 0,1)+330*Point,iHigh( Symbol (), 0,1)-1100*Point, "jfh",123 );//ENA
if (Ticket>0)
X=iHigh( Symbol (), 0,1);
if (OrderSelect (ot-1,SELECT_BY_POS)
if ( OrderType ()==OP_SELLSTOP)
DT = OrderOpenTime ();

}
}

return(0);

void DeleteOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ot;

if (sy=="") sy=Symbol();
for (i = k - 1; i <= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot==OP_SELLSTOP) {
if (OrderSymbol()==sy && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn)
{
int W = OrderDelete(OrderTicket());
if (W==true)
return(true);

Restituisce lo stesso errore.

'DeleteOrders' - la funzione non restituisce alcun risultato

Potreste per favore dirmi qual è il mio errore.

Grazie.

 
solnce600:

Inserite linee alla fine del codice della funzione che restituiscono true

Modificata la chiamata di funzione

R = DeleteOrders(true);
if(R ==true )

Il tipo di funzione è stato dimenticato:

void bool DeleteOrders (string sy="", int op=-1, int mn=-1)
 
TarasBY:

Il tipo di funzione è dimenticato:

Tutto OK!!! grazie mille!!!
Motivazione: