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

 
Roman :

말해봐, mql5 표시기에 대한 후크가 있습니까? 두 개의 표시 속성을 설정합니다.

다른 출력을 각각 고유한 표시 속성에 바인딩하는 방법도 있습니다.

있다. 그러나 mql5 및 시장에서만 작동하지 않습니다. 표시기에서 두 번째 표시기의 이름으로 표시기를 검색하고 존재하지 않으면 ChartIndicatorAdd ().

 
Alexey Viktorov :

있다. 그러나 mql5 및 시장에서만 작동하지 않습니다. 표시기에서 두 번째 표시기의 이름으로 표시기를 검색하고 존재하지 않으면 ChartIndicatorAdd ().

글쎄, 이것은 두 가지 지표입니다. 메인 차트와 서브 윈도우에 동시 이중 그리기 속성이 있는 것이 아닙니다.

두 개의 서로 다른 표시기를 동시에 실행하기 위한 옵션으로 실행됩니다. 그러나 데이터는 하나가 아닌 두 개의 지표에서 얻어야 합니다.

 
Artyom Trishkin :

글쎄, 이것은 두 가지 지표입니다. 메인 차트와 서브 윈도우에 동시 이중 그리기 속성이 있는 것이 아닙니다.

두 개의 서로 다른 표시기를 동시에 실행하기 위한 옵션으로 실행됩니다. 그러나 데이터는 하나가 아닌 두 개의 지표에서 얻어야 합니다.

네, 맞습니다. 하나의 코드에서 차트와 하위 창에 그리는 것이 요점이었습니다.

Artyom Trishkin :

서브 윈도우의 메인 차트에서 자신만의 구성을 사용하십시오.

여기에 걸림돌이 있습니다. 차트의 하위 창에서 어떻게 표시합니까?
예가 있으면 더 명확해질 것입니다.

 

제가 직면한 문제를 도와주세요.   내가 시도한 계산이 마진을 계산하는 데 작동하지 않는 이유를 이해하지 못했습니다.   다음 공식을 사용하고 있습니다.

https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants?#enum_symbol_calc_mode

그러나 문제가 남아 있었습니다.

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

이 코드를 MQL4에서 MQL5로 변환하는 방법을 알려주십시오.

 datetime   bar_day   = TimeDay(Time[ Bars - 1 ]);

?

많은 옵션을 시도했지만 다음은 그 중 하나입니다.

 int bars= Bars ;
//+------------------------------

   datetime   bar_day   = TimeDayMQL4(iTimeMQL4( NULL , 0 ,(bars - 1 )));

여기서 TimeDayMQL4 및 iTimeMQL4는 MQL4 호환성 라이브러리에서 생성된 함수 입니다. 코드는 다음과 같습니다.

 int TimeDayMQL4( datetime date)
  {
   MqlDateTime tm;
   TimeToStruct (date,tm);
   return (tm.day);
  }

datetime iTimeMQL4( string symbol, int tf, int index)
{
   if (index < 0 ) return (- 1 );
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[];
   if ( CopyTime (symbol, timeframe, index, 1 , Arr)> 0 )
         return (Arr[ 0 ]);
   else return (- 1 );
}

하지만 여전히 작동하지 않습니다, 나는 1970을 얻습니다 ...

 
Sayberix :

이 코드를 MQL4에서 MQL5로 변환하는 방법을 알려주십시오.

?

간단 해. 기사를 따르십시오: https://www.mql5.com/ru/articles/81

Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 
jaffer wilson :

간단 해. 기사를 따르십시오: https://www.mql5.com/ru/articles/81

내 게시물을 업데이트했습니다. 시도했지만 작동하지 않습니다. 변수에서 다음 값을 얻습니다. D'1970.01.01 00:00:24'

나는 또한 TimeMonthMQL4 및 TimeYearMQL4를 사용합니다.
 
jaffer wilson :

제가 직면한 문제를 도와주세요.   내가 시도한 계산이 마진을 계산하는 데 작동하지 않는 이유를 이해하지 못했습니다.   다음 공식을 사용하고 있습니다.

https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants?#enum_symbol_calc_mode

그러나 문제는 남아 있었습니다.

이해하지 못했습니다. 불행히도 메시지를 표시하지 않겠습니다.

 
Roman :

네, 맞습니다. 하나의 코드에서 차트와 하위 창에 그리는 것이 요점이었습니다.

여기에 걸림돌이 있습니다. 차트의 하위 창에서 어떻게 표시합니까?
예가 있으면 더 명확해질 것입니다.

차트에 표시할 수 있는 두 가지 옵션이 있습니다.

  1. 그래픽 개체
  2. 캔버스

어쨌든 데이터 창 에 표시되지 않지만이 데이터를 수신 할 수있는 추가 버퍼를 만들고 기본 창에서 데이터를 가져올 수있는 값을 작성해야합니다 , 자신의 구성이 표시됩니다. 그러면 하위 창과 주 차트 모두에서 하나의 지표에서 데이터를 수신할 수 있습니다.

또는 더 편리한 방법은 먼저 각 막대에 대해 계산된 모든 데이터를 이 버퍼에 입력한 다음 이 데이터를 기반으로 기본 창에 차트를 그리는 것입니다. 그것을 구축하는 방법은 당신에게 달려 있습니다. 저는 캔버스를 선택하겠습니다.

 
Sayberix :

내 게시물을 업데이트했습니다. 시도했지만 작동하지 않습니다. 변수에서 다음 값을 얻습니다. D'1970.01.01 00:00:24'

나는 또한 TimeMonthMQL4 및 TimeYearMQL4를 사용합니다.

Jaffer가 가져온 기사에서

 void OnStart ()
{
   datetime Time[];
   int count = 2 ;         //сколько копируем 
   ArraySetAsSeries (Time, true );
   CopyTime ( _Symbol , PERIOD_D1 , 0 , count, Time); 
   
   Print (Time[ 1 ]); //1-окрытие вчерашнего дня, 0-открытие текущего дня
}