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

 
Artyom Trishkin #:
E come è facile mettere insieme un array e ordinare secondo il criterio giusto. Ma per 100500 pagine siamo stati con le spalle al muro.
Per favore, mostratemi un esempio in codice. Non so come impilare in un array e poi ordinare anche.
 
Alexey Viktorov #:
Dopo tutto, è più facile e veloce controllare che aspettare una risposta da qualcun altro...

Le mie competenze in mql sono troppo basse) potrei provare, ma mi porterebbe via un sacco di tempo) quindi è meglio scoprire se è possibile che spendere un sacco di tempo e scoprire che non si può fare)
quando avrò più tempo libero, sarà certamente più facile provare, ma per ora preferisco chiedere a persone più esperte se si può fare.

 
Scarick #:

Le mie competenze in mql sono troppo piccole) posso certamente provare, ma mi porterà via molto tempo) quindi è meglio scoprire in anticipo se è possibile fare qualcosa, piuttosto che spendere molto tempo e scoprire che non si può fare)
quando avrò più tempo libero, sarà certamente più facile provare, ma per ora preferisco chiedere a persone più esperte se si può fare.

Se le tue abilità non sono troppo grandi, ma il tuo pensiero logico funziona, cosa si può capire da questa domanda?

Forum sul trading, sui sistemi di trading automatico e sulla verifica delle strategie di trading.

Tutte le domande dei principianti su MQL4 e MQL5, aiuto e discussione su algoritmi e codici

Scarick, 2021.11.06 17:01

In altre parole, se segno 5 simboli in un indicatore, posso lavorare con tutti e 5 i simboli attraverso un OnBookEvent()? L'unica cosa importante è filtrare da quale carattere è avvenuto il cambiamento?

allora la cosa più affidabile da fare è controllare, non aspettare una risposta positiva da qualcun altro. Ecco perché ho risposto come ho fatto.
 
MakarFX #:
Per favore, mostratemi un esempio in codice. Non so come impilare in un array e poi ordinare anche.

Guarda quihttp://www.mql5.com/ru/articles/1404 Nessun ordinamento lì, ma stack in un array.

Управление ордерами – это просто
Управление ордерами – это просто
  • www.mql5.com
Статья описывает разнообразные способы контроля открытых позиций и отложенных ордеров и призвана облегчить написание экспертов.
 
MakarFX #:
Per favore, mostratemi un esempio in codice. Non so come impilare in un array e poi anche ordinare.

bool BubleSort(struct &arr[])

{

for(int i = ArraySize(arr)-1;i>=0;i--)
for(int j = i-1;j>=0;j--) {

se (Compare(arr[i],arr[j])<0 ) Swap(arr[i],arr[j]);

}

}

Fottiti - vai a scuola... questi micro-algoritmi sono scritti a memoria con un occhio chiuso.

seriamente: fai un corso di algoritmica o qualcosa del genere...

 
Alexey Viktorov #:

Nel tuo caso, se le abilità non sono grandi ma il pensiero logico funziona, come si può dedurre da questa domanda

allora la cosa più affidabile da fare è controllare piuttosto che aspettare una risposta positiva da qualcun altro. Ecco perché ho risposto come ho fatto.
Sì, ho già capito come provare con meno lavoro. Ma non si può controllare attraverso un tester. Devo aspettare dei giorni lavorativi. Ma avresti potuto rispondere direttamente) Non ti sto chiedendo di scrivere il codice per me, ho solo fatto una domanda.
 

Maxim Kuznetsov #:

vaffanculo - vai a scuola... tali micro-algoritmi sono scritti a memoria e da ubriachi, con un occhio chiuso

Seriamente, fate un corso di algoritmica o qualcosa del genere.

Interessante modo di parlare... non avresti dovuto disturbarti

 
MakarFX #:

Interessante modo di parlare... non avresti dovuto disturbarti

Modo normale - ti viene dato un algoritmo di ordinamento. Va bene, normale ordinamento delle bolle. Nessuno si stava sforzando.

E il messaggio normale è davvero - leggi gli algoritmi

Leggete già la letteratura.

 

Buona giornata signori programmatori!!!!

Proverò ancora una volta a porre la mia domanda, ma l'ho riformulata un po'.

In una griglia EA, dobbiamo trovare il biglietto del penultimo ordine. Una soluzione di -1 dal ticket dell'ordine massimo non funziona nel tester di strategia, forse, ma non funzionerà su un conto demo o reale, quindi allego un'immagine, sarà chiaro perché.

Ho scritto il codice della funzione che determina il penultimo biglietto d'ordine. Questa logica è la seguente: se guardiamo tutti gli ordini aperti nella griglia, troveremo il massimo che lo segue e sarà il biglietto d'ordine necessario.

Tuttavia, il mio livello di programmazione non è abbastanza alto e c'è qualche errore nel codice. Il risultato di questa funzione è il biglietto minimo. Queste due funzioni sono max ticket e penultimo ticket. La funzione max ticket funziona senza problemi.

//+----------------------------------------------------------------------------+
//| Расчет тикета предпоследнего ордера в сетке                                |
//+----------------------------------------------------------------------------+
int GetTicketPenultimateOrder()
  {
   penultimate_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > penultimate_ticket && penultimate_ticket != GetTicketMaxOrder())
                     penultimate_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(penultimate_ticket);
  }
//+----------------------------------------------------------------------------+
//| Расчет тикета максимального ордера в сетке                                 |
//+----------------------------------------------------------------------------+
int GetTicketMaxOrder()
  {
   max_ticket = 0;
     {
      for(int cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
        {
         if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
           {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
              {
               if(OrderType() == OP_BUY || OrderType() == OP_SELL)
                 {
                  if(OrderTicket() > max_ticket)
                     max_ticket = OrderTicket();
                 }
              }
           }
        }
     }
   return(max_ticket);
  }

Si prega di consigliare qual è l'errore. Grazie.

 
Scarick #:
Sì, ho già capito come provare con meno sforzo. Ma non posso verificarlo con un tester. Devo aspettare dei giorni lavorativi. Ma potresti rispondere direttamente) Non sto chiedendo di scrivere il codice per me, ho solo fatto una domanda.

Ecco, non volevo offenderti. Che differenza farebbe una risposta positiva? Dopo tutto, devi scrivere e controllare solo durante le ore di lavoro.

Motivazione: