Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1147

 
Vladimir Karputov:

Ecco fatto:


Un'altra cosa importante è come aggiornate i prezzi (e se li aggiornate proprio?). Lo spread - come si ottiene?

    double point, price, ask, bid;
    ulong digits;

    if(!SymbolInfoDouble(symbol, SYMBOL_ASK, ask)) return(true);
    if(!SymbolInfoDouble(symbol, SYMBOL_ASK, bid)) return(true);
    if(!SymbolInfoInteger(symbol, SYMBOL_DIGITS, digits)) return(true);
    if(!SymbolInfoDouble(symbol, SYMBOL_POINT, point)) return(true);
SymbolInfoInteger(symbol, SYMBOL_SPREAD);
 
Mikhail Sergeev:

Quindi, per riferimento futuro:

1.SymbolInfoDouble

Se questa funzione è usata per ottenere informazioni sull'ultimo tick, è meglio usareSymbolInfoTick(). È molto probabile che non ci sia stata alcuna quotazione per questo simbolo dal momento in cui il terminale si è collegato al conto di trading. In questo caso, il valore richiesto sarà indefinito.

2. È meglio prendere lo spread come differenza tra Ask e Bid.

3. Livello di congelamento: cercate il valore massimosu tre (SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_STOPS_LEVEL e spread calcolato) e moltiplicatelo per tre e sarete felici.

Il punto 3 è stato dedotto in pratica lavorando con KodoBase (e il validatore sia in KodoBase che in Market è lo stesso).
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
  • www.mql5.com
2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с...
 
Vladimir Karputov:

Quindi, per riferimento futuro:

1.SymbolInfoDouble

Se questa funzione è usata per ottenere informazioni sull'ultimo tick, è meglio usareSymbolInfoTick(). È molto probabile che non ci sia stata alcuna quotazione per questo simbolo dal momento in cui il terminale si è collegato al conto di trading. In questo caso, il valore richiesto sarà indefinito.

2. È meglio prendere lo spread come differenza tra Ask e Bid.

3. Livello di congelamento: cercate il valore massimosu tre (SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_STOPS_LEVEL e spread calcolato) e moltiplicatelo per tre e sarete felici.

Il punto 3 è stato dedotto in pratica lavorando con KodoBase (e il validatore sia in KodoBase che in Market è lo stesso).

Grazie mille! Ora farò alcune modifiche e lo proverò.

 
Mikhail Sergeev:

Grazie mille! Ora faccio le modifiche e provo.

Sì, il risultato sarà interessante.

 
Vladimir Karputov:

Sì, il risultato sarà interessante.

Problema risolto! Si è rivelato molto semplice, per cancellare un ordine è necessario compilarerequest.symbol

Non ho trovato nessuna informazione strutturata su quali dati dovrebbero essere passati alla richiesta a seconda del tipo di commercio. E ho usato l'esempiohttps://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions.

Non c'è.


Ho controllato molte varianti con il congelamento. Nel mio caso la misura singola era sufficiente.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Торговля осуществляется посредством отправки с помощью функции OrderSend() приказов на открытие позиций, а также приказов на установку, модификацию и удаление отложенных ордеров. Каждый торговый приказ содержит указание на тип запрашиваемой торговой операции. Торговые операции описаны в перечислении ENUM_TRADE_REQUEST_ACTIONS...
 
Mikhail Sergeev:

Problema risolto! Si è rivelato molto semplice, per cancellare un ordine è necessario compilarerequest.symbol.

Non ho trovato nessuna informazione strutturata su quali dati dovrebbero essere passati alla richiesta a seconda del tipo di operazione commerciale. E ho usato l'esempio https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions.

Non c'è.


Ho controllato molte varianti con il congelamento. Nel mio caso, la taglia singola era sufficiente.

Perché avete bisogno di queste complicazioni? Usa la classe commerciale CTrade.

 
Vladimir Karputov:

Perché prendersi tutto questo disturbo? Usa la classe di trading CTrade.

Sfortunatamente questo esiste fin da MT4. Era più facile adattarlo.


Non so di CTrade, ma sembra che ovunque si debba specificare un simbolo, questo sia presente nei parametri passati al metodo. E non è presente nel metodo OrderDelete(const ulong ticket), quindi non funzionerà. Dovremmo riempire il request.symbol da qualche parte prima.

 
Mikhail Sergeev:

Sfortunatamente, questo esiste fin da MT4. Era più facile adattarsi.


Riguardo a CTrade - non l'ho capito, ma sembra che ovunque sia necessario specificare un simbolo, è nei parametri passati al metodo. E non è presente nel metodo OrderDelete(const ulong ticket), quindi non funzionerà. Dobbiamo riempire il request.symbol da qualche parte.

Cosa non funzionerà? Questa è una classe commerciale: imposta, modifica e cancella gli ORDINI REMOTI, e apre, modifica e chiude le PISTE.

Funziona assolutamente tutto. E tutto è scritto in una riga da qualsiasi comando commerciale.


CTrade

Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade
  • www.mql5.com
Стандартная библиотека / Торговые классы / CTrade - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

Cosa non funzionerà allora? È una classe di trading: imposta, modifica e cancella gli ORDINI REMOTI, apre, modifica e chiude le PISTE.

Funziona assolutamente tutto. E tutto è scritto in una riga da qualsiasi comando commerciale.


CTrade

//+------------------------------------------------------------------+
//| Delete specified pending order                                   |
//+------------------------------------------------------------------+
bool CTrade::OrderDelete(const ulong ticket)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__))
      return(false);
//--- clean
   ClearStructures();
//--- setting request
   m_request.action    =TRADE_ACTION_REMOVE;
   m_request.magic     =m_magic;
   m_request.order     =ticket;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

Quindi non capisco a che punto m_request.symbol viene riempito

Comunque, problema risolto. Grazie ancora per il vostro aiuto!

 
Mikhail Sergeev:

Quindi non capisco a che punto m_request.symbol viene riempito

Comunque, problema risolto. Grazie mille ancora per il vostro aiuto!

Fate un debugger attraversoCTrade e vedrete dove è andato il simbolo :)

Motivazione: