Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1404

 
C'è un robot di trading MT4 esistente, aggiungo il codice con il link al conto di trading, ma continua a fallire. Lancia un errore. Ho bisogno di qualcuno che mi aiuti a farlo. il mio telegramma@Starinkov mi sarebbe molto grato)))
 

Spero che la traduzione sia fedele, ma ovviamente non lo sarà...

È per questa e altre ragioni che NON abbiamo bisogno di THREADS globali...

Altrimenti non avremmo i forum regionali...

Mossa bizzarra...

:(

 
Ciao, ho costruito un computer con 24 core per accelerare l'ottimizzazione e per poter ottimizzare le prestazioni della strategia su piccoli TF, come M1, M2, ecc. Quando lo avvio vedo che il processo ogni tanto si blocca e si blocca per molto tempo. Allego tre foto di questo. Sul mio vecchio computer (8 core) e non succede niente del genere. Inoltre, non c'è alcun vantaggio nell'usare un computer potente come risultato di questo stallo. Attualmente posso vedere che 8 core danno un risultato più veloce di 24x. E io volevo ottenere uno speedup di 10x. Forse c'è qualcosa che devo regolare da qualche parte? Per favore consigliate se qualcuno sa cosa potrebbe essere.
 

Salve.

Voglio fare un file include universale che può essere incluso con qualsiasi EA. E dovrebbe essere limitato a una sola inclusione senza alcun codice aggiuntivo.

Il problema è che il file usa OnTimer() come punto di ingresso.

Cosa succede se EA (a cui il mio file include si collega) usa anche OnTimer()? C'è qualche soluzione?

 

Buon pomeriggio. Faccio trading sul mercato azionario Moex. Broker Otkritie. Se ci sono posizioni aperte per diversi strumenti, il robot le confonde quando invia una richiesta di chiusura parziale (può inviare una richiesta con il prezzo delle azioni Sberbank per le azioni Magnit, per esempio. Cioè, lo strumento nella richiesta è specificato per Magnit, ma i prezzi sono specificati per Sberbank) o semplicemente non invia la richiesta. Codice dell'algoritmo di chiusura della posizione Long (viene eseguito quando il prezzo dello strumento raggiunge Price_Close_1_Buy):

void Price_Close_1_Buy()
  {

   MqlTradeRequest arequest;
   MqlTradeResult aresult;
   ZeroMemory(arequest);
   ZeroMemory(aresult);

   for(int i=PositionsTotal()-1; i>=0; i--)
      {
       if(Symbol()==PositionGetSymbol(i))
      {
       arequest.action   = TRADE_ACTION_DEAL;
       arequest.position = PositionGetTicket(i);
       arequest.symbol   = Symbol();
       arequest.volume   = NormalizeDouble((Lots_Close_1/100*Lots_current()),0);
       arequest.price    = aposition.PriceCurrent();
       arequest.type_filling = ORDER_FILLING_FOK;
       arequest.type     = ORDER_TYPE_SELL;
       Price_Close_1_Buy_Request_Send = true;
      }
       OrderSend(arequest,aresult);
       Print("=================================================================================================== ");
       Print(asymbol.Name());
       Print("Price_Close_1_Buy_request() ",arequest.price);
       Print("Lots_Close_1_Buy_request() ",arequest.volume);
       Print("Result ", aresult.comment);
       Print("Retcode ",aresult.retcode);
      }
  }
 
leonerd #:

Salve.

Voglio fare un file include universale che può essere incluso con qualsiasi EA. E dovrebbe essere limitato a una sola inclusione senza alcun codice aggiuntivo.

Il problema è che il file usa OnTimer() come punto di ingresso.

Cosa succede se EA (a cui il mio file include si collega) usa anche OnTimer()? C'è una soluzione?

Non farlo mai.

Solo un consiglio. Non cambierò idea.

 
Manter84 ci sono posizioni aperte per diversi strumenti, il robot le confonde quando invia una richiesta di chiusura parziale (può inviare una richiesta con il prezzo delle azioni Sberbank per le azioni Magnit, per esempio. Cioè, lo strumento nella richiesta è specificato per Magnit, ma i prezzi sono specificati per Sberbank) o semplicemente non invia la richiesta. Codice dell'algoritmo di chiusura della posizione Long (viene eseguito quando il prezzo dello strumento raggiunge Price_Close_1_Buy):
Sulla questione del prezzo - scava
aposition.PriceCurrent()
 
Koldun Zloy #:

Non farlo mai.

Solo un consiglio. Non ho intenzione di farti cambiare idea.

Questi sono i requisiti del progetto.

 

Come posso sovrascrivere la funzione predefinita OrderSend()?

#define OrderSend(MqlTradeRequest,MqlTradeResult)  MyOrderSend(MqlTradeRequest,MqlTradeResult)

Ho aggiunto una linea in alto.

Nel mio MyOrderSend() faccio alcuni calcoli e chiamo nuovamente OrderSend(). Voglio chiamare la nativa OrderSend(), ma invece ottengo una ricorsione e MyOrderSend() viene chiamata di nuovo.

E anche questa chiamata non aiuta ::OrderSend()
 
leonerd Hoaggiunto unariga sopra.

Nel mio MyOrderSend() faccio alcuni calcoli e chiamo nuovamente OrderSend(). Voglio chiamare la funzione nativa OrderSend(), ma invece ottengo una ricorsione e MyOrderSend() viene chiamata di nuovo.

Questo non funziona affatto. #define sostituisce il primo (la chiamata) con il secondo nel codice del programma, come OrderSend(..) viene sostituito con MyOrderSend(..) ogni volta che si verifica.

Motivazione: