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

 
Igor Makanu:

Gli Expert Advisors non hanno buffer di indicatori e non disegnano nel terminale

Leggi nell'aiuto qual è la differenza tra Expert Advisors e script e indicatori

Grazie per la vostra risposta.

Puoi dirmi come implementare questa funzionalità?

 

Ciao, aiuta a passare un array in una funzione

hanno una struttura

struct pattern
  {
   double            x;
   datetime          y;
 };  

Dichiaro un paio di array statici come questa struttura

pattern last_pattern_up[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS], last_pattern_dn[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS];

Ora, voglio passare un array statico in una funzione, ma mi dà un errore - '[' - array richiesto

void MyFunction(pattern &array)
{
   Print(array[1][1].x," ",array[1][1].y);
   }

Come faccio a passare correttamente un array in una funzione?

 
Tango_X:

Ciao, aiuta a passare un array in una funzione

hanno una struttura

Dichiaro un paio di array statici come questa struttura

Ora, voglio passare un array statico in una funzione, ma mi dà un errore - '[' - array richiesto

Come faccio a passare correttamente un array in una funzione?

void MyFunction(pattern &array[][NUMBER_OF_PERIODS])
 
Artyom Trishkin:

Grazie! super!

 
Alexander Layzerevich:

Grazie per la vostra risposta.

Puoi dirmi come implementare questa funzionalità?

solo separatamente un Expert Advisor che chiama un indicatore tramite iCustom() e separatamente un indicatore per un grafico

a che l'Expert Advisor, quando chiama l'indicatore, userà una nuova copia dell'indicatore, cioè se avviate l'Expert Advisor su un grafico e cambiate le sue impostazioni (quelle che passate a iCustom()), l'indicatore non reagirà sul grafico

l'indicatore, che è stato chiamato dall'Expert Advisor, sarà visualizzato nello Strategy Tester alla fine del test. Durante il test in modalità visiva, è possibile lanciare l'indicatore sul grafico dello Strategy Tester....

Se vuoi usare l'indicatore in un modo diverso, puoi usare l'indicatore di tua scelta, ma non so come cambiare i parametri nel modello... forse qualcuno l'ha fatto

 
Alexander Layzerevich:

Grazie per la vostra risposta.

Puoi dirmi come implementare questa funzionalità?

Disegnare linee(OBJ_TREND)

 
Alexander Layzerevich:

Grazie per la vostra risposta.

Puoi dirmi come implementare questa funzionalità?

Se disegnate le linee dell'indicatore senza usare affatto l'indicatore, ma solo con i calcoli trasferiti dall'indicatore all'Expert Advisor, allora solo con oggetti grafici - linee di tendenza. Però è costoso. Ma possiamo limitare l'area di visibilità delle barre sul grafico.

 

Grazie per i suggerimenti.

In effetti, l'indicatore fa la stessa cosa.

Cioè ho dei valori calcolati, devono essere collegati da linee(OBJ_TREND).

 
Igor Makanu:

almeno un parametro deve essere cambiato quando si modifica un ordine, errore #1 - se non c'è nulla da cambiare dopo aver inviato una richiesta al server

disimpegnare ciò che avete inviato al server, lo vedrete subito.

L'errore rimane, anche se ho aggiunto una condizione supplementare per controllare se c'è uno stop o un profitto

if(OrderMagicNumber() == id_number && (OrderStopLoss() == 0 || OrderTakeProfit() == 0))


Anche per il trascinamento

if(OrderMagicNumber() == id_number && OrderStopLoss() != 0)
           {
            if(OrderType() == OP_BUY)
              {
               if(OrderComment() == "1" && Bid - OrderOpenPrice() >= a1 && OrderStopLoss() != OrderOpenPrice() + l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && Bid - OrderOpenPrice() >= a2 && OrderStopLoss() != OrderOpenPrice() + l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+l2,OrderTakeProfit(),0,clrNONE);};
              }
            else
              {
               if(OrderComment() == "1" && OrderOpenPrice() - Ask >= a1 && OrderStopLoss() != OrderOpenPrice() - l1) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l1,OrderTakeProfit(),0,clrNONE);};
               if(OrderComment() == "2" && OrderOpenPrice() - Ask >= a2 && OrderStopLoss() != OrderOpenPrice() - l2) {bol = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-l2,OrderTakeProfit(),0,clrNONE);};
              };
           };
 
Alexandr Sokolov:

L'errore rimane, anche se ho aggiunto una condizione supplementare per verificare la presenza di stop o profitto

Anche per il trascinamento

OrderStopLoss() != NormalizeDouble(OrderOpenPrice() - l1,_Digits)