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

 
Boris:

Quindi... Leggete la documentazione (di nuovo).

Domanda. Cosa c'è che non va? Non conta né con CopyTicksRange né con CopyTicks.

Dovete leggere sempre di più e sempre di più... Leggete fino a leggere quello che ho copiato dalla documentazione per voi personalmente e l'ho segnato in grassetto rosso.

Che seccatura... nessuna citazione appiccicata a loro... dovrò duplicarle...

da_msc

[in] La data a partire dalla quale sono richieste le zecche. Specificato in millisecondi dal 01.01.1970. Se il parametrofrom_msc non è specificato, allora i tick sono restituiti dall'inizio della storia. Vengono restituiti i tick con tempo >= from_msc.

to_msc

[Data in cui sono richieste le zecche. Specificato in millisecondi dal 01.01.1970. Vengono restituiti i tick con tempo <= to_msc. Se il parametroto_msc non è specificato, vengono dati tutti i tick fino alla fine della storia .


 
Boris:

Quindi... Leggete la documentazione (di nuovo).

Domanda. Cosa c'è che non va? Non conta né attraverso CopyTicksRange né attraverso CopyTicks.

La domanda che ho, per esempio, non conosco bene µl5, è la parola Date, non Time. E di conseguenza una domanda, ed entro una data che età sarà?

E dopo un accenno. Come ottenere il tempo in millisecondi?

 
Valeriy Yastremskiy:

La domanda che ho è, per esempio, non conosco molto bene µl5, è la parola Date, non Time. E di conseguenza la domanda è: entro la stessa data, qual è l'età?

E dopo un accenno. Come ottenere il tempo in millisecondi?

1 secondo = 1000 millisecondi. E "Date" implica "Date and Time", perché il tipo è datetime e non solo data.

 
Alexey Viktorov:

Leggete di più e di più e di più... Leggete fino a quando non avrete letto ciò che ho personalmente copiato dalla documentazione per voi ed evidenziato in rosso grassetto.

Peccato... le citazioni non si attaccano... dovrò duplicarle...


Oh, cavolo... Sì, beh... Funziona!

 

DOMANDA su mql4:

C'è una restrizione di spread nel codice dell'EA, l'EA è impostato per diversi grafici.

Non è del tutto corretto inserire lo spread medio per una coppia nei parametri di input, e varia da una dealing desk all'altra.

Lo spread medio è di 5pp, ma ci sono momenti in cui si allarga a 12pp per qualche minuto e non è un rollover.

Come posso automatizzare questo per calcolare lo spread medio e non aprire una posizione su uno spread esteso?

   MqlRates rates[]; 
   int copied=CopyRates(NULL,PERIOD_M1,0,100,rates); 
   if(copied>0) 
   for(int e = ArraySize(rates)-1; e >=0; e--) {
     Print(e,"=",rates[e].spread); // всегда "0"
   }
 

Ciao, è possibile e come creare un Expert Advisor basato sull'algoritmo di apertura e chiusura di un affare senza utilizzare alcun indicatore?

Per esempio, prendete due linee, una linea di tendenza è in alto e la seconda è anche in basso, mettetele una sopra l'altra, c'è un punto di intersezione tra le due linee, supponiamo che sia a 15-30 nel tempo, poi come fare l'ordine aperto automaticamente allo stesso tempo per iniziare in qualsiasi direzione, come fare l'algoritmo troverà questi punti eaprire una posizione? Vorrei un chiarimento e le vostre opinioni.

Possiamo creare un EA basato su tale T3?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
Vitaly Muzichenko:

DOMANDA su mql4:

C'è una restrizione di spread nel codice dell'EA, l'EA è impostato per diversi grafici.

Non è del tutto corretto inserire lo spread medio per una coppia nei parametri di input, e varia da una dealing desk all'altra.

Lo spread medio è di 5pp, ma ci sono momenti in cui si allarga a 12pp per qualche minuto e non è un rollover.

Come automatizzare questo per calcolare lo spread medio e non aprire una posizione sullo spread più ampio?

Una buona idea è quella di guardare lo spread su ogni tick. A giudicare dalla retorica e dai problemi dei commercianti con il suo forte aumento a loos. Il problema, come ho capito, non è un grande spread lungo, che è l'ultimo dei problemi, ma un forte aumento dello spread grande e corto.

Guarderei quello specificato nelle proprietà del simbolo, lo prenderei come una media e lo aumenterei ragionevolmente prima di aprire gli ordini. E guarderemmo anche lo spread per chiuderlo o modificarlo. Oppure, controllerei lo spread medio degli ultimi 3-10 tick.

 
Valeriy Yastremskiy:

Una buona idea è quella di guardare lo spread su ogni tick. A giudicare dalla retorica e dai problemi che i commercianti hanno con un forte aumento fino al punto di perdere soldi. Il problema, per come la vedo io, non è un grande spread lungo, che è l'ultimo dei problemi, ma un forte aumento dello spread grande e breve.

Guarderei quello specificato nelle proprietà del simbolo, lo prenderei come una media e lo aumenterei ragionevolmente prima di aprire gli ordini. E guarderemmo anche lo spread per chiuderlo o modificarlo. Oppure, lo spread sugli ultimi 3-10 tick sarebbe monitorato in media.

Ieri circa 1 minuto (e non sono 10 tick) c'era ~14 punti di spread con uno spread medio normale di 4 punti. Così al momento della diffusione estesa il robot è andato a comprare.

10 tick non sono chiaramente sufficienti

 
Vitaly Muzichenko:

Ieri per circa 1 minuto (che non è 10 ticks) c'era ~14pp di spread con una media di spread normale di 4pp. Così al momento della diffusione estesa il robot è andato a comprare.

10 zecche non sono ovviamente sufficienti.

Il compito qui è quello di fissare l'inizio e la fine dei cambiamenti. E la fissazione dovrebbe essere fatta in un breve intervallo di tempo. Cioè, il valore medio dello spread dovrebbe essere fissato da un secondo a 10 secondi da una finestra fluttuante. Si dovrebbe guardare quanti ticchettii al secondo in media o guardare i ticchettii per 10 secondi e fare la media. Preferisco la prima opzione.

 
Valeriy Yastremskiy:

Il compito qui è quello di catturare l'inizio dei cambiamenti e la fine. e le emissioni di singoli cambiamenti. e la cattura deve essere in un breve periodo di tempo. Il valore medio dello spread dovrebbe essere fissato da un secondo a 10 secondi da una finestra fluttuante. Dovreste guardare quanti ticchettii al secondo in media o guardare i ticchettii per 10 secondi e fare la media. La prima variante è più vicina a me.

Ho risolto in questo modo:

void OnTick(void)
{
 int sp = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);

   if(CheckSpr(sp)) {
     // Здесь код отправки
   }
}

//+------------------------------------------------------------------+
bool CheckSpr(int _sp)
{
  static int ts=0, res=0;
  static long tc=0;
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   // Comment( res,"=",tc );
   if(tc<500) return(false);
   return(res>_sp?true:false);
}

Il problema è che registrerà un enorme spread nel rollover e lavorerà con esso.

Penso che questa soluzione sia inefficace, abbiamo bisogno di limitare in qualche modo la registrazione del rollover senza applicare un limite di tempo.