Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1174

 

Ho una domanda sul richiamo degli indicatori tramite iCustom.

1. C'è la possibilità di escludere alcuni parametri dell'indicatore dalla lista dei parametri passati a iCustom. Per esempio, non voglio passare qualche parametro stringa o altro. un parametro esterno dell'indicatore con il modificatore sinput deve essere specificato anche in iCustom quando si chiama da un Expert Advisor?

2. Qual è la soluzione migliore, se l'indicatore ha molti parametri (circa centinaia)? C'è una soluzione pronta, come chiamare questo indicatore?

Grazie.

 

Voglio che l'EA chiuda le posizioni aperte quando il prezzo attraversa la MA.

Per favore, consigliate come implementare questo.

Grazie

 
RichLux:

Voglio che l'EA chiuda le posizioni aperte quando il prezzo attraversa la MA.

Per favore, consigliate come implementare questo.

Grazie

void CheckForClose_MA()
  {
   double MA=iMA(NULL,0,ma_period,ma_shift,MODE_SMMA,PRICE_MEDIAN,0);

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
        //---- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Low[1]>=MA) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
     }
//----


doppioiMA(
simbolo stringa,// nome del simbolo
inttimeframe,// timeframe
intma_period,// periodo
intma_shift,// sposta la media
intma_method,// metodo di mediazione
intapplied_price,//tipo di prezzo
intshift// shift
);

 

Come sapere quali parametri sono stati inviati all'Expert Advisor attraverso iCustom. Ricevo un valore errato dal buffer specificato in iCustom, voglio controllare se i dati hanno "raggiunto" l'indicatore dopo che iCustom è stato chiamato.

Come posso fare il debug?

 
Александр:

C'è una funzione.


Ogni chiamata di funzione cambierà la variabile ХХ, e ho bisogno che ХХ sia esterna (secondo la logica che voglio), ma ogni chiamata di funzione è iniziata con ХХ che è 0 e di conseguenza return(ХХ) restituirà il suo valore. Cioè, non capisco come rendere la variabile XX esterna e la funzione potrebbe essere chiamata "autonomamente", in isolamento. Esattamente per mezzo di MQ4. Grazie!


L'ho letto diverse volte, ma ancora non capisco cosa stai cercando.

Forse questo:

double XX = 0;


double x()
{
   double rez = XX;
   XX++;
   return rez;
}
 
Come posso dire se tutte le barre sono caricate sul grafico?
È necessario chiamare il ricalcolo dell'indicatore solo quando tutto è completamente caricato.

La condizione
if(time[0] > TimeCurrent() - 60 * ChartPeriod())
non aiuta a risolvere il problema.
 

memorizzare e controllare il numero totale di barre, se il valore non "sale" entro pochi secondi, allora "ci siamo".

e poi ricalcolare di nuovo se

rates_total-prev_calculated > 1
 
Koldun Zloy:

L'ho letto diverse volte, ma ancora non capisco cosa stai cercando.

Forse è così:

C'è una funzione (è un indicatore nel mio EA, ne ho bisogno e non si discute, questo un indicatore e inizia a lavorare (conteggio alla rovescia) da un nuovo picco). L'indicatore ha diversi parametri che cambiano continuamente. Dato che voglio evitare i loop, rendo questi parametri esterni (per la funzione esterna) per non perdere i loro valori. E in ogni nuova chiamata di funzione, vedo solo il cambiamento del valore dell'indicatore. Ma voglio avere una nuova "istanza " dell'indicatore da un nuovo picco, mentre la vecchia "istanza" continua a lavorare e a cambiare valori. Voglio ottenere questo utilizzando i metodi standard di MQ4, perché so molto poco di classi, strutture e altre eredità. Grazie!
 
Александр:
Ho una funzione (è un indicatore nel mio Expert Advisor, mi serve e non viene sfidato, questo il tacchino e comincia a correre (conteggio alla rovescia) da un nuovo picco). Ho un indicatore con diversi parametri che cambiano continuamente. Dato che voglio evitare un ciclo, rendo questi parametri esterni (per la funzione esterna) per non perdere i loro valori. E in ogni nuova chiamata di funzione, vedo solo il cambiamento del valore dell'indicatore. Ma voglio avere una nuova "istanza " dell'indicatore da un nuovo picco, mentre la vecchia "istanza" continua a lavorare e a cambiare valori. Voglio ottenere questo utilizzando i metodi standard di MQ4, perché so molto poco di classi, strutture e altre eredità. Grazie!

Non ha aiutato.

Probabilmente dovresti imparare la lingua per non confonderti almeno sui termini.

Non credo che tutti capiscano come si chiama una variabile esterna, cosa significa "chiamare una funzione in modo autonomo".

E cosa c'entra un loop, che non vuoi usare, di nuovo, per ragioni che solo tu capisci.

Beh, non spero di capirla.


 
//+------------------------------------------------------------------+
//|           Проверка нажатия клавиш на клавиатуре                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   if(id==CHARTEVENT_KEYDOWN)
     {
     Alert(lparam);
     }
   }

Puoi dirmi come controllare la combinazione, ad esempio Shift+A !

Motivazione: