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

 
Vladimir Zubov :

나는 이것을 모릅니다. 보통 "확인 준비" 단계로 가져올 때까지 브라우저를 닫지 않습니다. 탭에서 "내 제품" 섹션을 검색해 보십시오. 초안은 일반적으로 거기에 있습니다. 없는 경우 처음부터 시작해야 할 수도 있습니다. 게시하려는 제품의 이름이 사용되지 않은 경우 초안이 저장되지 않았을 가능성이 큽니다.

고맙습니다! 설립하다!
 
친애하는 동료 여러분, 안녕하십니까!
옛날 옛적에 나는 클래스 객체 배열을 파일에 저장할 수 있는 가능성에 대해 질문했고 커뮤니티에서 긍정적인 답변을 받았습니다. 드디어 모든 것을 확인하게 되었습니다. 그리고 예 - 그것은 정말로 무언가를 절약합니다. 그리고 나서 SOMETHING도 읽습니다. 어쨌든 FileWriteArray와 FileReadArray는 모두 쓰고 읽은 요소 수에 대해 올바른 값을 반환합니다. 그러나 클래스 메소드를 통해 읽기 배열의 첫 번째 요소에 액세스하려고 할 때 테스터는 잘못된 포인터 액세스 오류를 제공한 다음 OnTick 치명적 오류를 발생시키고 종료합니다. 동시에 배열을 작성하고 연속적으로 읽는 것이 아니라 단순히 메모리에 생성된 것으로 작업하면 모든 것이 작동합니다. 무엇이 문제가 될 수 있습니까? 저장된 객체 배열을 올바르게 복원하는 방법은 무엇입니까?
 
BlackTomcat :
친애하는 동료 여러분, 안녕하십니까!
옛날 옛적에 나는 클래스 객체 배열을 파일에 저장할 수 있는 가능성에 대해 질문했고 커뮤니티에서 긍정적인 답변을 받았습니다. 드디어 모든 것을 확인하게 되었습니다. 그리고 예 - 그것은 정말로 무언가를 절약합니다. 그리고 나서 SOMETHING도 읽습니다. 어쨌든 FileWriteArray와 FileReadArray는 모두 쓰고 읽은 요소 수에 대해 올바른 값을 반환합니다. 그러나 클래스 메소드를 통해 읽기 배열의 첫 번째 요소에 액세스하려고 할 때 테스터는 잘못된 포인터 액세스 오류를 제공한 다음 OnTick 치명적 오류를 발생시키고 종료합니다. 동시에 배열을 작성하고 연속적으로 읽는 것이 아니라 단순히 메모리에 생성된 것으로 작업하면 모든 것이 작동합니다. 무엇이 문제가 될 수 있습니까? 저장된 객체 배열을 올바르게 복원하는 방법은 무엇입니까?
스튜디오에 코드!
 
안녕하세요! 나는 MT4를 잘한다. 그리고 MT5에서는 초보자입니다. 주문을 닫는 명령은 무엇입니까? 여기 작업 유형 목록(https://www.mql5.com/en/docs/constants/tradingconstants/enum_trade_request_actions)에서 찾지 못했습니다. CLOSE_BY 만 하고 그냥 닫습니다.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexander Kharlamov :
안녕하세요! 나는 MT4를 잘한다. 그리고 MT5에서는 초보자입니다. 주문을 닫는 명령은 무엇입니까? 여기 작업 유형 목록(https://www.mql5.com/en/docs/constants/tradingconstants/enum_trade_request_actions)에서 찾지 못했습니다. CLOSE_BY 만 하고 그냥 닫습니다.

MT5는 그렇게 쉬운 일이 아닙니다

닫는다는 것은 같은 로트의 반대 거래를 여는 것을 의미합니다.

즉, TRADE_ACTION_DEAL 작업

 
Vladislav Andruschenko :

MT5는 그렇게 쉬운 일이 아닙니다

닫는다는 것은 같은 로트의 반대 거래를 여는 것을 의미합니다.

즉, TRADE_ACTION_DEAL 작업

답변 감사합니다만 아직도 잘 이해가 안가네요 .. 반대편을 열어서 TRADE_ACTION_CLOSE_BY 하시겠습니까?
 
Alexander Kharlamov :
답변 감사합니다만 아직도 잘 이해가 안가네요 .. 반대편을 열어서 TRADE_ACTION_CLOSE_BY 하시겠습니까?

MT5에는 POSITION이라는 개념이 있습니다. 포지션을 마감할 수 있습니다. 포지션을 완전히 청산해야 한다면 표준 라이브러리를 사용하십시오. 상계 계정의 경우 포지션 마감의 예:

 //+------------------------------------------------------------------+
//|                                                 PositionClos.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.00"
//--- подключение стандартной библиотеки
#include <Trade\Trade.mqh>
//--- объект класса CTrade
CTrade trade;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//--- закрытие позицию по текущему символу
   trade.PositionClose( Symbol ());
  }
//+------------------------------------------------------------------+
파일:
 
Karputov Vladimir :

MT5에는 POSITION이라는 개념이 있습니다. 포지션을 마감할 수 있습니다. 포지션을 완전히 청산해야 한다면 표준 라이브러리를 사용하십시오. 상계 계정의 경우 포지션 마감의 예:

이해하기 시작한 것 같아요! ) 이 악기 에 대한 주문을 실행할 때 마다 위치가 올바르게 변경됩니다. 이제 질문은 " 포지션 ID는 새로 개설된 각 포지션에 할당되는 고유 번호이며 전체 수명 동안 변경되지 않습니다. 포지션이 개설된 주문 티켓에 해당합니다."입니다.

