기고글 토론 "Expert Advisor에서의 자금 관리용 함수들"

 

새로운 기고글 Expert Advisor에서의 자금 관리용 함수들 가 게재되었습니다:

거래 전략의 개발은 주로 시장 진입과 퇴출을 위한 패턴을 찾는 것뿐만 아니라 포지션을 유지하는 것에 초점을 맞추고 있습니다. 만약 일부 패턴을 자동 트레이딩을 위한 공식으로 만들 수 있다면, 투자자는 자동 투자 모드에서 오픈 포지션을 보장하기 위해서 안전한 수준의 모기지 자금뿐만 아니라 포지션의 양, 마진의 크기를 계산해야하는 문제에 직면하게 됩니다. 이 글에서 우리는 그러한 계산을 할 수 있는 간단한 예시를 보이기 위해 MQL5 언어를 사용할 것입니다.

지금까지 설명한 함수들은 Symbol_Info.mq5  Expert Advisor 코드 안에서 확인할 수 있습니다. 아래를 보시면 Comment() 함수를 이용하여 EURUSD 정보를 처리한 결과를 보실 수 있습니다 .


작성자: MetaQuotes

[삭제]  

아, 여기 "독서실"에서 가장 맛있는 것이 등장했는데, 무엇을 어떻게 읽어 봅시다 ...

특히 그런 작가에게서. :)

 

스왑 계산 기능도 보고 싶어요. 스왑에는 5가지 종류가 있으며 각각 고유한 뉘앙스가 있습니다.

때로는 과학적인 방법으로 올바른 위치에 도달하지 못할 때가 있습니다.

선택에 따라 세 가지 변형을 찾았지만 여전히 SYMBOL_SWAP_MODE_BY_INTEREST가 있습니다. 이 계산 방법을 가진 브로커를 찾을 수 없기 때문에 확인할 수 없습니다.

코드베이스에 지정된 통화 및 랏에 대한 스왑 계산 기능을 게시할 수 있다면 감사하겠습니다.

[삭제]  
sergeev:

스왑 계산 기능도 보고 싶어요. 스왑에는 5가지 종류가 있으며 각각 고유한 뉘앙스가 있습니다.

때로는 과학적인 방법으로 올바른 위치에 도달하지 못할 때가 있습니다.

선택에 따라 세 가지 변형을 찾았지만 여전히 SYMBOL_SWAP_MODE_BY_INTEREST가 있습니다. 이 계산 방법을 가진 브로커를 찾을 수 없기 때문에 확인할 수 없습니다.

코드베이스에 지정된 통화 및 랏에 대한 스왑 계산 기능을 게시할 수 있다면 감사하겠습니다.

+1. 또는 더 나은 방법은 표준 라이브러리에서이 모든 계산을 구현하면 올바르게 수행하는 방법과 작업을 살펴볼 것입니다....
 
문서에 나와 있는 것 같아요. 그리고 mcl4에서는 수식 만 변경되었을뿐 동일했습니다.
 
Если даже торговля на данном счете разрешена, то это еще не означает, что эксперт имеет право торговать. Чтобы проверить, разрешено ли торговать эксперту, пишем:

거래는 가능하지만 전문가 조언자는 거래할 수 없는 경우는 무엇인가요?

브로커의 금지 또는 터미널 설정을 의미합니까?

4와 유사하게 : - "...전문가가 거래가 허용되고 거래 운영을위한 흐름이 자유롭다면..."

즉, IsTradeAllowed = IsExpertEnabled + IsTradeContextBusy ??? ?

IsTradeAllowed - Документация на MQL4
  • docs.mql4.com
IsTradeAllowed - Документация на MQL4
 

흥미롭고 필요한 기사! 이 기사의 공식을 확인하려고했는데 이것이 제가 얻은 것입니다. EURGBP를 예로 들어 보겠습니다. 계좌 통화는 달러입니다. 가장 가까운 통화쌍은 EURUSD, 즉 모드=true입니다. 지금까지 잘 이해하셨나요? 이 글의 공식을 사용하여 필요한 증거금을 결정합니다:

   if(direction==POSITION_TYPE_BUY)
     {
      //--- 역 인용
      if(mode)
        {
         //--- 역견적의 구매 가격으로 계산합니다.
         calc_price=tick.ask;
         answer=lot*lot_size*calc_price;
        }
...
if(direction==POSITION_TYPE_SELL)
     {
      //--- 역 인용
      if(mode)
        {
         //--- 역견적의 판매 가격으로 계산합니다.
         calc_price=tick.bid;
         answer=lot*lot_size*calc_price;
        }

즉, 기사에 따르면 구매할 때 필요한 증거금은 다음과 같아야 합니다:

매수: 마진 = 랏*랏_사이즈*틱_ask/레버리지

그리고 매도할 때

매도: 마진 = 로트*롯트_사이즈*틱_매도/레버리지

이 공식을 간단한 EA에 코딩하고 메타 트레이더가 필요한 마진을 알려줄 수 있도록 미리 낮은 자금으로 EURUSD를 매도 및 매수하려고합니다. 동시에 계산된 마진을 출력합니다. 테스터로부터 이러한 메시지를 받습니다:

2010.07.06 16:34:01 코어 1 자금 부족 [0.82227 sl: 0.83296 tp: 0.79796에 0.10 EURGBP 즉시 매도 ]
2010.07.06 16:34:01 코어 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.91, NewFreeMargin: -112.91 - 테스터가 계산한 마진
2010.07.06 16:34:01 코어 1 오류: 돈이 충분하지 않습니다. 여유 마진 = 10, 필요 마진 = 122.899 - 당사에서 계산한 마진.


2010.07.06 16:34:01 코어 1 자금 부족 [0.81247 sl: 0.80191 tp: 0.82988에 0.10 EURGBP 즉시 매수 ]
2010.07.06 16:34:01 코어 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.72, NewFreeMargin: -112.72 - 테스터가 계산한 마진
2010.07.06 16:34:01 코어 1 오류: 돈이 충분하지 않습니다. 여유 마진 = 10, 필요 마진 = 122.737 - 당사에서 계산한 마진.

차이가 있습니다. 이제 필요한 마진을 계산하는 공식을 다음과 같이 변경합니다.

매수: 마진 = 로트*로트_사이즈*틱_입찰/레버리지

매도: 마진 = 랏*롯트_사이즈*틱_ask/레버리지

이는 기사와 모순됩니다. 테스터로부터 이러한 메시지를 받습니다:

2010.07.06 16:39:49 코어 1 자금 부족 [0.82227 sl: 0.83296 tp: 0.79796에 0.10 EURGBP 즉시 매도 ]
2010.07.06 16:39:49 코어 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.91, NewFreeMargin: -112.91 - 테스터가 계산한 마진
2010.07.06 16:39:49 코어 1 오류: 돈이 충분하지 않습니다. 여유 증거금 = 10, 필요 증거금 = 122.911 - 당사에서 계산한 증거금

2010.07.06 16:39:49 코어 1 돈 부족 [0.81247 sl: 0.80191 tp: 0.82988에 즉시 매수 0.10 EURGBP]
2010.07.06 16:39:49 코어 1 프리밸런스: 10.00, 프리에퀴티 10.00, 프리마진: 0.00, 뉴마진: 122.72, 뉴프리마진: -112.72 - 테스터가 계산한 마진
2010.07.06 16:39:49 코어 1 오류: 돈이 부족함. 여유 마진 = 10, 필요 마진 = 122.722 - 당사에서 계산한 마진
.

여기서 전문가 어드바이저가 "잘못된" 방법을 사용하여 계산한 마진은 테스터가 계산한 마진과 정확히 동일합니다. 테스터 또는 기사에서 EURGBP와 같은 크로스를 계산할 때 입찰 및 요청이 재정렬되는 것으로 나타났습니다. 기사 또는 테스터 중 누가 옳을까요?

 

이 기사는 저에게 유용하고 좋은 기사입니다.

이해와 시간 절약 모두에 도움이 됩니다. 고마워요

이 기능으로 무엇을 얻을 수 있는지 이해가 되지 않습니다.

담보 금액이 필요한 경우 계약 금액을 레버리지로 나누어야 하지 않나요?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
SHOOTER777:

이 기사는 저에게 유용하고 좋은 기사입니다.

이해와 시간 절약 모두에 도움이 됩니다. 감사합니다

이 기능으로 무엇을 얻을 수 있는지 이해할 수 없습니다.

필요한 담보의 크기라면 계약 금액을 레버리지로 나누어야 하지 않나요?

바로 이해하지 못했습니다. 결과가 실제와 100배 차이가 나는 이유를 알아내는 데 한 시간이 걸렸습니다.
 
SHOOTER777:

증거금이 필요한 경우 계약 금액을 레버리지로 나누어야 하지 않나요?

계약 금액은 증거금 금액이 아닙니다. 그런 다음 코드에서 값을 레버리지로 나누어 증거금 금액을 구합니다.
 
데모의 EURUSD 쌍에서... 사용 가능한 자금이 10,000 인 경우 10 랏으로 열 수 없습니다... 왜 그렇습니까? 사용 가능한 자금에 따라 가능한 최대 랏을 계산하는 방법과 감사합니다.