Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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