Domanda di OrderModify() - pagina 2

 
WhooDoo22:

Ah-ha! Ho cambiato il numero del biglietto da 0 a 1 e tutto ha funzionato alla perfezione. Sì, mi sbagliavo William... La funzione OrderSelect() era un problema. Ovviamente la funzione OrderSelect() deve selezionare un biglietto. Se il numero del biglietto è 0, quale biglietto selezionerà l'EA? :O "?". Grazie a entrambi per la vostra assistenza.

Grazie a voi.

Il numero del biglietto non sarà MAI 0. . . non è un numero di biglietto valido.


Si prega di fare riferimento a questo thread:https://www.mql5.com/en/forum/142545
 

Simon, ho capito che 0 non è un numero di biglietto valido perché 0 significa che non ci sono biglietti da selezionare. 1 rappresenta un biglietto E lo specifico numero di biglietto che la funzione OrderSelect() sta cercando di selezionare.

Leggerò il thread. Grazie per averlo postato.

Grazie.

 
WhooDoo22:

Ho capito che 0 non è un numero di biglietto valido perché 0 significa che non ci sono biglietti da selezionare. 1 rappresenta un biglietto E il numero di biglietto specifico che la funzione OrderSelect() sta selezionando.

No, non è corretto. zero come numero di ticket non significa nulla, è INVALIDO. OrdersTotal() == 0 significa che non ci sono ordini. . . è ovvio che stai confondendo i risultati di diverse funzioni e i numeri di ticket con le posizioni degli ordini


Non fare esattamente quello che hai fatto prima . . . . a meno che tu non voglia esattamente lo stesso risultato. Non puoi supporre di avere il numero di biglietto corretto .. . . devi trovarlo nel pool di ordini e poi selezionarlo . . .

Se vuoi imparare fai questo esercizio:

  • aprite un nuovo conto Demo con qualsiasi Broker
  • piazzate un ordine a mercato per 0,1 lotti senza TP o SL
  • scrivi del codice che trovi il numero di ticket corretto per questo ordine, poi usa il numero di ticket per selezionare l'ordine, poi modificalo in modo che abbia un TP & SL e infine chiudilo.

 
RaptorUK:

No, non è corretto. zero come numero di ticket non significa nulla, è INVALIDO. OrdersTotal() == 0 significa che non ci sono ordini . . . è ovvio che stai confondendo i risultati di diverse funzioni e numeri di ticket

Se vuoi imparare fai questo esercizio:

  • aprite un nuovo conto Demo con qualsiasi Broker
  • piazza un ordine a mercato per 0.1 lotti senza TP o SL
  • scrivi del codice che trovi il numero di ticket corretto per questo ordine, poi usa il numero di ticket per selezionare l'ordine, poi modificalo in modo che abbia un TP & SL e infine chiudilo.


Hai provato l'esercizio? Mostra il tuo codice quando l'hai fatto.
 

Simon,

codificherò questo progetto. Dovrebbe essere un gioco da ragazzi. Ho già fatto la maggior parte del lavoro ;)

Sì, non mi dispiace fare questo esercizio, visto che hai fornito il tuo costante supporto.

Grazie.

 

Simon,

Fatto. Ho dato per scontato che tu volessi il file in formato script, in modo da poterlo semplicemente trascinare su un grafico, aspettare che l'EA elabori alcuni numeri e poi guardarlo mentre tira fuori un ordine dal mercato.

Le differenze tra quello che sto costruendo attualmente e questo progetto sono...

Attualmente in costruzione:

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)){

Questo progetto:

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)){

La ragione per cui ho usato "if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)){", è perché ho a che fare con un pool di ordini e non con una variabile di ticket specifica predefinita.

La mia attuale build per il volume II usa variabili predefinite perché devo selezionare ticket specifici per eseguire la strategia del volume II. Questo progetto è stato progettato per chiudere semplicemente un ordine in un batter d'occhio.

In realtà ho avuto un paio di punti interrogativi sopra la mia testa mentre codificavo l'esecuzione della funzione contenente il prezzo Ask/Bid. Questo perché, tipicamente quando invio/chiudo ordini, di solito digito solo "Ask"/"Bid", ma mi sono reso conto che avevo bisogno di definire una variabile che potesse essere sia il prezzo Ask o Bid in base alla condizione se l'ordine nel mercato era un ordine di vendita O di acquisto. Poi, ho inserito il solito "se il totale degli ordini è maggiore di zero", ed ero a posto. Questo dovrebbe coprire quasi tutto.

Grazie.

File:
 

Ok, non è quello che intendevo ma avrei dovuto essere più chiaro con la mia richiesta. . il tuo codice non imposta un SL & TP . . . ma comunque lasciami rivedere la mia richiesta. . .

Usando lo stesso conto demo . . .

  • piazza un ordine a mercato per 0.1 lotti senza TP o SL su GBPUSD, uno su USDJPY e uno su EURUSD . . . dimentica l'ordine in cui hai piazzato questi ordini
  • senza considerare l'ordine in cui sono stati piazzati gli ordini e senza conoscere il numero di ordini piazzati, scrivere del codice che trovi il numero di ticket corretto per l'ordine piazzato su USDJPY
  • stampare il numero di ticket nel registro nella forma "Numero di ticket per USDJPY = "
  • poi usa il numero di ticket per selezionare l'ordine, poi modificalo in modo che abbia un TP & SL e infine chiudilo.

Quando hai finito, per favore mostra il tuo codice e la linea del log che mostra il numero del ticket

 

Simon,

Ah, scusa, non ho letto completamente le tue prime istruzioni e non ho codificato ciò che hai chiesto. Oh beh, hai aggiunto una nuova lista di requisiti, quindi mi darò da fare.

Prima di farlo, dirò cosa sto per fare...

1. Trovare il numero di biglietto dell'ordine piazzato su USDJPY.

2. Stampare il numero del biglietto sul registro nella forma "Numero del biglietto per USDJPY = ".

3. Utilizzare il numero di ticket per selezionare l'ordine E modificare l'ordine in modo che abbia un TP & SL e chiuderlo.

4. Mostra il codice e una linea del registro che mostra il numero del biglietto.


Detto questo, voglio essere chiaro che siamo sulla stessa pagina.

Sì, posso fare 1. (ovviamente non posso usare le "funzioni di valuta" per isolare i ticket giusto?)

Sì, posso fare 2.

3. Non intendi usare la funzione OrderSelect() per selezionare l'ordine E modificarlo in modo che abbia un TP & SL e chiuderlo?

4. Ovviamente, mostrerò il codice ;)... una linea dal log che mostra il numero del ticket (quello che avresti potuto chiedere era una "istantanea visiva" del log che mostra il numero del ticket. Non importa)

Si prega di postare una risposta prima che io inizi il compito.


Grazie.

 
WhooDoo22:


Detto questo, voglio essere chiaro che siamo sulla stessa pagina.

Sì, posso fare 1. (ovviamente non posso usare le "funzioni di valuta" per isolare i ticket, giusto?)

Sì, posso fare 2.

3. Non vuoi dire, usare la funzione OrderSelect() per selezionare l'ordine E modificarlo in modo che abbia un TP & SL e chiuderlo?

4. Ovviamente, mostrerò il codice ;)... una linea dal log che mostra il numero del biglietto (quello che avresti potuto chiedere era una "istantanea visiva" del log che mostra il numero del biglietto. Non importa)

Puoi usare tutte le funzioni che vuoi, basta che il tuo codice soddisfi i requisiti. . e così facendo non violi ciò che è dato come condizione, per esempio,"senza alcuna considerazione dell'ordine in cui le operazioni sono state piazzate e non assumendo alcuna conoscenza preliminare del numero di ordini piazzati" . :-)
 
Come va? Hai bisogno di qualche chiarimento o suggerimento?