Meno codice, più azione... scrivere un EA - pagina 9

 
Vladimir Simakov:

È come, cosa non sto controllando?

Non eseguirlo solo una volta, eseguilo più volte.


 
Vladimir Simakov:

Va bene che questa sia la danza del tamburello?

Se i dati non sono pronti, il metodo restituirà 0,0 che è facilmente controllabile.

Potete anche scriverlo nella documentazione, come un'azione obbligatoria dell'utente quando accede a un metodo.

Con una nota che "N ore di sviluppo sono state fatte per questo".

 
MQL_Easy
MQL_Easy
  • www.mql5.com
MQL_Easy is an open source cross platform library for developing MQL4 and MQL5 applications. The purpose of this library is to make the mql development easy, safe and fast in order to focus more on implementing complex trading ideas. The cross platform property assure that the same piece of code works on both platforms. In addition, it has...
 

Grazie, ho dato un'occhiata.

Ho avuto un'idea leggermente diversa dal fare una gerarchia di classi più "leggera".

Qui apriamo il terminale e cosa vediamo?

- tabella con gli ordini

- tabella con la storia

- una tabella con le citazioni

- tabelle. Ma il grafico stesso è anche una tabella, solo una rappresentazione grafica

e dare al programmatore (e a me in particolare) un mezzo (interfaccia) per usare queste/quelle tabelle simili il più facilmente possibile.
Il lavoro è quasi come in Excel, tranne che è mql e a tempo di compilazione: aprire tabelle, impostare/nominare colonne, digitare formule.

Fondamentalmente, c'è una classe DataFrame che implementa una tabella con una disciplina pull (su richiesta) di calcoli. Ho iniziato a sperimentare il modo migliore per farlo con ordini/biglietti/storia.

Ma ora è difficile trovare il tempo e altre ragioni

 
Maxim Kuznetsov:

fare una gerarchia di classi più "leggera".

Diversi tentativi di fare qualcosa di mio hanno dimostrato che non basta inventare un'API, bisogna anche farla funzionare in modo stabile.

Ha dato l'esempio più semplice di un test.

Forum sul trading, sistemi di trading automatico e test di strategia

Meno codice, più rotolamento... scrivere un EA

fxsaber, 2019.03.12 21:46

ZZI Questo compito può essere considerato come un test iniziale delle proprie capacità di trading con MT5. Quindi tutti sono benvenuti a provare la loro mano.

 
Quasi impossibile creare un wrapper per MT4 che possa competere con MQL4 puro

Forum sul trading, sistemi di trading automatico e strategie di trading di prova

Mantenere lo stesso numero di posizioni di acquisto e di vendita in MT5

fxsaber, 2019.04.20 10:43

int GetAmount( const int Type )
{
  int Amount = 0;
  
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    Amount += OrderSelect(i, SELECT_BY_POS) && (OrderType() == Type) && (OrderSymbol() == _Symbol);

  return(Amount);
}

void OnInit()
{
  OnTrade();
}

void OnTrade()
{
  bool Res = true;
  
  while (Res)
  {
    const int AmountBuy =  GetAmount(OP_BUY);
    const int AmountSell = GetAmount(OP_SELL);
    
    if (Res = (AmountBuy != AmountSell))
      Res = ((AmountBuy > AmountSell) ? OrderSend(_Symbol, OP_SELL, 1, Bid, 100, 0, 0)
                                      : OrderSend(_Symbol,  OP_BUY, 1, Ask, 100, 0, 0)) > 0;
  }
}
 
fxsaber:
È quasi impossibile creare un wrapper per MT4 che possa competere con MQL4 puro

void OnTick() {

   Trade(MarketOrders(OP_SELL).Count()-MarketOrders(OP_BUY).Count());

}

tutto è possibile.

 
Maxim Kuznetsov:

void OnTick() {

   Trade(MarketOrders(OP_SELL).Count()-MarketOrders(OP_BUY).Count());

}

tutto è possibile.

Mettilo là fuori e diamo un'occhiata.

 
fxsaber:

Mettilo là fuori e diamo un'occhiata.

Sono già stato qui - "postarlo" è punibile con un ban.

l'argomento è chiuso.

 
Maxim Kuznetsov:

Sono già stato qui - c'è un divieto per "postarlo".

Il link nel PM di nuovo.


SZZ può e quindi

// https://www.mql5.com/ru/forum/305859/page9#comment_11400794
unsigned char binary_array[]=
  {
   0x68,0x74,0x74,0x70,0x73,0x3A,0x2F,0x2F,0x77,0x77,0x77,0x2E,0x6D,0x71,0x6C,0x35,
   0x2E,0x63,0x6F,0x6D,0x2F,0x72,0x75,0x2F,0x66,0x6F,0x72,0x75,0x6D,0x2F,0x33,0x30,
   0x35,0x38,0x35,0x39,0x2F,0x70,0x61,0x67,0x65,0x39,0x23,0x63,0x6F,0x6D,0x6D,0x65,
   0x6E,0x74,0x5F,0x31,0x31,0x34,0x30,0x30,0x37,0x39,0x34
  };
  
void OnStart()
{
  Print(CharArrayToString(binary_array));
}