mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 19

 
Artyom Trishkin :

마지막 위치 의 시작 시간, 마지막 위치의 닫는 시간을 어떻게 결정할 수 있습니까?

그리고 일반적으로 mql5‌의 오픈/클로즈드 포지션 정보를 얻기 위한 일반 원칙과 알고리즘을 알고 싶습니다.

고려해야 할 사항, 현재 존재하는 기능은 무엇입니까?

요점은 거래 부분으로 작업할 때 MQL5 구문보다 1000배 더 가볍고 명확한 MQL4 구문을 사용한다는 것입니다.

MQL4의 문제를 세 줄로 모든 사람에게 명확하게 해결하는 것이 얼마나 쉬운지 잘 알고 있습니다. 그래서 저는 이렇게 결정합니다.

MQL5에 대한 모든 질문에 답하기 위해 라이브러리의 소스 코드를 살펴봅니다. 내가 아는 모든 뉘앙스가 고려되었습니다.

현재로서는 헤지와 네팅 포지션이 매우 다르다고 말할 수 있습니다. 예를 들어, Netting에서는 지속적으로 거래하면서 항상 한 달 동안 하나의 포지션만 가질 수 있습니다. 따라서 표준 MT5 의미의 네팅 위치는 잘못된 생각이며 따라서 불편한 것입니다. 따라서 동일한 네팅에 대해 고유한 위치 엔터티를 생성할 수 있습니다. 동일한 MT4에서 Netting 위치를 가질 수는 있지만 훨씬 더 이해하기 쉬운 상호 작용이 있습니다.

1랏에 대한 포지션을 엽니다. 그런 다음 0.99에서 닫고 같은 양을 추가하십시오. 그리고 여러 번.

H‌edge는 다방향 위치를 가질 수 있어서가 아니라 한 방향의 하나의 심볼에 여러 위치가 있을 수 있기 때문에 편리합니다. 이것은 내가 편리하다고 생각하는 Netting 시스템의 위치와 정확히 같은 종류의 작업입니다. 그리고 MT5에 있는 것이 아닙니다.

이상적으로는 Netting 계정에서 작업할 때 항상 MT4 문을 완전히 준수하는 테이블이 있어야 합니다. 그러한 테이블만이 거래 계정에서 발생한 일과 방법에 대한 즉각적인 이해를 제공하기 때문입니다. MT5 문이 아닙니다.

MT5-Hedge의 경우 모든 것이 간단합니다. 그러나 CloseBy는 발굴하지 않았습니다. 그래서 나는 모른다.

 
fxsaber :
클로즈드 포지션 의 SL/TP 레벨을 찾는 것이 항상 가능한 것은 아닙니다.

또한 MT5 포지션의 TP는 항상 시장가 주문이라는 인용문을 따릅니다. 한계 아날로그에 베팅하지 마십시오. 위 참조.

하지만 이것은 이미 흥미롭습니다... 마지막 마감된 포지션이 이익실현으로 마감되었는지 확실히 알아야 할 필요성에 직면했습니다.

확실히 알 수 있는 방법이 없을까요?‌

 
Artyom Trishkin :

하지만 이것은 이미 흥미롭습니다... 마지막 마감된 포지션이 이익실현으로 마감되었는지 확실히 알아야 할 필요성에 직면했습니다.

확실히 알 수 있는 방법이 없을까요?‌

나는 조언대로 한다:

 //+------------------------------------------------------------------+
