Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1443

 

Ho incontrato un momento inspiegabile. Il conto è reale. Il robot imposta un ordine pendente e poi segue il prezzo. Dopo che il prezzo ha "catturato" l'ordine pendente, apre una posizione SELL con uno stop loss e un take profit specificati. Fino a questo punto non ci sono problemi. Poi il prezzo si muove nella direzione che desidero e per idea dovrebbe lavorare sul take profit, che è di 50 punti. Ma non è stato così. Nonostante il prezzo attuale sia sceso al di sotto del livello del prezzo a cui è stata aperta la posizione più la dimensione dello spread, ovvero 50 + 14 pip, la posizione si è chiusa con una dimensione di 36 pip dal prezzo di apertura. E così si ripete di volta in volta, di operazione in operazione. Faccio girare il robot sul tester e vedo che tutte le posizioni chiuse hanno una dimensione di 50 pips, come dovrebbe essere.

C'è davvero una deviazione costante, e con una dimensione approssimativamente pari alla dimensione dello spread di 14 pips? C'è qualcosa di strano, non credete? Ecco il log di una delle operazioni di ieri.

KE      0       05:36:02.089    Trades  '1000008949': modify #1021600709 sell stop 0.04 EURUSDrfd -> price: 1.07870, sl: 1.07970, tp: 1.07820) done in 8.663 ms
RK      0       05:45:14.097    Trades  '1000008949': deal #1021883094 sell 0.04 EURUSDrfd at 1.07870 done (based on order #1021600709)
RJ      0       07:49:46.015    Network '1000008949': scanning network for access points
PJ      0       07:49:46.873    Network '1000008949': scanning network finished
IR      0       10:51:16.238    Trades  '1000008949': market buy 0.04 EURUSDrfd, close #1021600709 sell 0.04 EURUSDrfd 1.07870
FF      0       10:51:16.258    Trades  '1000008949': accepted market buy 0.04 EURUSDrfd, close #1021600709 sell 0.04 EURUSDrfd 1.07870
JF      0       10:51:16.558    Trades  '1000008949': market buy 0.04 EURUSDrfd, close #1021600709 sell 0.04 EURUSDrfd 1.07870 placed for execution
OI      0       10:51:16.558    Trades  '1000008949': order #1021607738 buy 0.04 / 0.04 EURUSDrfd at market done in 316.213 ms
EF      0       10:51:16.558    Trades  '1000008949': deal #1021888944 buy 0.04 EURUSDrfd at 1.07834 done (based on order #1021607738)

Saluti, Vladimir.

 
MrBrooklin ordine pendente e poi segue il prezzo. Dopo che il prezzo ha "catturato" l'ordine pendente, apre una posizione SELL con uno stop loss e un take profit specificati. Fino a questo punto non ci sono problemi. Poi il prezzo si muove nella direzione che desidero e per idea dovrebbe lavorare sul take profit, che è di 50 punti. Ma non è stato così. Nonostante il prezzo attuale sia sceso al di sotto del livello del prezzo a cui è stata aperta la posizione più la dimensione dello spread, ovvero 50 + 14 pip, la posizione si è chiusa con una dimensione di 36 pip dal prezzo di apertura. E così si ripete di volta in volta, di operazione in operazione. Eseguo il robot sul tester e vedo che tutte le posizioni chiuse hanno una dimensione di 50 pips, come dovrebbe essere.

C'è davvero una deviazione costante, e con la stessa dimensione, approssimativamente pari alla dimensione dello spread di 14 pips. C'è qualcosa di strano, non credete? Ecco il registro delle transazioni.

Saluti, Vladimir.

Forse mi sfugge qualcosa, ma credo che tu debba capire cosa sono ibid e gli ask.

 
Vladimir Deryagin #:

Forse mi sfugge qualcosa, ma credo che tu debba capire cosa sono ibid e i ask

Anche io ho iniziato a dubitare e ho pensato che il problema fosse nel codice. Ma poi avrei avuto gli stessi problemi nel tester della strategia. Ma nel tester della strategia va tutto bene! Ho evidenziato in rosso il tempo di esecuzione nel processo di chiusura di un'operazione. Forse è questo il problema?

Saluti, Vladimir.

P.S. Oggi ho fatto 3 operazioni e si sono chiuse con uno scarto di 10, 14 e 15 punti. Sembra una deviazione. ((

 
Salve, uno spread di 15-20 pip a un prezzo a cinque cifre è normale. E 50 pips non sono sufficienti per un take. Se il profitto è dello stesso ordine dello spread, non sarai fortunato. Anche se dipende da chi sei.
 
Aleksei Stepanenko #:
Salve, uno spread di 15-20 pip a un prezzo a cinque cifre è normale. E 50 pips non sono sufficienti per un take. Se il profitto è dello stesso ordine dello spread, non sarai fortunato. Anche se dipende da chi sei.

Ciao Alexey, sono d'accordo che questa non è la strategia più ideale per un robot, ma finché dà un profitto stabile, lasciamola lavorare. Meno è meglio, ma meglio è.

Ora la mia domanda. Ho guardato tutti i log e ho notato che dal 1° febbraio il tempo di chiusura delle operazioni è aumentato bruscamente - da 50-70 msk a 330-450 msk. Mi informerò presso il mio forex-dealer su cosa è successo.

Saluti, Vladimir.


 

Potreste dirmi se è possibile cambiare l'ID di un Expert Advisor nella tabella "Trade"?

Oppure diciamo che c'è uno script che imposta gli ordini SellLimit,

trade.BuyLimit(1,10.75,NULL,0,0,0,0,0,0,0,NULL);

come e dove specificare il numero ID nel comando in modo che questo ordine possa essere raccolto da un Expert Advisor con un ID simile?

 
BOBEF #:

Potreste dirmi se è possibile cambiare l'ID di un Expert Advisor nella tabella "Trade"?

Oppure diciamo che c'è uno script che inserisce ordini SellLimit,

trade.BuyLimit(1,10.75,NULL,0,0,0,0,0,0,0,NULL);

come e dove specificare il numero ID nel comando in modo che questo ordine possa essere raccolto da un Expert Advisor con un ID simile?

 trade.SetExpertMagicNumber(magic);
 trade.BuyLimit(1,10.75,NULL,0,0,0,0,NULL);
 
Alexey Viktorov #:

Grazie
 

Cosa può essere sbagliato

int aaa = StringFind(Set, txt);

Set - la stringa che stiamo cercando.

txt - ciò che stiamo cercando.

perché aaa = -1?

E in generale, una variabile stringa può essere in qualche modo diversa dalla stessa variabile stringa.

stringa a = "A";

stringa c = "A";

In quali casi è possibile che a!=c?

 

C'è un modo per annullare l'output degli errori di connessione al database?
Per esempio, la funzione DatabaseOpen() stampa un errore ogni volta che il database è bloccato e la funzione non può accedervi.
Ma questa è una situazione di lavoro normale per me, catturerò io stesso questo errore e lo emetterò se necessario.

Di conseguenza, l'intero registro è pieno di messaggi sulla base bloccata.

2023.02.13 18:57:21.917 database error, database is locked