//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ voidOnStart () { //--- Проверяем количество аналогичных индикаторов на всех открытых окнах long id= ChartFirst (); int indicatorsTotal= 0 ; int windowsTotal= 0 ; //--- int ctr= 0 ; //--- do { windowsTotal=( int ) ChartGetInteger (id, CHART_WINDOWS_TOTAL ); for ( int i= 0 ; i<windowsTotal; i++) { indicatorsTotal= ChartIndicatorsTotal (id,i); for ( int j= 0 ; j<indicatorsTotal; j++) { //Print( __FUNCTION__,": Имя индикатора: "+ChartIndicatorName( id, i, j ) ); //--- string shortName= ChartIndicatorName (id,i,j); if ( StringFind (shortName, "DATATYPE" )< 0 ) continue ; else { //--- получим хэндл индикатора int handle= ChartIndicatorGet (id,i,shortName); //--- if (handle== INVALID_HANDLE ) // Если хэндл не получен { Print ( __FUNCTION__ , ": ОШИБКА #" , GetLastError (), ": хэндл индикатора " +shortName+ " не получен!" ); return ; // Ошибка! Переходим к следующему индикатору } //--- Получаем параметры индикатора MqlParam parameters[]; // Массив-приемник параметров ENUM_INDICATORindicator_type ; // Тип индикатора //--- Получение.. int params= IndicatorParameters (handle, indicator_type ,parameters); //--- for ( int p= 1 ; p<params; p++) Print ( __FUNCTION__ , ": p#" ,p, ": type = " , EnumToString (parameters[p].type)); } } } } while (( id= ChartNext (id))>= 0 ); }
출력에서 다음을 얻습니다.
2017.02 . 2009 : 08 : 58.144 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 1 : type = TYPE_BOOL 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 2 : type = TYPE_CHAR 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 3 : type = TYPE_UCHAR 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 4 : type = TYPE_SHORT 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 5 : type = TYPE_USHORT 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 6 : type = TYPE_UINT 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 7 : type = TYPE_INT 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 8 : type = TYPE_UINT 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 9 : type = TYPE_LONG 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 10 : type = TYPE_LONG 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 11 : type = TYPE_ULONG 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 12 : type = TYPE_DOUBLE 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 13 : type = TYPE_DOUBLE 2017.02 . 2009 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 14 : type = TYPE_STRING
TYPE_COLOR(#6) 대신 TYPE_UINT를 표시 하고 TYPE_DATETIME (#9) 대신 TYPE_LONG을 표시하고 TYPE_FLOAT(#12) 대신 TYPE_DOUBLE을 표시하는 것을 알 수 있습니다. TYPE_COLOR, TYPE_DATETIME 및 TYPE_FLOAT 유형이 열거형에 설명되어 있지만 고유한 값이 있어야 합니다!
www.mql5.com의 쿠키를 지워야 합니다.
크롬 56.0.2924.87에서는 리콜 페이지를 수동으로 새로 고침하거나 새로 고치지 않고 비행이 정상입니다.
어떻게하는지 알려줘?
그러나 크롬에서는 다음과 같이 할 수 있습니다.
웹 사이트 www.mql5.com => 개발자 패널에서 F12 키를 눌러 응용 프로그램 탭으로 이동 => 쿠키 섹션 => 쿠키 항목의 RMB => 다음에서 모두 지우기 ...
구글이 구출합니다.
그러나 크롬에서는 다음과 같이 할 수 있습니다.
웹 사이트 www.mql5.com => 개발자 패널에서 F12 키를 눌러 응용 프로그램 탭으로 이동 => 쿠키 섹션 => 쿠키 항목의 RMB => 다음에서 모두 지우기 ...
그런거 없다
재생산. 코드를 스크립트에 작성했는데 디버그 모드로 실행되면 올바른 값(1001199)을 제공하고 릴리스를 컴파일하고 MT5의 트리에서 실행하면 11199가 안정적으로 제공됩니다.
이것은 실제로 컴파일러 버그입니다. 서비스 데스크에 작성하십시오 .
그런거 없다
말해주세요
MT4의 무게는 1.8 기가바이트(RAM)로 시작되었습니다. UPU를 통째로 먹어버려서 두 번째 터미널을 켤 수가 없어요. MT에서 RAM을 "청소"하는 방법을 알려주지 않습니까?
말해주세요
MT4의 무게는 1.8기가바이트(RAM)가 되었습니다. UPU를 통째로 먹어버려서 두 번째 터미널을 켤 수가 없어요. MT에서 RAM을 "청소"하는 방법을 알려주지 않습니까?
터미널을 다시 시작해 보셨습니까?
차트의 막대 수 를 줄이면 메모리가 확보되지만 나중에 다시 시작해야 합니다.
터미널을 다시 시작해 보셨습니까?
차트의 막대 수 를 줄이면 메모리가 확보되지만 나중에 다시 시작해야 합니다.
표시기 매개변수 ENUM_DATATYPE의 유형을 결정하는 동안 오류가 발생했습니다.
테스트 지표를 실행 중입니다. 입력 매개변수에서 각 매개변수는 고유한 유형을 갖습니다.
#property indicator_plots 0
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
input bool inpBool = false ; //1
input char inpChar = 0 ; //2
input uchar inpUChar = 0 ; //3
input short inpShort = 0 ; //4
input ushort inpUShort= 0 ; //5
input color inpColor= clrWhite ; //6
input int inpInt= 0 ; //7
input uint inpUInt= 0 ; //8
input datetime inpDatetime= 0 ; //9
input long inpLong= 0 ; //10
input ulong inpULong = 0 ; //11
input float inpFloat = 0.0 ; //12
input double inpDouble = 0.0 ; //13
input string inpString = "" ; //14
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
IndicatorSetString ( INDICATOR_SHORTNAME , "DATATYPE" );
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return (rates_total);
}
//+------------------------------------------------------------------+
다음으로 스크립트를 통해 찾고 매개변수 유형을 인쇄합니다.
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart ()
{
//--- Проверяем количество аналогичных индикаторов на всех открытых окнах
long id= ChartFirst ();
int indicatorsTotal= 0 ;
int windowsTotal= 0 ;
//---
int ctr= 0 ;
//---
do
{
windowsTotal=( int ) ChartGetInteger (id, CHART_WINDOWS_TOTAL );
for ( int i= 0 ; i<windowsTotal; i++)
{
indicatorsTotal= ChartIndicatorsTotal (id,i);
for ( int j= 0 ; j<indicatorsTotal; j++)
{
//Print( __FUNCTION__,": Имя индикатора: "+ChartIndicatorName( id, i, j ) );
//---
string shortName= ChartIndicatorName (id,i,j);
if ( StringFind (shortName, "DATATYPE" )< 0 )
continue ;
else
{
//--- получим хэндл индикатора
int handle= ChartIndicatorGet (id,i,shortName);
//---
if (handle== INVALID_HANDLE ) // Если хэндл не получен
{
Print ( __FUNCTION__ , ": ОШИБКА #" , GetLastError (), ": хэндл индикатора " +shortName+ " не получен!" );
return ; // Ошибка! Переходим к следующему индикатору
}
//--- Получаем параметры индикатора
MqlParam parameters[]; // Массив-приемник параметров
ENUM_INDICATOR indicator_type ; // Тип индикатора
//--- Получение..
int params= IndicatorParameters (handle, indicator_type ,parameters);
//---
for ( int p= 1 ; p<params; p++)
Print ( __FUNCTION__ , ": p#" ,p, ": type = " , EnumToString (parameters[p].type));
}
}
}
}
while (( id= ChartNext (id))>= 0 );
}
출력에서 다음을 얻습니다.
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 2 : type = TYPE_CHAR
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 3 : type = TYPE_UCHAR
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 4 : type = TYPE_SHORT
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 5 : type = TYPE_USHORT
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 6 : type = TYPE_UINT
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 7 : type = TYPE_INT
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 8 : type = TYPE_UINT
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 9 : type = TYPE_LONG
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 10 : type = TYPE_LONG
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 11 : type = TYPE_ULONG
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 12 : type = TYPE_DOUBLE
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 13 : type = TYPE_DOUBLE
2017.02 . 20 09 : 08 : 58.147 test_DATATYPE (BR- 3.17 ,M1) OnStart : p # 14 : type = TYPE_STRING
TYPE_COLOR(#6) 대신 TYPE_UINT를 표시 하고 TYPE_DATETIME (#9) 대신 TYPE_LONG을 표시하고 TYPE_FLOAT(#12) 대신 TYPE_DOUBLE을 표시하는 것을 알 수 있습니다. TYPE_COLOR, TYPE_DATETIME 및 TYPE_FLOAT 유형이 열거형에 설명되어 있지만 고유한 값이 있어야 합니다!
서비스 데스크 #1677120