//| Возвращает причину закрытия позиции по Take Profit               |
//+------------------------------------------------------------------+
bool IsClosedByTP ( const string symbol)
{
   //--- Получим комментарий последней сделки на указанном символе
   string last_comment = LastDealComment (symbol);
   //--- Если в комментарии есть строка "tp"
   if ( StringFind (last_comment, "tp" , 0 ) > - 1 )
     return ( true );
   //--- Если нет строки "tp"
   return ( false );
}
//+------------------------------------------------------------------+
//| Возвращает причину закрытия позиции по Stop Loss                 |
//+------------------------------------------------------------------+
bool IsClosedBySL ( const string symbol)
{
   //--- Получим комментарий последней сделки на указанном символе
   string last_comment = LastDealComment (symbol);
   //--- Если в комментарии есть строка "sl"
   if ( StringFind (last_comment, "sl" , 0 ) > - 1 )
     return ( true );
   //--- Если нет строки "sl"
   return ( false );
}
//+------------------------------------------------------------------+
//| Возвращает комментарий последней сделки на указанном символе     |
//+------------------------------------------------------------------+
string LastDealComment ( const string symbol)
{
   int     total_deals  = 0 ;   // Всего сделок в списке выбранной истории
   string deal_symbol  = "" ; // Символ сделки
   string deal_comment = "" ; // Комментарий сделки
                             //--- Если история сделок получена
   if ( HistorySelect ( 0 , TimeCurrent ()))
  {
     //--- Получим количество сделок в полученном списке
    total_deals = HistoryDealsTotal ();
     //--- Пройдемся по всем сделкам в полученном списке от последней сделки к первой
     for ( int i = total_deals - 1 ; i >= 0 ; i--)
    {
       //--- Получим комментарий сделки
      deal_comment = HistoryDealGetString ( HistoryDealGetTicket (i), DEAL_COMMENT );
       //--- Получим символ сделки
      deal_symbol = HistoryDealGetString ( HistoryDealGetTicket (i), DEAL_SYMBOL );
       //--- Если символ сделки и текущий символ равны, остановим цикл
       if (deal_symbol == symbol)
         break ;
    }
  }
   //---
   return (deal_comment);
}

 
안드레이 딕 :

나는 조언대로 한다:

좋습니다. 하지만 마지막 거래로 인해 포지션이 마감되거나 취소되었다는 것을 어떻게 알 수 있습니까?

위치가 닫히거나 반대로 된 경우 조언자의 논리에 필요한 데이터를 확인하는 것이 합리적입니다.

그렇지 않고 마지막 거래가 테이크에 의해 마감된 것으로 확인되었지만 포지션이 남아 있다면 마지막으로 마감된 포지션 (아직 존재함)에 대한 데이터를 확인하는 것은 의미가 없습니다.

물론 일반적으로 4차 시스템 이후에 MT5 오더 시스템의 로직으로 빠르게 전환하는 것은 다소 어렵습니다. 마지막으로 닫힌 위치 - 모든 것이 4 위치에서 투명합니다. 위치에는 자체 유형이 있으며 마지막으로 적합합니다. 데이터를 가져와 사용합니다. 하지만 여기... 헤징, 그물... 그리고 결과가 같아야 하고... 생각이 엉망이 되어 버렸어...‌

 
Artyom Trishkin :

좋습니다. 하지만 마지막 거래로 인해 포지션이 마감되거나 취소되었다는 것을 어떻게 알 수 있습니까?

1. 위치가 닫히거나 반대로 된 경우 조언자의 논리에 필요한 데이터를 확인하는 것이 합리적입니다.

2. 그렇지 않고, 마지막 거래가 테이크에 의해 마감된 것으로 확인되었지만 포지션이 남아 있다면, 마지막으로 마감된 포지션 (아직도 존재함)에 대한 데이터를 확인하는 것은 의미가 없습니다.

물론 일반적으로 4차 시스템 이후에 MT5 오더 시스템의 로직으로 빠르게 전환하는 것은 다소 어렵습니다. 마지막으로 닫힌 위치 - 모든 것이 4 위치에서 투명합니다. 위치에는 자체 유형이 있으며 마지막으로 적합합니다. 데이터를 가져와 사용합니다. 하지만 여기... 헤징, 그물... 그리고 결과가 같아야 하고... 생각이 엉망이 되어 버렸어...‌

1. 거래 유형, IN, OUT 또는 IN/OUT 확인

2. 포지션이 SL 또는 TP에 의해 청산되었다면 더 이상 존재하지 않고 청산되었으므로 거래 유형을 확인할 필요가 없습니다.

 
안드레이 딕 :

1. 거래 유형, IN, OUT 또는 IN/OUT 확인

2. 포지션이 SL 또는 TP에 의해 청산되었다면 더 이상 존재하지 않고 청산되었으므로 거래 유형을 확인할 필요가 없습니다.

이것이 그물에 해당합니까? 아니면 헤지용으로도? 헤지 계정은 한 방향으로 여러 포지션을 가질 수 없습니까? 아니면 여전히 위치입니까 - 하나이며 .... 그리고 "그리고"는 어떻습니까? ... 젠장 ... 나는 "그리고"나 자신이 무엇인지 모릅니다 ... 많은 질문이 있습니다. 대답은 여전히 내 머리에 맞지 않습니다.
 
Artyom Trishkin :
이것이 그물에 해당합니까? 아니면 헤지용으로도? 헤지 계정은 한 방향으로 여러 포지션을 가질 수 없습니까? 아니면 여전히 위치입니까 - 하나이며 .... 그리고 "그리고"는 어떻습니까? ... 젠장 ... 나는 "그리고"나 자신이 무엇인지 모릅니다 ... 많은 질문이 있습니다. 대답은 여전히 내 머리에 맞지 않습니다.

헤지용으로도.

몇 년 동안 내 두뇌는 그물망으로 날카로워졌다.‌ 주문->무역->포지션. 포지션에 많은 거래가 있을 수 있습니다(헤지에서는 거래가 하나뿐입니다. 그렇지 않은 경우 전문가를 수정). 거래 유형에 따라 해당 포지션에 발생한 상황을 결정할 수 있습니다.

물론 헤지에서는 이해하기 쉽지만 유지 관리가 더 어렵습니다. 물론이다.‌

 
안드레이 딕 :

헤지용으로도.

몇 년 동안 내 두뇌는 그물망으로 날카로워졌다.‌ 주문->무역->포지션. 포지션에 많은 거래가 있을 수 있습니다(헤지에서는 거래가 하나뿐입니다. 그렇지 않은 경우 전문가를 수정). 거래 유형에 따라 해당 포지션에 발생한 상황을 결정할 수 있습니다.

물론 헤지에서는 이해하기 쉽지만 유지 관리가 더 어렵습니다. 물론이다.‌

좋아 감사합니다. 내가 알아낼께.
 
Artyom Trishkin :

하지만 이것은 이미 흥미롭습니다... 마지막 마감된 포지션이 이익실현으로 마감되었는지 확실히 알아야 할 필요성에 직면했습니다.

확실히 알 수 있는 방법이 없을까요?‌

마지막 거래 DEAL_ENTRY_OUT을 찾고 이 목록에서 HistorySelectByPosition 위치의 전체 내역을 선택하면 헤지 계정에 대한 2개의 거래와 2개의 주문이 있으며 포지션을 열고 닫습니다. 마감이 발생한 주문에는 ORDER_PRICE_OPEN 이 포함됩니다. 그런 다음 포지션의 종류와 마감된 주문의 종류를 확인합니다... 주문의 종류가 반대이면 마감입니다. 따라서 주문의 가격은 원하는 가격이며 약간의 설명이 있습니다. 주문의 이익 > 0이면 이것은 TP의 가격이고, < 0이면 SL에 의해 포지션이 마감되었습니다.

나는 영장에 대한 논평에 의존하지 않을 것이다.‌

 
알렉세이 빅토로프 :

마지막 거래 DEAL_ENTRY_OUT을 찾고 이 목록에서 HistorySelectByPosition 위치의 전체 내역을 선택하면 헤지 계정에 대한 2개의 거래와 2개의 주문이 있으며 포지션을 열고 닫습니다. 마감이 발생한 주문에는 ORDER_PRICE_OPEN 이 포함됩니다. 그런 다음 포지션의 종류와 마감된 주문의 종류를 확인합니다... 주문의 종류가 반대이면 마감입니다. 따라서 주문의 가격은 원하는 가격이며 약간의 설명이 있습니다. 주문의 이익 > 0이면 이것은 TP의 가격이고, < 0이면 SL에 의해 포지션이 마감되었습니다.

영장에 대한 논평에 의존한다면 그렇게 하지 않을 것이다.‌

SL 트롤은 어떻습니까? 검은 색 SL 트롤에서 닫힌 것을 어떻게 결정할 수 있습니까?