초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1147

 
Vladimir Karputov :

이와 같이:


또 다른 중요한 사항은 가격을 업데이트하는 방법(그리고 업데이트를 전혀 합니까?)입니다. 확산 - 어떻게 얻습니까?

     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 :

따라서 미래를 위해:

1. SymbolInfoDouble

함수가 마지막 틱에 대한 정보를 얻는 데 사용되는 경우 SymbolInfoTick() 을 사용하는 것이 좋습니다 . 터미널이 거래 계정에 연결된 순간부터 이 기호에 대한 작은 따옴표가 없었을 수 있습니다. 이 경우 요청된 값은 정의되지 않습니다.

2. Ask와 Bid의 차액으로 스프레드를 취하는 것이 좋습니다.

3. 동결 수준: 세 값 중 최대값( SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_STOPS_LEVEL 및 계산된 스프레드 )을 찾고 3을 곱하면 만족할 것입니다.

Point 3은 KodoBase로 작업할 때 실제로 파생되었습니다(검증자는 KodoBase와 Market 모두에서 동일함).
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
  • www.mql5.com
2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром. Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с...
 
Vladimir Karputov :

따라서 미래를 위해:

1. SymbolInfoDouble

함수가 마지막 틱에 대한 정보를 얻는 데 사용되는 경우 SymbolInfoTick() 을 사용하는 것이 좋습니다 . 터미널이 거래 계정에 연결된 순간부터 이 기호에 대한 작은 따옴표가 없었을 가능성이 큽니다. 이 경우 요청된 값은 정의되지 않습니다.

2. Ask와 Bid의 차액으로 스프레드를 취하는 것이 좋습니다.

3. 동결 수준: 세 값 중 최대값( SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_STOPS_LEVEL 및 계산된 스프레드 )을 찾고 3을 곱하면 만족할 것입니다.

Point 3은 KodoBase로 작업할 때 실제로 파생되었습니다(검증자는 KodoBase와 Market 모두에서 동일함).

정말 감사합니다! 이제 변경하고 시도하겠습니다.

 
Mikhail Sergeev :

정말 감사합니다! 이제 변경하고 시도하겠습니다.

예, 결과가 흥미로울 것입니다.

 
Vladimir Karputov :

예, 결과가 흥미로울 것입니다.

문제 해결됨! 모든 것이 매우 간단하다는 것이 밝혀졌습니다. 주문을 삭제하려면 request.symbol 을 작성해야 합니다.

거래 유형에 따라 요청에 어떤 데이터를 전달해야 하는지에 대한 구조화된 정보를 찾지 못했습니다. 그리고 예제를 사용했습니다 https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions

거기 없어


동결과 함께 많은 옵션을 확인했습니다. 제 경우에는 싱글 사이즈로 충분했습니다.

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

문제 해결됨! 모든 것이 매우 간단하다는 것이 밝혀졌습니다. 주문을 삭제하려면 request.symbol 을 작성해야 합니다.

거래 유형에 따라 요청에 어떤 데이터를 전달해야 하는지에 대한 구조화된 정보를 찾지 못했습니다. 그리고 예제를 사용했습니다 https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions

거기 없어


동결과 함께 많은 옵션을 확인했습니다. 제 경우에는 싱글 사이즈로 충분했습니다.

왜 그러한 어려움이 있습니까? CTrade 거래 클래스를 사용하십시오.

 
Vladimir Karputov :

왜 그러한 어려움이 있습니까? CTrade 거래 클래스를 사용하십시오.

불행히도 이것은 여전히 MT4로 확장됩니다. 적응하기가 더 쉬웠습니다.


CTrade 의 경우 잘 이해하지 못했지만 기호를 지정해야 하는 곳마다 메서드에 전달된 매개변수에 있는 것 같습니다. 그리고 OrderDelete(const ulong ticket) 메소드에는 그것을 가지고 있지 않으므로 작동하지 않을 것입니다. request.symbol을 미리 어딘가에 기입해야 합니다.

 
Mikhail Sergeev :

불행히도 이것은 여전히 MT4로 확장됩니다. 적응하기가 더 쉬웠습니다.


CTrade의 경우에는 잘 이해하지 못했지만 기호를 지정해야 하는 곳마다 메서드에 전달되는 매개변수에 있는 것 같습니다. 그리고 OrderDelete(const ulong ticket) 메소드에는 그것을 가지고 있지 않으므로 작동하지 않을 것입니다. request.symbol을 미리 어딘가에 기입해야 합니다.

작동하지 않는 것은 무엇입니까? 이것은 거래 클래스입니다: PENDING ORDERS를 설정, 수정 및 삭제 하고 POSITIONS를 열고 수정하고 닫습니다.

확실히 모든 것이 작동합니다. 모든 거래 명령이 한 줄로 작성됩니다.


씨트레이드

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

작동하지 않는 것은 무엇입니까? 이것은 거래 클래스입니다: PENDING ORDERS를 설정, 수정 및 삭제 하고 POSITIONS를 열고 수정하고 닫습니다.

확실히 모든 것이 작동합니다. 모든 거래 명령이 한 줄로 작성됩니다.


씨트레이드

 //+------------------------------------------------------------------+
//| 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));
  }

그래서 나는 m_request.symbol 이 채워지는 시점을 이해하지 못합니다.

자, 문제가 해결되었습니다. 다시 한 번, 많은 도움을 주셔서 감사합니다!

 
Mikhail Sergeev :

그래서 나는 m_request.symbol 이 채워지는 시점을 이해하지 못합니다.

자, 문제가 해결되었습니다. 다시 한 번, 많은 도움을 주셔서 감사합니다!

디버거로 CTrade 를 통해 기호가 사라진 위치를 확인하세요. :)

사유: