L'ho già fatto, non funziona. Non so dove sia l'errore. Inoltre, non capisco perché questi errori sono solo con gli ordini BAY LIMIT, non ci sono errori con i Sell Limits.
il risultato è lo stesso. l'errore si verifica spesso
"spesso" è una frase vuota.
Pensi che 2+2 sia spesso uguale a 4?
non essere pigro - fai un'analisi dell'invio e un'analisi dell'errore restituito.
controllare cosa stai cercando di rimuovere?
ci sono ordini disponibili al momento della chiusura?
forse stai cercando di cancellare un ordine che è già stato cancellato.
In terzo luogo, chi vi ha insegnato a chiudere gli ordini in modo che pensiate di poter chiudere tutti gli ordini? Pensate che dopo ogni vostra chiusura, l'OrdersTotal diminuirà di 1. E continuate a battere il vostro i2++ fino alla vittoria, fino alla i primaria.
Non si preoccupa nemmeno di controllare se OrderGetTicket o OrderSelect restituisce un errore
male, molto male.
È a causa di tali penne che i nostri satelliti escono dall'orbita.
non essere pigro - fai un'analisi dell'invio e un'analisi dell'errore di ritorno.
controllare cosa stai cercando di cancellare?
ci sono ordini disponibili al momento della chiusura?
forse stai cercando di cancellare un ordine che è già stato cancellato.
In terzo luogo, chi vi ha insegnato a chiudere gli ordini in questo modo? Voi pensate di passare tutti gli ordini, ma non è così. Dopo ogni vostra chiusura, OrdersTotal diminuisce di 1. E voi continuate a battere il vostro i2++ fino alla vittoria, fino alla i primaria.
Non si preoccupa nemmeno di controllare se OrderGetTicket o OrderSelect restituisce un errore
Questo è male, molto male.
È a causa di tali penne che i nostri satelliti escono dall'orbita.
Ero sicuro che non fosse quello, altrimenti ci sarebbero stati errori nel test non solo con i bylimits, ma anche con i selllimits. Grazie per aver cercato di aiutarmi e guidarmi.
Questo è un prototipo di una funzione di Windows che emula la pressione di un tasto:
Il fatto è che questa funzione è chiamata in MT4 con int invece di byte. Sembra così:
Qual è il problema? Sta trasferendo almeno 4 byte? Dipende dall'hardware?
Quando si passano parametri a una funzione, il quantum minimo è un intero a 32 bit. Cioè, bVk e bScan nel vostro caso saranno convertiti al tipo int prima di essere passati nella funzione
Ecco perché i prototipi di funzione dati sopra non si contraddicono
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Cosa c'è di sbagliato nel codice. Perché gli errori"failed cancel order #0 buy 0.00 at market [Invalid request]" continuano ad apparire
Dov'è la selezione della posizione?
Cosa c'entrano gli ordini con le transazioni?
cosa stai cercando di fare? chiudere una posizione?
e il nome order_remove_mql_trade_request è un brutto sogno.
dov'è la selezione della posizione?
cosa hanno a che fare gli ordini con le transazioni?
Cosa stai cercando di fare comunque? Chiudere una posizione?
e il nome order_remove_mql_trade_request è un brutto sogno.
Sì, ho bisogno di chiarire.
Lo scopo del codice - se c'è una posizione aperta, allora cancella tutti gli ordini limite della stessa direzione della posizione.
per esempio, se una posizione è aperta BAY. allora cancella tutti gli ordini come buy limit
Ho dimenticato di selezionare la posizione =). Beh, l'errore non viene da quello (controllato).
Cosa c'è di sbagliato nel codice. Perché continuano ad apparire gli errori"failed cancel order #0 buy 0.00 at market [Invalid request]"?
MqlTradeRequest order_remove_mql_trade_request = {0};
order_remove_mql_trade_request.action = TRADE_ACTION_REMOVE;
i = OrdersTotal();
if(i > 0){
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
for(i2 = 0;i2 <= i;i2++){
ul = OrderGetTicket(i2);
OrderSelect(ul);
if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_LIMIT){
order_remove_mql_trade_request.order = ul;
OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
for(i2 = 0;i2 <= i;i2++){
ul = OrderGetTicket(i2);
OrderSelect(ul);
if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_LIMIT){
order_remove_mql_trade_request.order = ul;
OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}}
rimuovere quei segni uguali.
L'ho già fatto, non funziona.
Non è bene tradire gli anziani.
Non è bene imbrogliare, io non lo faccio.
Ho appena ricontrollato tutto con questo codice:
i = OrdersTotal();
if(i > 0){
PositionSelect(_Symbol);
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY){
for(i2 = 0;i2 < i;i2++){
ul = OrderGetTicket(i2);
OrderSelect(ul);
if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_LIMIT){
order_remove_mql_trade_request.order = ul;
OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}
if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL){
for(i2 = 0;i2 < i;i2++){
ul = OrderGetTicket(i2);
OrderSelect(ul);
if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_LIMIT){
order_remove_mql_trade_request.order = ul;
OrderSend(order_remove_mql_trade_request,mql_trade_result);}}}}
Il risultato è lo stesso. l'errore di cui sopra si verifica spesso
il risultato è lo stesso. l'errore si verifica spesso
"spesso" è una frase vuota.
Pensi che 2+2 sia spesso uguale a 4?
non essere pigro - fai un'analisi dell'invio e un'analisi dell'errore restituito.
controllare cosa stai cercando di rimuovere?
ci sono ordini disponibili al momento della chiusura?
forse stai cercando di cancellare un ordine che è già stato cancellato.
In terzo luogo, chi vi ha insegnato a chiudere gli ordini in modo che pensiate di poter chiudere tutti gli ordini? Pensate che dopo ogni vostra chiusura, l'OrdersTotal diminuirà di 1. E continuate a battere il vostro i2++ fino alla vittoria, fino alla i primaria.
Non si preoccupa nemmeno di controllare se OrderGetTicket o OrderSelect restituisce un errore
male, molto male.
È a causa di tali penne che i nostri satelliti escono dall'orbita.
"spesso" è una frase vuota.
Pensi che 2+2 sia spesso uguale a 4?
non essere pigro - fai un'analisi dell'invio e un'analisi dell'errore di ritorno.
controllare cosa stai cercando di cancellare?
ci sono ordini disponibili al momento della chiusura?
forse stai cercando di cancellare un ordine che è già stato cancellato.
In terzo luogo, chi vi ha insegnato a chiudere gli ordini in questo modo? Voi pensate di passare tutti gli ordini, ma non è così. Dopo ogni vostra chiusura, OrdersTotal diminuisce di 1. E voi continuate a battere il vostro i2++ fino alla vittoria, fino alla i primaria.
Non si preoccupa nemmeno di controllare se OrderGetTicket o OrderSelect restituisce un errore
Questo è male, molto male.
È a causa di tali penne che i nostri satelliti escono dall'orbita.
Ero sicuro che non fosse quello, altrimenti ci sarebbero stati errori nel test non solo con i bylimits, ma anche con i selllimits. Grazie per aver cercato di aiutarmi e guidarmi.
Saluti signori.
Questo è un prototipo di una funzione di Windows che emula la pressione di un tasto:
Il fatto è che questa funzione è chiamata in MT4 con int invece di byte. Sembra così:
Qual è il problema? Sta trasferendo almeno 4 byte? Dipende dall'hardware?Saluti signori.
Questo è un prototipo di una funzione di Windows che emula la pressione di un tasto:
Il fatto è che questa funzione è chiamata in MT4 con int invece di byte. Sembra così:
Qual è il problema? Sta trasferendo almeno 4 byte? Dipende dall'hardware?Quando si passano parametri a una funzione, il quantum minimo è un intero a 32 bit. Cioè, bVk e bScan nel vostro caso saranno convertiti al tipo int prima di essere passati nella funzione
Ecco perché i prototipi di funzione dati sopra non si contraddicono