그리고 후속 주문이 위치를 변경하면 그 번호는 그것을 생성한 첫 번째 주문과 동일하게 유지됩니까?
 
Alexander Kharlamov :

1. 이해하기 시작한 것 같아요! ) 이 악기 에 대한 주문을 실행할 때 마다 위치가 변경됩니다. 그렇죠?
2. 이제 질문은 " 포지션 식별자는 새로 개설된 각 포지션에 할당된 고유 번호이며 전체 수명 동안 변경되지 않습니다. 포지션이 개설된 주문 티켓에 해당합니다."입니다.

그리고 후속 주문이 위치를 변경하면 그 번호는 그것을 생성한 첫 번째 주문과 동일하게 유지됩니까?

1. 네, 맞습니다. 주문을 실행하면 거래가 생성됩니다. 거래는 다음을 수행할 수 있습니다.

  • 위치를 만들다
  • 위치 볼륨 변경
  • 포지션을 마감하다
2. 연습보다 더 나은 것이 무엇입니까? :) 모든 차트에서 위치를 (수동으로) 엽니다. 스크립트 실행

 //+------------------------------------------------------------------+
//|                                           PositionGetInteger.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link        "http://wmua.ru/slesar/"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   for ( int i= 0 ;i< PositionsTotal ();i++)
     {
       //--- проверим наличие позиции и выведем время её изменения 
       string pos_symbol= PositionGetSymbol (( uint )i);
       if (pos_symbol!= NULL )
        {
         //--- получим идентификатор позиции для дальнейшей работы с ней 
         ulong position_ID= PositionGetInteger ( POSITION_IDENTIFIER );
         Print (pos_symbol, " postion #" ,position_ID);
         //--- получим время образования позиции в миллисекундах с 01.01.1970 
         long create_time_msc= PositionGetInteger ( POSITION_TIME_MSC );
         PrintFormat ( "Position #%d  POSITION_TIME_MSC = %i64 milliseconds => %s" ,position_ID,
                     create_time_msc, TimeToString (create_time_msc/ 1000 ));
         //--- получим время последнего изменения позиции в секундах с 01.01.1970 
         long update_time_sec= PositionGetInteger ( POSITION_TIME_UPDATE );
         PrintFormat ( "Position #%d  POSITION_TIME_UPDATE = %i64 seconds => %s" ,
                     position_ID,update_time_sec, TimeToString (update_time_sec));
         //--- получим время последнего изменения позиции в миллисекундах с 01.01.1970 
         long update_time_msc= PositionGetInteger ( POSITION_TIME_UPDATE_MSC );
         PrintFormat ( "Position #%d  POSITION_TIME_UPDATE_MSC = %i64 milliseconds => %s" ,
                     position_ID,update_time_msc, TimeToString (update_time_msc/ 1000 ));
        }
     }
//--- 
  }
//+------------------------------------------------------------------+

- 라인에 주의하십시오(터미널의 "전문가" 탭에서 확인):

 2016.08 . 29 14 : 51 : 24.435 PositionGetInteger (EURUSD,M1)  EURUSD postion # 95873997

볼륨을 높이고 스크립트를 다시 실행하십시오 - 문자열을 다시 비교하십시오

 2016.08 . 29 14 : 51 : 32.872 PositionGetInteger (EURUSD,M1)  EURUSD postion # 95873997

보시다시피 위치 속성(POSITION_IDENTIFIER)은 위치가 뒤집히지 않으면 변경되지 않습니다.

파일:
 
위치 가 반전되면 POSIITION_IDENTIFIER가 변경됩니다.
사유: