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

 
Persone. Per favore, aiutatemi. La mia domanda è questa. Sto facendo un EA basato sull'indicatore MACD. Ci sono in realtà due condizioni di apertura e due condizioni di chiusura. La prima condizione per chiudere Buy: il segnale è più di 0, MACD è più di 0, la prima barra è meno della seconda e la seconda è più della terza. La seconda condizione: il segnale è inferiore a 0, il MACD è inferiore a 0, la prima barra è inferiore alla seconda e la seconda è inferiore alla prima. Ma c'è un ma.... Queste condizioni copiano completamente le condizioni dell'affare per chiudere la vendita. Come separarli? Si prega di avvisare. Ho un'idea che il picco si ripete sull'istogramma, ma allora come faccio a descrivere che il picco è già stato lì? Come creare un tale ricordo nell'EA?
 

Ciao a tutti, sto scrivendo un EA. L'essenza è questa - due ordini di arresto diversamente diretto quando uno di loro si innesca il secondo viene eliminato, ma nel tester viene eliminato solo ordine di acquisto quando si tenta di eliminare sellstop esce 4108 errore errato biglietto. Per favore, aiutatemi a capire questo. Inserita una funzione che cancella l'ordine.

Grazie in anticipo!!!

void DellSell()
  {
   int dell;
   for(int i=OrdersTotal() -1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_SELLSTOP && CountBuyDell()>0)
               dell=OrderDelete(OrderTicket());
            if(!dell)
              {
               Print("Ордер SellStop не удален");
              }
           }
        }
     }
   return;
  }
 

Saluti. Per favore, consigliate come prendere i dati dall'indicatore.

Servono i dati delle icone rosse e blu. Ci sono dei valori astronomici nei rispettivi buffer quando non ci sono disegni. Li ho limitati a un numero di 10000. Sembra funzionare, ma ci sono segnali di salto. Come risolvere il problema? Ecco come ho sbagliato:

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0);
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0);
se (PriceHigh1<10000) PriceHigh=PriceHigh1; altrimenti PriceHigh=0;
se (PriceLow1<10000) PriceLow=PriceLow1; altrimenti PriceLow=0;
File:
 
Andrey Sokolov:

Saluti. Potete dirmi come ottenere i dati corretti dall'indicatore.

Ho bisogno di dati dalle icone rosse e blu. Ci sono dei valori astronomici nei rispettivi buffer quando non ci sono disegni. Li ho limitati a un numero di 10000. Sembra funzionare, ma ci sono segnali di salto. Come risolvere il problema? Ecco come ho sbagliato:

PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0);
PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0);
se (PriceHigh1<10000) PriceHigh=PriceHigh1; altrimenti PriceHigh=0;
se (PriceLow1<10000) PriceLow=PriceLow1; altrimenti PriceLow=0;

Non ho esaminato il codice, ma posso supporre che questo aiuterà. Potrei sbagliarmi:

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
 
Vitaly Muzichenko:

Non ho esaminato il codice, ma posso supporre che aiuterà. Potrei sbagliarmi:

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
Grazie per non essere passato, ma non è servito.
 
Andrey Sokolov:
Grazie per non essere passato, ma non è servito.
Provate anche a confrontare con EMPTY_VALUE, poiché ci sono valori "astronomici".
 
ArraySearchDouble() e EquationDirect()nella vecchia versione di mql 4. La nuova versione ha qualche analogo.
 
27311065:
ArraySearchDouble() e EquationDirect()nella vecchia versione di mql 4. E la nuova versione ha degli analoghi.
Dove li avete visti nella vecchia versione? Queste sono funzioni auto-scritte. No?
 
grazie per il suggerimento
 

Si prega di consigliare il modo migliore per lavorare con i dati - data una serie di numeri, che sarà divisa in sottogruppi, a seconda dei risultati del calcolo, questi gruppi dovrebbero essere memorizzati in un array, inoltre, ogni gruppo avrà due o più indicatori per gruppo (un gruppo di numeri separatamente apparterrà alla figura calcolata). I dati si presentano come segue

1/1,2,3,4/23/33

2/1,4,5/26/11

3/3,4,5,33,56,38/21/44

e così via

Motivazione: