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

 
clubsmi:

Per favore consigliate come calcolare le percentuali in MQL4

per esempio x=10+3% come scriverlo programmaticamente?

Non riesco a trovarlo nel libro di riferimento.



x=10*1.03
 
r772ra:


x=10*1.03



ok! ma non voglio ricalcolarli ogni volta, ho bisogno di una funzione che calcoli le percentuali da sola

y=3; //il numero continua a cambiare ad ogni tick

x=10+yP; // invece di P hai bisogno di una percentuale. non posso scriverlo in mql

 
if(Line_7 > Lines_1 && Lines_1 > Line_6)
{
OrderSend(Symbol(),OP_BUY,Lots_Typ,Ask,5,0,0);
}
if(AccountProfit() > 50)
{ 
OrderClose(Symbol(),5,Ask,0);
}
Catena logica del codice:

1 Se la linea 7 è sopra la linea 1, con la linea 1 sopra la linea 6,
2 allora
3 si apre un ordine di acquisto con volume Lots_Typ, possibile slippage di 5 pips, nessun SL e TP, al prezzo di chiusura.

1 Se il profitto potenziale di questo conto è superiore a 50$,
2 allora
3 tutti gli ordini vengono chiusi, indipendentemente dalle proprietà che hanno (volume, acquisto/vendita, ...).

La catena logica è allineata correttamente, ma il codice sulla catena logica no.

OrderClose(Symbol(),5,Ask,0);
L'errore sta qui.
Se si costruisce una catena logica, relativa al codice di cui sopra, si ottiene:
Chiusura di 5 lotti di un ordine con un prezzo di chiusura e un possibile slippage di 0 pip.

Come correggerlo? Si prega di avvisare.
 
clubsmi:



Ok! Non posso ricalcolarli ogni volta, ho bisogno di una funzione che calcoli la percentuale da sola

y=3; // il numero cambia costantemente ad ogni tick

x=10+yP; // abbiamo bisogno di percentuale invece di P. Non posso scriverlo in mql.

in relazione a cosa?
 
clubsmi:



Ok! Non posso ricalcolarli ogni volta, ho bisogno di una funzione che calcoli la percentuale da sola

y=3; // il numero cambia costantemente ad ogni tick

x=10+yP; // invece di P abbiamo bisogno di percentuale.

//+----------------------------------------------------------------------------+
double Percent(double x, double y) {return(x*0.01*y);}
//+----------------------------------------------------------------------------+

x - numero, y - percentuale necessaria

passare il numero x e la percentuale desiderata di esso a y, l'output è la percentuale y del numero x

 
Link_x:
Catena logica del codice:

1 Se la linea 7 è sopra la linea 1, con la linea 1 sopra la linea 6,
2 allora
3 si apre un ordine di acquisto con volume Lots_Typ, possibile slippage di 5 punti, senza SL e TP, al prezzo di chiusura.

1 Se il profitto potenziale di questo conto è superiore a 50$,
2 allora
3 tutti gli ordini saranno chiusi, indipendentemente dalle loro proprietà (volume, acquisto/vendita, ...).

La catena logica è corretta, ma il codice per catena logica no.

L'errore sta qui.
Se costruiamo una catena logica, relativa al codice precedente, otteniamo:
Chiusura di 5 lotti di un ordine con un prezzo di chiusura e un possibile slippage di 0 pip.

Come correggerlo? Si prega di avvisare.

Caro signore, legga attentamente la documentazione,

In particolare

Il bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
Chiusura della posizione. Restituisce TRUE se la funzione è stata completata con successo. Restituisce FALSE se la funzione fallisce. Per ottenere informazioni sull'errore, chiamate la funzione GetLastError().
Parametri:
biglietto - Numero di serie unico dell'ordine.
lotti - Numero di lotti da chiudere.
prezzo - Il prezzo di chiusura.
slittamento - Il valore dello slippage massimo in pip.
Colore - Colore della freccia di chiusura sul grafico. Se il parametro manca o il suo valore è CLR_NONE, la freccia non viene mostrata sul grafico.
Esempio:
 if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderClose(order_id,1,Ask,3,Red); return(0); }

 
r772ra:

Caro signore, legga attentamente la documentazione,

in particolare

Il bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
Chiusura della posizione. Restituisce TRUE se la funzione è stata completata con successo. Restituisce FALSE se la funzione fallisce. Per ottenere informazioni sull'errore, chiamate la funzione GetLastError().
Parametri:
biglietto - Numero di serie unico dell'ordine.
lotti - Numero di lotti da chiudere.
prezzo - Il prezzo di chiusura.
slittamento - Il valore dello slippage massimo in pip.
Colore - Colore della freccia di chiusura sul grafico. Se il parametro manca o il suo valore è CLR_NONE, la freccia non viene visualizzata sul grafico.
Esempio:

Io so tutto questo.
Come posso fare in modo che tutti gli ordini siano chiusi, indipendentemente dalle loro caratteristiche?
 
Link_x:
So tutto questo.
Come posso fare in modo che tutti gli ordini siano chiusi, indipendentemente dalle loro caratteristiche?

Sai, buon per te,

OrderClose(Symbol(),5,Ask,0) //зто твое

OrderClose(order_id,1,Ask,3,Red); // А зто пример из документации

// Найди отличие
 
artmedia70:

x - numero, y - percentuale richiesta

passare il numero x e la percentuale y desiderata, l'output è la percentuale y del numero x



Proprio quello di cui avevo bisogno, grazie mille... È così facile che ci ho pensato per mezza giornata! Grazie ancora!

 
r772ra:

Sai, buon per te,


Nel mio esempio: numero di ordine casuale, volume 5, al prezzo di chiusura, con slippage 0, nessuna freccia.
Nell'esempio del documento: calcolo del numero di ordine per order_id, il volume è 1, per prezzo di chiusura, con slippage 3, la freccia è rossa.

1 c'è calcolo order_id - nessun calcolo order_number
2 volume (1) - volume (5)
3 slippage (3) - slippage (0)
4 freccia rossa - nessuna freccia

Differenze trovate.
Ora torniamo al compito.

Compito 1
Scrivi il codice che chiuderà tutti gli ordini aperti senza eccezioni.

Il mio ragionamento.
È possibile scrivere questo codice, ma la domanda sorge spontanea: "Come?
1 - creare un codice che tenga traccia di tutti gli ordini aperti (volume totale, numero di cluster di ordini, acquisto/vendita, slippage consentito).
2 - Creare il codice che apre gli ordini e invia i dati al codice che controlla tutti questi ordini (si crea una specie di database).
3 - Creare un codice che chiude tutti gli ordini in determinate condizioni e prende solo i dati inutilizzati dal "database particolare".
I dati non vengono riutilizzati.

Potremmo farlo in questo modo, ma penso che ci sia un'altra variante, meno ingombrante.
Ecco perché chiedo "come?