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

 
ALXIMIKS:


...

4) perché devi fare le pause?

...


О! Puoi mostrarmi come non attraversarli?

Naturalmente, la domanda è interessante: è meglio aggiungere OrderProfit() + OrderCommission() + OrderSwap() che totalizzano 0 e non cambiano nulla, o dobbiamo farlo per ogni ordine?

 
Example2:


Non importa come ricostruirlo, basta che funzioni.


C'è qualche differenza in alcuni casi. Se for (int i = 0; i < OrdersTotal(); i++), la funzione OrdersTotal() è chiamata in ogni ciclo, e se for (int i = OrdersTotal()-1; i>=0; i--), allora la funzione OrdersTotal() è chiamata solo una volta. Non ho sperimentato la velocità di esecuzione in mql. Una volta, in php, la funzione count() ha lavorato per 17 secondi in un ciclo in avanti e 0,01 secondi in uno inverso.
 
Misurato la velocità del ciclo avanti e indietro. 100 ordini, il ciclo inverso è 5 volte più veloce. Ma non ci sono mai tanti ordini, 10 al massimo. Se ci sono 10 ordini, la velocità è 3 volte superiore. È palpabile scegliere il ciclo inverso.
 
Integer:
Misurato la velocità del ciclo avanti e indietro. 100 ordini, il ciclo inverso è 5 volte più veloce. Ma non ci sono mai tanti ordini, 10 al massimo. Se ci sono 10 ordini, la velocità è 3 volte superiore. È abbastanza ragionevole scegliere un ciclo inverso.


Potete consigliarmi come normalizzare il prezzo (il mio post sopra).

 
Example2:


Potete dirmi come normalizzare il prezzo (il mio post sopra).

C'è una funzione NormalizeDouble().

NormalizeDouble(_High+Point*20,Digits);

Quando si moltiplica, è meglio mettere prima double, poi int, altrimenti in alcuni casi si può perdere la parte frazionaria.

 
if(Line_7 > Lines_1 > Line_6)
{
Alert("Сигнал на покупку");
OrderSend(Symbol(),OP_BUY,Lots_Typ,Ask,5,SL_Typ,TP_Typ);
}
return;}
È possibile impostare l'apertura di un ordine in questo modo?
 
Link_x:
È possibile impostare l'apertura di un ordine in questo modo?


No.

Questo è il modo in cui dovrebbe essere fatto:

if(Line_7 > Lines_1 && Lines_1 > Line_6)
 

Ho anche controllato la velocità di calcolo dei profitti sommando i profitti di tutti gli ordini e selezionando solo gli ordini a mercato:

Prof1+=OrderProfit()+OrderSwap()+OrderCommission();

и

if(OrderType()==OP_BUY || OrderType()==OP_SELL){
 Prof2+=OrderProfit()+OrderSwap()+OrderCommission();
}
La prima opzione è un po' più veloce, ma non in modo significativo. Il rapporto di velocità è circa 1/1,1
 
Integer:

C'è una funzione NormalizeDouble().

Quando si moltiplica, è meglio mettere prima double, poi int, altrimenti si può perdere la parte frazionaria in alcuni casi.


Ora ottengo l'errore 3: "Sono stati inviati parametri errati alla funzione di trading, ad esempio, simbolo sbagliato, operazione di trading non identificata, tolleranza di prezzo negativa, numero di biglietto inesistente, ecc. La logica del programma deve essere cambiata".

 
Example2:


Ora ottengo l'errore 3: "Sono stati inviati parametri errati alla funzione di trading, ad esempio simbolo sbagliato, trade non identificato, tolleranza di prezzo negativa, numero di ticket inesistente, ecc. La logica del programma deve essere cambiata".


Traslate il cursore sulla prima parentesi di apertura dopo OrderSend, cancellate questa parentesi, rientrate, questo farà apparire una richiesta di tipo di parametro, controllate che tutti i parametri siano del tipo corretto.
Motivazione: