MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 996

 
Alexey Viktorov :


인쇄하려는 내용이 올바르지 않습니다. 좋아요.

알아 냈습니다 :

42는 숫자 식별자입니다. ACCOUNT_MARGIN_FREE

저것들. 우리는 상수로 여유 마진을 얻을 수 있습니다

 AccountInfoDouble ( ACCOUNT_MARGIN_FREE )

또는 숫자 ID로:

 AccountInfoDouble (42)

고맙습니다!

 
killer67 :

알아 냈습니다 :

42는 숫자 ID입니다. ACCOUNT_MARGIN_FREE

저것들. 우리는 상수로 여유 마진을 얻을 수 있습니다

또는 숫자 ID로:

고맙습니다!

맞춤법의 첫 번째 버전이 더 유익합니다.

 

https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants

어리석은 질문일 수 있지만 MQL4에서 이러한 기능을 사용할 수 있습니까? MQL4 도구가 더 제한적일 뿐입니다.

MQL4에서 데이터를 가져오는 방법:

SYMBOL_SESSION_DEALS

현재 세션의 거래 수

SYMBOL_SESSION_BUY_ORDERS

현재 총 구매 주문 수

SYMBOL_SESSION_SELL_ORDERS

현재 총 판매 주문 수

SYMBOL_VOLUME

거래량 - 마지막 거래의 거래량

SYMBOL_VOLUMEHIGH

하루 최대 볼륨

SYMBOL_VOLUMELOW

하루 최소 거래량

SYMBOL_BID

입찰 - 최고의 판매 제안

더블

SYMBOL_BIDHIGH

일일 최대 입찰가

더블

SYMBOL_BIDLOW

일일 최소 입찰가

더블

SYMBOL_ASK

Ask - 최고의 구매 제안

더블

SYMBOL_ASKHIGH

하루 최대 요청

더블

SYMBOL_ASKLOW

하루 최소 요청

SYMBOL_SESSION_VOLUME

현재 세션의 총 거래량

더블

SYMBOL_SESSION_TURNOVER

현재 세션의 총 회전율

더블

SYMBOL_SESSION_INTEREST

열린 포지션의 총량

더블

SYMBOL_SESSION_BUY_ORDERS_VOLUME

현재 시점의 총 구매 주문량

더블

SYMBOL_SESSION_SELL_ORDERS_VOLUME

현재 시점의 총 매도 주문량

더블

SYMBOL_SESSION_OPEN

세션 시작 가격

더블

SYMBOL_SESSION_CLOSE

세션 종가

더블


네, 그것은 단지 창고일 뿐입니다. 어떻게 한 번의 움직임으로 유용할 수 있는 데이터를 얻을 수 있습니까? MQL4에서 동일한 정보를 얻는 방법은 다음과 같습니다. 아마도 누군가는 논리적인 질문을 할 것입니다. MQL5의 기능이 더 광범위하기 때문에 내가 왜 MQL5를 공부하지 않는지 알 수 있습니다. 모든 것이 간단합니다. 모든 브로커가 지원하는 것은 아닙니다. 현재 MQL4는 여전히 가장 관련성이 높고 수요가 많습니다.

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как...
 
Gilmor :

https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants

어리석은 질문일 수 있지만 MQL4에서 이러한 기능을 사용할 수 있습니까? MQL4 도구가 더 제한적일 뿐입니다.

MQL4에서 데이터를 가져오는 방법:


네, 그것은 단지 창고일 뿐입니다. 어떻게 한 번의 움직임으로 유용할 수 있는 데이터를 얻을 수 있습니까? MQL4에서 동일한 정보를 얻는 방법은 다음과 같습니다. 아마도 누군가는 논리적인 질문을 할 것입니다. MQL5의 기능이 더 광범위하기 때문에 내가 왜 MQL5를 공부하지 않는지 알 수 있습니다. 모든 것이 간단합니다. 모든 브로커가 지원하는 것은 아닙니다. 현재 MQL4는 여전히 가장 관련성이 높고 수요가 많습니다.

mql4 문서에서 작동하지 않는 모든 항목이 표시됩니다.

SYMBOL_BID

입찰 - 최고의 판매 제안

더블

SYMBOL_BIDHIGH

지원되지 않음

더블

SYMBOL_BIDLOW

지원되지 않음

더블

SYMBOL_ASK

Ask - 최고의 구매 제안

더블

SYMBOL_ASKHIGH

지원되지 않음

더블

SYMBOL_ASKLOW

지원되지 않음

더블

SYMBOL_LAST

지원되지 않음

더블

SYMBOL_LASTHIGH

지원되지 않음

더블

SYMBOL_LASTLOW

지원되지 않음

더블

SYMBOL_POINT

한 점의 가치

더블

이것은 전체 테이블이 아닙니다. 예, 문서에 그러한 것이 하나 이상 있습니다. F1 키를 누르고 읽기만 하면 됩니다.

 
Alexey Viktorov :

mql4 문서에서 작동하지 않는 모든 항목이 표시됩니다.

고맙습니다.
 
이해를 도와주세요. 정지 손실을 올바르게 설정할 수 없습니다.
로그의 줄:
2019.11.16 12:38:40.660 2019.01.02 02:35:00 중지를 계산하기 위해 브로커에서 값을 가져옵니다 = 30
2019.11.16 13:20:18.791 2019.01.02 02:03:00 주문 열기: 가격 = 1.14595, 손절매 = 1.14565, 이익실현 = 1.14625
2019.11.16 13:20:18.791 2019.01.02 02:03:00 즉석 매수 실패 0.01 EURUSD at 1.14595 sl: 1.14565 tp: 1.14625 [잘못된 정지]
2019.11.16 13:20:18.792 2019.01.02 02:03:00 CTrade::OrderSend: 즉시 구매 0.01 EURUSD at 1.14595 sl: 1.14565 tp: 1.14625 [invalid stops]


이제 이 경우에 대한 몇 가지 명확성:
코드에서 주문을 열기 전에 다음을 계산합니다.
가격 = 주문에 따라 구매하기 가장 좋은 시장 가격(이 경우 구매).
SL = 정확한 중지를 계산합니다(브로커는 가격에서 최소 30단위 중지를 허용합니다).
가격(1.14595) - 0.0003 = SL(1.14565)
TP = 정확한 중지를 계산합니다(브로커는 가격에서 최소 30단위 이상의 중지를 허용합니다).
가격(1.14595) + 0.0003 = TP(1.14625)
글쎄요, 다 맞는 것 같은데요, 30점을 유지하고 있는데 설치 오류가 납니다.

SL = 0으로 설정하면 모든 것이 정상이고 주문과 테이크가 이루어집니다.
SL 계산에 오류가 있는 것으로 나타났습니다. 오류는 어디에 있습니까?
 
killer67 :
이해를 도와주세요. 정지 손실을 올바르게 설정할 수 없습니다.
로그의 줄:
2019.11.16 12:38:40.660 2019.01.02 02:35:00 중지를 계산하기 위해 브로커에서 값을 가져옵니다 = 30
2019.11.16 13:20:18.791 2019.01.02 02:03:00 주문 열기: 가격 = 1.14595, 손절매 = 1.14565, 이익실현 = 1.14625
2019.11.16 13:20:18.791 2019.01.02 02:03:00 즉석 매수 실패 0.01 EURUSD at 1.14595 sl: 1.14565 tp: 1.14625 [잘못된 정지]
2019.11.16 13:20:18.792 2019.01.02 02:03:00 CTrade::OrderSend: 즉시 구매 0.01 EURUSD at 1.14595 sl: 1.14565 tp: 1.14625 [invalid stops]


이제 이 경우에 대한 몇 가지 명확성:
코드에서 주문을 열기 전에 다음을 계산합니다.
가격 = 주문에 따라 구매하기 가장 좋은 시장 가격(이 경우 구매).
SL = 정확한 중지를 계산합니다(브로커는 가격에서 최소 30단위 중지를 허용합니다).
가격(1.14595) - 0.0003 = SL(1.14565)
TP = 정확한 중지를 계산합니다(브로커는 가격에서 최소 30단위 이상의 중지를 허용합니다).
가격(1.14595) + 0.0003 = TP(1.14625)
글쎄요, 다 맞는 것 같은데요, 30점을 유지하고 있는데 설치 오류가 납니다.

SL = 0으로 설정하면 모든 것이 정상이고 주문과 테이크가 이루어집니다.
SL 계산에 오류가 있는 것으로 나타났습니다. 오류는 어디에 있습니까?

어떤 종류의 가격?

 
Iurii Tokman :

어떤 종류의 가격?

구매 시 가격 = SYMBOL_ASK

판매 시 가격 = SYMBOL_BID

 
killer67 :

구매 시 가격 = SYMBOL_ASK

판매 시 가격 = SYMBOL_BID

스프레드를 추가해 보셨습니까?

 
Iurii Tokman :

스프레드를 추가해 보셨습니까?

다음과 같이 수정했습니다.

 double CheckSetSL( ENUM_ORDER_TYPE OrderT, double price)
  {
   if (InpSL != 0 )
     {
       double CalcSL = 0.0 ;
       double SL = 0.0 ;
       if (InpSL < 0.0003 )
        {
         CalcSL = 0.0003 ; // Если SL в настройках указано меньше 30 (установки брокером) то ставим минимально допустимую.
        }
       else
        {
         CalcSL = InpSL;
        }

       // Формируем стоп-лимит.
       if (OrderT == ORDER_TYPE_BUY )
        {

         SL = SymbolInfoDouble ( _Symbol , SYMBOL_BID ) - CalcSL;

        }
       else
        {

         SL = SymbolInfoDouble ( _Symbol , SYMBOL_ASK ) + CalcSL;

        }

       return SL;
     }

   return 0.0 ;
  }