Come codificare? - pagina 108

 

Eseguire uno script MetaTrader dalla linea di comando

Voglio essere in grado di eseguire uno script o un programma dalla linea di comando che eseguirà un ordine di acquisto. Non ci sono regole. Quando lo digito dalla riga di comando, dovrebbe comprare 1 posizione EURUSD Long.

Come si può fare?

Grazie,

paco

 

Semplice indicatore basato sulla freccia e EA

Ciao a tutti.

Recentemente stavo cercando di fare un semplice EA che lavorasse su un indicatore basato su una freccia. Sto cercando di fare in modo che l'EA mantenga un ordine in qualsiasi momento. Se la freccia punta verso il basso, l'ordine di acquisto precedente viene chiuso e l'ordine di vendita viene aperto. Se la freccia punta verso l'alto, l'ordine di vendita precedente viene chiuso e viene aperto un ordine di acquisto. Sto usando il tester (modalità di visualizzazione) per verificare il mio codice. Sembra che non importa come provo, l'EA non chiude e apre le posizioni quando l'indicatore della freccia punta in alto o in basso. Il back test conferma che l'EA non funziona correttamente. Invece di aprire e chiudere gli ordini nei punti della freccia mostrati dall'indicatore, l'EA chiude/apre l'ordine in un momento diverso. Non riesco a capire perché il mio codice non funziona.

All'inizio della dichiarazione di avvio, ho il seguente codice:

if (Time[0] == savedTime) {

return (0);

} else {

savedTime = Time [0];

}

Questo (spero) assicurerà che il codice nella dichiarazione di avvio venga eseguito solo quando si è formata una nuova barra. Più tardi nel corpo della subroutine di avvio, interrogo l'indicatore con la funzione iCustom. La richiesta si presenta come segue:

iCustom (... 1)

L'ultimo argomento di uno specifica la barra precedente formata, per questo non è 0. Tuttavia più tardi chiudo l'ordine aperto con OrderClose e ne apro uno nuovo con OrderSend. Suppongo che entrambe le funzioni debbano poter essere eseguite istantaneamente.

La conclusione è che: Sto cercando di creare un EA basato su un indicatore a freccia. L'indicatore punta verso l'alto o verso il basso. Per come la vedo io (e probabilmente non sono corretto), l'unica cosa che devo fare è chiudere l'ordine precedente e aprirne uno nuovo quando si è formata la prossima barra. Apprezzerei molto qualsiasi contributo su questo problema.

Grazie a tutti.

 

Qualcuno può dirmi come codificare per mettere la data di scadenza nell'indicatore?

Grazie.

 
 
newdigital:
Guarda questo thread https://www.mql5.com/en/forum/174194

Grazie per questo link. Finalmente ho trovato la pagina che sto cercando qui

 

Come ottenere 2 indicatori su una finestra separata?

Qualcuno può rinfrescarmi la mente su come ottenere 2 indicatori su una finestra separata in modo che si sovrappongano l'un l'altro?

Grazie per l'assistenza in anticipo!

Dave

 

EA necessario per aprire solo gli ordini

Ciao a tutti,

Mi stavo chiedendo se qualcuno potesse aiutarmi a creare un EA che apra solo 4 ordini diversi alle 00:00AM GMT per qualsiasi coppia.

1 lotto di acquisto

1 lotto acquisto

1 lotto vendere

1 lotto di vendita

da aprire tutti alle 00:00GMT

grazie per l'assistenza

Ryan56

 
bdht:
Ciao a tutti.

Recentemente stavo cercando di fare un semplice EA che lavorasse su un indicatore basato su una freccia. Sto cercando di fare in modo che l'EA mantenga un ordine in qualsiasi momento. Se la freccia punta verso il basso, l'ordine di acquisto precedente viene chiuso e viene aperto un ordine di vendita. Se la freccia punta verso l'alto, l'ordine di vendita precedente viene chiuso e viene aperto un ordine di acquisto. Sto usando il tester (modalità di visualizzazione) per verificare il mio codice. Sembra che non importa come provo, l'EA non chiude e apre le posizioni quando l'indicatore della freccia punta in alto o in basso. Il back test conferma che l'EA non funziona correttamente. Invece di aprire e chiudere gli ordini nei punti della freccia mostrati dall'indicatore, l'EA chiude/apre l'ordine in un momento diverso. Non riesco a capire perché il mio codice non funziona.

All'inizio della dichiarazione di avvio, ho il seguente codice:

if (Time[0] == savedTime) {

return (0);

} else {

savedTime = Time [0];

}

Questo (spero) assicurerà che il codice nella dichiarazione di avvio venga eseguito solo quando si è formata una nuova barra. Più tardi nel corpo della subroutine di avvio, interrogo l'indicatore con la funzione iCustom. La richiesta si presenta come segue:

iCustom (... 1)

L'ultimo argomento di uno specifica la barra precedente formata, per questo non è 0. Tuttavia più tardi chiudo l'ordine aperto con OrderClose e ne apro uno nuovo con OrderSend. Suppongo che entrambe le funzioni debbano poter essere eseguite istantaneamente.

La conclusione è che: Sto cercando di creare un EA basato su un indicatore a freccia. L'indicatore punta verso l'alto o verso il basso. Per come la vedo io (e probabilmente non sono corretto), l'unica cosa che devo fare è chiudere l'ordine precedente e aprirne uno nuovo quando si è formata la prossima barra. Apprezzerei molto qualsiasi input su questo problema.

Grazie a tutti.

Se guardi il tuo segnale solo una volta a barra e il tuo "sistema" chiude e inverte quando il segnale cambia, è importante controllare l'uscita PRIMA di controllare l'entrata. Altrimenti, quando c'è un nuovo segnale di entrata, l'EA non può entrare nel trade perché quello precedente è ancora aperto. E quando l'EA chiude la posizione, entrerà solo nella barra successiva perché in questa parte di codice entra solo una volta per barra.

Spero che abbia senso (con il mio inglese!).

FerruFx

 
Dave137:
Qualcuno può rinfrescarmi la mente su come ottenere 2 indicatori su una finestra separata in modo che si sovrappongano?

Grazie in anticipo per la vostra assistenza!

Dave

Guarda questa pagina: https://www.mql5.com/en/forum/172923

 

Bene, questo risolverà il tuo problema della nuova barra (l'ho preso da un articolo su mql4.com):

bool funcIsNewBar()

{

bool res=false;

// the array contains open time of the current (zero) bar

// for 7 (seven) timeframes

static datetime _sTime[7];

int i=6;

int timeFrame = Period();

switch (timeFrame)

{

case 1 : i=0; break;

case 5 : i=2; break;

case 15 : i=3; break;

case 30 : i=4; break;

case 60 : i=5; break;

case 240: i=6; break;

case 1440:break;

default: timeFrame = 1440;

}

//----

if (_sTime==0 || _sTime!=iTime(Symbol(),timeFrame,0))

{

_sTime = iTime(Symbol(),timeFrame,0);

res=true;

}

//----

return(res);

}[/CODE]

Call this function like this

int start()

{

if (funcIsNewBar)

{

//run some code

}

return (0);

}

That'll get code to run ONLY when there is a new bar.

What you need to do is find out in the data window of MT4 what the values are when there is NO arrow being put on the chart by your indicator. For example, the indicator may may have 0's or may be blank.

So all you do then is call the value of the indicator at each open [CODE]varMyIndieValue=iCustom();

if (varMyIndieValue>0) //there's an arrow

{

//run some code

}
bdht:
Ciao a tutti.

Recentemente stavo cercando di fare un semplice EA che lavorasse su un indicatore basato su una freccia. Sto cercando di fare in modo che l'EA mantenga un ordine in qualsiasi momento. Se la freccia punta verso il basso, l'ordine di acquisto precedente viene chiuso e viene aperto un ordine di vendita. Se la freccia punta verso l'alto, l'ordine di vendita precedente viene chiuso e viene aperto un ordine di acquisto. Sto usando il tester (modalità di visualizzazione) per verificare il mio codice. Sembra che non importa come provo, l'EA non chiude e apre le posizioni quando l'indicatore della freccia punta in alto o in basso. Il back test conferma che l'EA non funziona correttamente. Invece di aprire e chiudere gli ordini nei punti della freccia mostrati dall'indicatore, l'EA chiude/apre l'ordine in un momento diverso. Non riesco a capire perché il mio codice non funziona.

All'inizio della dichiarazione di avvio, ho il seguente codice:

if (Time[0] == savedTime) {

return (0);

} else {

savedTime = Time [0];

}

Questo (spero) assicurerà che il codice nella dichiarazione di avvio venga eseguito solo quando si è formata una nuova barra. Più tardi nel corpo della subroutine di avvio, interrogo l'indicatore con la funzione iCustom. La richiesta si presenta come segue:

iCustom (... 1)

L'ultimo argomento di uno specifica la barra precedente formata, per questo non è 0. Tuttavia più tardi chiudo l'ordine aperto con OrderClose e ne apro uno nuovo con OrderSend. Suppongo che entrambe le funzioni debbano poter essere eseguite istantaneamente.

La conclusione è che: Sto cercando di creare un EA basato su un indicatore a freccia. L'indicatore punta verso l'alto o verso il basso. Per come la vedo io (e probabilmente non sono corretto), l'unica cosa che devo fare è chiudere l'ordine precedente e aprirne uno nuovo quando si è formata la prossima barra. Apprezzerei molto qualsiasi input su questo problema.

Grazie a tutti.