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

 
Top2n:

Grazie mille. Funziona tutto. Darò un'occhiata a quello che hai scritto...
 
Top2n:

Altri suggerimenti?

Se collego uno script a un grafico offline, il terminale si blocca. Forse è possibile montare il codice nel robot, poi cosa fare con#import "user32.dll"

Lo script era solo un esempio, nessuno ha detto che dovrebbe essere messo sulla tabella offline. Di solito si esegue su un grafico normale e si specifica il TF del grafico offline nella linea

 int whdl=WindowHandle (Symbol(), period_renko);  

E #import "user32.dll" non è necessario, è chiamato in WinUser32.mqh

Infatti, c'è un indicatore "6MTH_Renko_Chart_Builder_Indi_Ver_02.mq4" che può emulare i tick sul grafico Renko creato. Funziona così, l'indicatore viene eseguito su un grafico regolare, poi si apre il grafico Renco che viene aggiornato in tempo reale.


 
evillive:

Lo script era solo un esempio, nessuno ha detto che dovrebbe essere messo su un grafico offline. Di solito si esegue su un grafico normale e si specifica il TF del grafico offline nella linea

E #import "user32.dll" non è necessario, è chiamato in WinUser32.mqh

Infatti, c'è un indicatore "6MTH_Renko_Chart_Builder_Indi_Ver_02.mq4" che può emulare i tick sul grafico Renko creato. Funziona così, l'indicatore viene eseguito su un grafico regolare, poi si apre il grafico Renko che viene aggiornato in tempo reale.


Grazie!)
 

Ciao, puoi dirmi come fare?

C'è un pezzo di codice come questo e funziona. Questi sono segnali di avvicinamento ai livelli di trading. Buy1_line è un livello sul grafico, buy1 è la distanza del prezzo in pip dal livello corrispondente. La questione è che il codice ha la capacità di disabilitare i livelli di cui non avete bisogno. In questo caso, il valore del livello buy1_line (0,00000) e la distanza - viene visualizzato come un numero a 6 cifre, che non ha senso in linea di principio. (Il livello è disabilitato, non è necessario conoscere la distanza) Domanda! Come annullare la distanza dal livello - buy1, se il livello corrispondente è disattivato? (o al posto di questo numero scrivere OFF ?)

string buy1_line=DoubleToStr(Price_Line,Digits);
string buy2_line=DoubleToStr(Price_Line2,Digits);
string buy1=     DoubleToStr((Price_Line-Bid)/Point,0);
string buy2=     DoubleToStr((Price_Line2-Bid)/Point,0);       

message=
 "buy_1 ("+buy1_line+"):"+(buy1>"0"?"+":"")+buy1+"   \n"+
 "buy_2 ("+buy2_line+"):"+(buy2>"0"?"+":"")+buy2+"   \n";

SendNotification(message);
 

Ciao, potresti dirmi se c'è un modo per ottenere un biglietto di un ordine appena inviato?

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

poi controllo se ticket < 1, e ora voglio ottenere il numero OrderTicket() senza passare di nuovo attraverso tutti gli ordini aperti, dato che ce ne possono essere molti, e mi aspetto un problema se invio due ordini quasi identici con stop diversi in una volta sola

Grazie!

 
danik:

Ciao, potresti dirmi se c'è un modo per ottenere un biglietto di un ordine appena inviato?

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

poi controllo se ticket < 1, e ora voglio ottenere il numero OrderTicket() senza passare di nuovo attraverso tutti gli ordini aperti, dato che ce ne possono essere molti, e mi aspetto un problema se invio due ordini quasi identici con stop diversi in una volta sola

Grazie!

E non avete bisogno di OrderSend(), per conoscere il ticket di un ordine che è già aperto, dovreste selezionarlo usando OrderSelect().

Nel ciclo, dovreste scorrere tutti gli ordini di mercato, selezionare ognuno di essi e se il loro tipo, simbolo e mago corrispondono, scrivere il biglietto nell'array.

Poi ordinate l'array in ordine crescente. Il valore più alto del biglietto è l'ordine più recente.

 
Mi chiedevo se ci fosse un trucco o un metodo per ottenere un biglietto per un ordine che è stato appena inviato. Beh, non c'è, dovrò farlo alla vecchia maniera, peccato. grazie!
 
danik:
Ho pensato che ci potrebbe essere un modo per ottenere un biglietto che è stato appena spedito. Se no, dovrò farlo alla vecchia maniera ed è un peccato. grazie!

Solo il biglietto aperto sarà come hai scritto -ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

Ma è a condizione che la richiesta sia stata eseguita senza errori, e tale biglietto viene sovrascritto rapidamente.

 
danik:

Ciao, potresti dirmi se c'è un modo per ottenere un biglietto di un ordine appena inviato?

ticket = OrderSend(Symbol(), cmd, Lot((OOP-OSL)/Point),OOP,1,OSL, OTP,NULL, Expert_ID, 0);

poi controllo se ticket < 1, e ora voglio ottenere il numero OrderTicket() senza passare di nuovo attraverso tutti gli ordini aperti, dato che ce ne possono essere molti, e mi aspetto un problema se invio due ordini quasi identici con stop diversi in una volta sola

Grazie!

Perché non ti piace dichiarare i biglietti a livello di variabile globale?
 

Il problema è che questi biglietti sono più di uno. forse 4, non lo so ancora esattamente. ecco perché ho creato una classe con il numero del biglietto e altre informazioni che non sono memorizzate da orderelect. quindi volevo avere accesso al biglietto. ma finora posso solo creare oggetti di classe e metterli in CarrayObj e poi ottenere l'indice, confrontare il biglietto e analizzare ulteriormente. Ma l'ho risolto, grazie, mi do la colpa altrove. SignorievilliveAlexeyVik - grazie per le vostre pronte risposte!

Motivazione: