Errori, bug, domande - pagina 555

 
sergey1294:
Su Alpari non si possono piazzare stop immediatamente durante l'esecuzione del mercato, bisogna prima aprire una posizione e poi modificarla
Per favore, chiarite: è impossibile piazzare un ordine con stop usando un solo comando OrderSend? O si tratta di chiamare PositionSelect prima di impostare uno stop su un ordine esistente?
 
Snaf:

Метатестер пилит диск HDD

Versione 527.

Se guardate nel monitor del processo, va avanti con queste sciocchezze.

Nessuna attività di rete, non connesso al cloud. Il terminale e il metatester non funzionano. Nessun file viene cambiato.

Non ci sono informazioni sui nomi dei file nello screenshot di cui sopra.

Si prega di allegare un registro più dettagliato in forma di testo.

 
idispatch:

In MQL4 si poteva creare un ordine con stop subito, ma in MQL5 non è possibile - bisogna impostare gli stop dopo la creazione dell'ordine.

Sono lento (per favore datemi un esempio di codice) o è la mia intenzione?

Puoi anche creare un ordine con uno stop e un profitto.

Lei ha nella sua richiesta

reqest.sl=SL;

reqest.tp=TP;

Questo è un errore. I livelli di SL e TP dovrebbero essere impostati ad una distanza dai prezzi di mercato, quindi queste linee dovrebbero avere un aspetto simile a questo

per una posizione di acquisto:

request.sl = SymbolInfoDouble(Symbol(),SYMBOL_BID) - SL * SymbolInfoDouble(Symbol(),SYMBOL_POINT);

request.tp = SymbolInfoDouble(Symbol(),SYMBOL_ASK) + TP * SymbolInfoDouble(Symbol(),SYMBOL_POINT);

invertire per una posizione di vendita

request.sl = SymbolInfoDouble(Symbol(),SYMBOL_ASK) + SL * SymbolInfoDouble(Symbol(),SYMBOL_POINT);

request.tp = SymbolInfoDouble(Symbol(),SYMBOL_BID) - TP * SymbolInfoDouble(Symbol(),SYMBOL_POINT);

Spero di non sbagliarmi da nessuna parte...

 
idispatch:
Per favore chiarite: in Alpari, è impossibile piazzare un ordine con stop con un unico comando OrderSend? O vogliamo dire che prima di impostare gli stop per un ordine esistente, dobbiamo chiamare PositionSelect?

Si può, perché no?

In quale modalità si effettua l'ordine?

 
ShurikAn:

Puoi farlo con uno stop e un profitto.

Lei ha nella sua domanda

reqest.sl=SL;

reqest.tp=TP;

Questo è un errore. I livelli SL e TP dovrebbero essere impostati ad una distanza dai prezzi di mercato, quindi queste linee dovrebbero avere questo aspetto:

Naturalmente SL e TP sono definiti come i vostri. Inoltre, ho scritto sopra che se aggiungo solo

m_request.action = TRADE_ACTION_SLTP;
OrderSend(m_request, m_result);

allora gli stop saranno impostati con successo a SL e TP specificati, cosa che non accadrà se non sono definiti correttamente.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
Renat:

Si può, perché no?

In quale modalità si effettua l'ordine?

MqlTradeRequest m_request;
MqlTradeResult m_result;

m_request.action = TRADE_ACTION_DEAL;
m_request.symbol = Symbol();
m_request.type = ORDER_TYPE_BUY;

m_request.price = Price; // calcolato in anticipo e vero :)

m_request.sl = SL; // già calcolato e corretto :)
m_request.tp = TP; // calcolato in anticipo e vero :)

m_request.volume = Vol;

m_request.type_filling = ORDER_FILLING_FOK;
m_request.deviation = 10;
m_request.type_time = 0;
m_request.expiration = 0;
m_request.magic = 0;
m_request.comment = "";

OrderSend(m_request, m_result);
 
idispatch:
Per favore chiarite: in Alpari, non si può piazzare un ordine con stop usando un singolo comando OrderSend? O si tratta di chiamare PositionSelect prima di impostare gli stop per un ordine esistente?

Esattamente giusto. con gli stop si può fare solo in modalità istantanea

Tipi di esecuzione

Il terminale client ha quattro modalità di esecuzione degli ordini:

  • Esecuzione istantanea
    In questa modalità, l'esecuzione di un ordine di mercato viene effettuata al prezzo offerto al broker. Quando si invia una richiesta di esecuzione, il terminale sostituisce automaticamente il prezzo corrente per l'ordine. Se il broker accetta i prezzi, l'ordine verrà eseguito. Se il broker non accetta il prezzo richiesto, allora si verifica il cosiddetto "Requote" - il broker restituisce i prezzi ai quali l'ordine può essere eseguito.
  • Esecuzione della richiesta
    In questa modalità, l'ordine a mercato viene eseguito al prezzo precedentemente ricevuto dal broker. Prima di inviare un ordine di mercato, i prezzi di esecuzione vengono richiesti al broker. Una volta ricevuto, l'esecuzione dell'ordine a quel prezzo può essere confermata o rifiutata.
  • Esecuzione del mercato
    In questa modalità di esecuzione degli ordini di mercato, la decisione sul prezzo di esecuzione viene presa dal broker senza alcuna approvazione aggiuntiva del trader. L'invio di un ordine a mercato in questa modalità implica un accordo anticipato con il prezzo al quale sarà eseguito.

Quando si preme il pulsante "Vendere a mercato" o "Comprare a mercato", viene creato un ordine per il broker per eseguire una vendita o un acquisto, rispettivamente, al prezzo definito dal broker.

  • Nella modalità di esecuzione "By Market", i livelli di Stop Loss e Take Profit possono essere impostati solo per una posizione già aperta, modificandola.
  • Il commento a un ordine può essere modificato da un broker o da un server. Per esempio, nel caso di chiusura a Stop Loss o Take Profit, includerà le informazioni pertinenti.
  • Se il campo Execution è inattivo, significa che la possibilità di cambiarlo è bloccata sul server.
  • Un doppio clic sulla finestra di apertura della posizione aprirà/nasconderà il tick.
  • Esecuzione dello scambio
    In questa modalità le operazioni di trading eseguite nel terminale del cliente vengono trasferite a un sistema di trading esterno (borsa). Leoperazioni commerciali sono eseguite ai prezzi delle offerte di mercato correnti.

La modalità di esecuzione per ogni simbolo è selezionata dalla vostra società di intermediazione.


Tutto è scritto nell'aiuto del terminale. Ma nessuno lo legge.

Per sapere quale tipo di esecuzione dovete richiedere la proprietà con la funzione SymbolInfoInteger() con l'identificatore SYMBOL_TRADE_EXEMODE

SIMBOLO_TRADE_EXEMODE

Modalità di commercio

ENUM_SYMBOL_TRADE_EXECUTION




ENUM_SYMBOL_TRADE_EXECUTION

Identificatore

Descrizione

RICHIESTA DI ESECUZIONE DI SCAMBIO DI SIMBOLI

Commercio su richiesta

SYMBOL_TRADE_EXECUTION_INSTANT

Commercio a prezzi di streaming

SIMBOLO_COMMERCIO_MERCATO_DI_ESECUZIONE

Esecuzione_mercato

SCAMBIO DI SIMBOLI

Esecuzione dello scambio


 

Grazie mille, ora capisco.

E ho letto l'aiuto, quello che non ho trovato è stata la mia svista + la mancanza di elaborazione dei riferimenti incrociati o qualcosa del genere nell'aiuto:)

 

Quando si testa il consigliere del chirurgo https://www.mql5.com/ru/code/611

con una modifica

[citazione].

Per iniziare il test, nella linea 84 sostituite:
double Limit=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_LIMIT);
con
double Limit= 5;

[/quote]

Su un normale conto demo, quando la scheda Commercio nella sezione Strumenti è attiva, la vista del terminale cambia alla fine del test.

File:
Error01.JPG  382 kb
Error02.JPG  346 kb
 

Su un conto demo, questo è il casino:

Continua a resettare all'inizio.

E su XAUUSD, si preme F9 e poi

anche se non è possibile fare doppio clic sulla finestra degli ordini in "panoramica del mercato".

P.S. So che non puoi fare trading su XAUUSD).

Motivazione: