Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 419
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Due anni - in tester :) Beh, è stato in funzione per un anno sulla demo... Un sacco di bug lì, quando ho dovuto collegarlo a causa di classi esterne... E ora c'è un tale bug, che non so come risolvere - aumenterò solo la dimensione dell'array di una cifra, per ora. Perché non c'è un auto-size, come per un buffer grafico, o c'è?
Prova così.
Inizializza l'array OrderBU[1].
Prima si aumenta la dimensione dell'array ( ArrayResize(OrderBU,NorderBU+1) ), poi OrderBU[NorderBU]=OrderTicket();NorderBU++;
Prova così.
Inizializza l'array OrderBU[1].
Prima si aumenta la dimensione dell'array ( ArrayResize(OrderBU,NorderBU+1) ), poi OrderBU[NorderBU]=OrderTicket();NorderBU++;
Potrebbe per favore consigliarci su questo punto?
Per esempio, abbiamo un indicatore Williams Percent Range (%R) su un grafico e trasciniamo l'indicatore On Balance Volume (OBV) nella sua finestra dal navigatore.
https://charts.mql5.com/8/675/xauusd-h4-metaquotes-software-corp.png
Il %R lavora nell'intervallo 0 -100%, l'OBV non ha un riferimento specifico.
Quando l'OBV è nella finestra %R, vediamo visivamente che va oltre -20 o -80%.
Come possiamo ottenere l'OBV sopra il -20% o sotto il -80% nel nostro EA?
Come legare l'OBV nell'indicatore personalizzato alla gamma di 0 -100%? Normalizzarlo ad esso (gamma)? Come si può fare?
Capisco che non sia necessario normalizzare l'OBV alla %R (l'immagine sarà diversa).
Forse è elementare, solo che non l'ho incontrato.
se (p1>p2&&p1>p3) , se (p2>p1&&p2>p3) , se (p3>p2&&p3>p1)
Io lo faccio in questo modo,
Ho bisogno di un parametro di lotto fluttuante, il primo lotto è impostato dall'utente, poi questo parametro non è più indirizzabile, e l'EA lavora da solo e in caso di perdita viene aumentato del lotto massimo specificato nel programma (o una variabile esterna), in caso di profitto viene ridotto dell'importo specificato.
Se scrivo il parametro in "Init ", l'EA smetterà di accedere al lotto di variabili esterne?
o come faccio?
questa è un'espressione approssimativa.
se (p1>p2&&p1>p3) , se (p2>p1&&p2>p3) , se (p3>p2&&p3>p1)
Io lo faccio in questo modo,
Non è conveniente, specialmente con un gran numero di parametri...
La soluzione via array è interessante. Particolarmente interessante come trovare il valore più vicino di una variabile quando si fa la media del numero totale di valori.
Buona sera. Sto cercando di scrivere un semplice EA sull'incrocio di tenkan e kinjun. Ecco il codice:
void OnTick()
void OnTick()
{
Segnale commerciale_20();
}
int TradeSignal_20()
{
int sig=0;
se(h_ich==INVALID_HANDLE)
{
h_ich=iIchimoku(Simbolo(),Periodo(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
ritorno(0);
}
else
{
if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
se (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
}
//--- controlla la condizione e imposta il valore per il sig
if(ich1_buffer[1]>ich2_buffer[1]) sig=1;
else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
altrimenti sig=0;
if (ich1_buffer[1]>ich2_buffer[1])
if (ich1_buffer[2]<ich2_buffer[2])
Alert(Symbol()+": purchase");
if (ich1_buffer[1]<ich2_buffer[1])
if (ich1_buffer[2]>ich2_buffer[2])
Alert(Symbol()+": sale");
//--- ritorno del segnale commerciale
ritorno (sig);
}
//+------------------------------------------------------------------+
Come posso fare in modo che l'allarme sia chiamato solo una volta e non costantemente?
Eseguire non ogni zecca, ma come necessario.