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

 
Евгений :
주말에 공석에 대한 대본의 성능을 어떻게 확인할 수 있습니까?
아니요. 주말에는 Expert Advisor만 Strategy Tester에서 포지션 공석을 확인할 수 있습니다.
 
Karputov Vladimir :
지표만 OnCalculate()의 모든 틱을 처리합니다. 패스 없이.
아니오. 그리고 그는 그리워합니다. 그러나 다른 사람들보다 적습니다. 하지만 그리워
 
Victor Nikolaev :
아니오. 그리고 그는 그리워합니다. 그러나 다른 사람들보다 적습니다. 하지만 그리워
표시기는 OnCalculate() 를 입력할 때마다 표시기가 리소스 집약적인 계산을 사용하는 경우에만 눈금을 건너뛸 수 있습니다.
 
kashi_ann :

좋아요, 감사합니다.

질문 하나 더:

주문선택

추가 작업을 위해 주문을 선택합니다. 함수가 성공적으로 완료되면 true를 반환합니다. 함수가 실패하면 false를 반환합니다. 오류에 대한 정보를 얻으려면 GetLastError() 함수를 호출해야 합니다.

bool 주문 선택 (
    울롱     티켓        // 티켓 주문
);

옵션

티켓

[in] 티켓 주문.

이 티켓은 어떻게 할당되나요? 어디서 얻나요? 아니면 어떻게 설치하나요?

설명서에는 이렇게 적혀있다

티켓 주문하기

해당 주문의 티켓을 반환하고 기능을 사용하여 추가 작업에 대한 주문을 자동으로 선택합니다. 모든 주문을 인덱스별로 정렬하고 필요한 경우 티켓을 받아야 합니다. 이 기능 자체가 주문을 선택하지만. 티켓은 브로커가 설정하며 변경할 수 없습니다.

 ulong    OrderGetTicket ( 
   int   index       // номер в списке ордеров 
   );
 

안녕하세요!

매일 차트에 "비거래 시간대"를 그려야 하는 함수를 작성했습니다.
그러나 여기에 문제가 있습니다. 시작 시 OnInit 모듈은 예상대로 그려지고 알 수 없는 이유로 OnTimer 모듈에서 트리거되면 날짜 변수는 OnInit 모듈에 할당된 값을 저장합니다.

질문: 왜?

 int OnInit ()

  {

     EventSetTimer ( 1 );

     MqlDateTime date;

     TimeLocal (date); 

    offtimeCreate(date); // Рисуем на графике заполненный прямоугольник (не торговая зона) с 21:00 до 23:59 в день указанный в переменной date

     return ( INIT_SUCCEEDED ); 

  } 

 ...

void onTimer()

  {

     MqlDateTime date;

     TimeLocal (date);

     if (date.hour== 9 && date.min== 0 && date.sec== 0 )  offtimeCreate(date); // Каждое утро, в 9:00, рисуем новую "не торговую зону" для дня указанного в переменной date

  } 

...
 
INGFX :

안녕하세요!

매일 차트에 "비거래 시간대"를 그려야 하는 함수를 작성했습니다.
그러나 여기에 문제가 있습니다. 시작 시 OnInit 모듈은 예상대로 그려지고 알 수 없는 이유로 OnTimer 모듈에서 트리거되면 날짜 변수는 OnInit 모듈에 할당된 값을 저장합니다.

질문: 왜?

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

카르푸토프 블라디미르 , 2016.01.09 20:51

타이머에서 날짜 변수가 OnInit()에서 이전에 정의된 값을 전달했다고 생각하는 이유는 무엇입니까?

영역을 그리는 함수를 조사해야 합니다.

추가됨:

올바른 것은 onTimer가 아니라 OnTimer입니다.

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

INGFX , 2016.01.09 21:20

A) 시각적으로 보기 때문에 "시간대"는 오늘 21시부터 23시 59분까지가 아니라 어제 21시부터 오늘 23시 59분까지 그려집니다.

B) 그래픽 개체의 속성(채워진 사각형 - "시간대")을 열면 첫 번째 변수가 변경되지 않았음을 알 수 있습니다. 어제 21시처럼 중요해

...
bool offtimeCreate( MqlDateTime &stm)
  {
     color clr=Black;
     datetime tm1,tm2;
    tm1 = StringToTime (( string )stm.year+ "." +( string )stm.mon+ "." +( string )stm.day+ " 21:00" );
    tm2 = StringToTime (( string )stm.year+ "." +( string )stm.mon+ "." +( string )stm.day+ " 23:59" );

    RectangleCreate( 0 , "offtime" , 0 ,tm1, 0 ,tm2, 200 ,clr); // chrart_id,object_name,sub_window,time1,price1,time2,price2,color

     return ( true );
  }
...

 
Karputov Vladimir :
올바른 것은 onTimer가 아니라 OnTimer입니다.
예, OnTimer, 여기에 다시 작성할 때 실수를 했습니다... 코드 자체에서 모든 것이 정확합니다.
 
INGFX :
예, OnTimer, 여기에 다시 작성할 때 실수를 했습니다... 코드 자체에서 모든 것이 정확합니다.

당신은 당신의 코드를 확인할 것입니다. 조각을 함께 꿰매는 데 지쳤습니다. 여기 인증 코드가 있습니다. OnTimer에서 현지 시간으로 대체하고 초기화 중과 타이머에서 인쇄물을 비교합니다.

 //+------------------------------------------------------------------+
//|                                                       TestEA.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   EventSetTimer ( 1 );
   MqlDateTime date;
   TimeLocal (date);
   offtimeCreate(date); // Рисуем на графике заполненный прямоугольник (не торговая зона) с 21:00 до 23:59 в день указанный в переменной date
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer ()
  {
   MqlDateTime date;
   TimeLocal (date);
   if (date.hour== 22 && date.min== 33 && date.sec== 00 )
      offtimeCreate(date); // Каждое утро, в 9:00, рисуем новую "не торговую зону" для дня указанного в переменной date
  }
//+------------------------------------------------------------------+
/*void offtimeCreate(MqlDateTime &struct_date)
  {
   string text="";
   text=IntegerToString(struct_date.hour)+":"+
        IntegerToString(struct_date.min)+":"+
        IntegerToString(struct_date.sec);
   Comment(text);
//ChartRedraw();
  }*/
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool offtimeCreate( MqlDateTime &stm)
  {
   color clr=Black;
   datetime tm1,tm2;
   tm1 = StringToTime (( string )stm.year+ "." +( string )stm.mon+ "." +( string )stm.day+ " 21:00" );
   tm2 = StringToTime (( string )stm.year+ "." +( string )stm.mon+ "." +( string )stm.day+ " 23:59" );

   Print (tm1+ "      " +tm2);
//RectangleCreate(0,"offtime",0,tm1,0,tm2,200,clr); // chrart_id,object_name,sub_window,time1,price1,time2,price2,color

   return ( true );
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir :

당신은 당신의 코드를 확인할 것입니다.

블라디미르, 인내와 도움에 감사드립니다!
정말 코드에서 실수를 했네요...
앞으로 더 조심하겠습니다.

사유: