struct sA
{
int i;
string s;
};
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+class cA
{
public :
sA my_array[];
};
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnStart ()
{
cA *ca;
ca= new cA();
ArrayResize (ca.my_array, 1 );
ZeroMemory (ca.my_array);
ArrayPrint (ca.my_array);
}
표시기 핸들로 주 창이나 하위 창에서 표시 속성을 가져오는 방법을 생각해낸 사람이 있습니까? IndicatorCreate를 사용하여 생성된 임의의 타사 표시기에 대해 이야기하고 있으며 사용자의 요청에 따라 ChartIndicatorAdd 를 사용하여 차트에 추가할 수 있습니다.
Stanislav Korotky : 표시기 핸들로 주 창이나 하위 창에서 표시 속성을 가져오는 방법을 생각해낸 사람이 있습니까? IndicatorCreate를 사용하여 생성된 임의의 타사 표시기에 대해 이야기하고 있으며 사용자의 요청에 따라 ChartIndicatorAdd를 사용하여 차트에 추가할 수 있습니다.
아마도 표시기를 OBJ_CHART 로 밀어넣고 표시기가 어디에 있는지 확인할 수 있습니다.
Stanislav Korotky : 표시기 핸들로 주 창이나 하위 창에서 표시 속성을 가져오는 방법을 생각해낸 사람이 있습니까? IndicatorCreate를 사용하여 생성된 임의의 타사 표시기에 대해 이야기하고 있으며 사용자의 요청에 따라 ChartIndicatorAdd를 사용하여 차트에 추가할 수 있습니다.
비슷한 일을 했습니다. 여기에서 찾았습니다. 작동 여부는 기억나지 않습니다. 확인하시기 바랍니다.
bool FindIndicatorByHandle( long handle, string &symbol, ENUM_TIMEFRAMES &timeframe, long &ChartId, int &sub_win, string &Name) {
long chart_id = ChartFirst ();
while (chart_id!=- 1 ) {
int total_sub = ( int ) ChartGetInteger (chart_id, CHART_WINDOWS_TOTAL );
int total_ind;
for ( int i= 0 ; i<total_sub; i++) {
total_ind = ChartIndicatorsTotal (chart_id,i);
for ( int j= 0 ; j<total_ind; j++) {
string name = ChartIndicatorName (chart_id,i,j);
if ( ChartIndicatorGet (chart_id,i,name)== handle) {
ChartId=chart_id;
symbol= ChartSymbol (chart_id);
timeframe= ChartPeriod (chart_id);
sub_win=i;
Name=name;
returntrue ;
}
}
}
chart_id= ChartNext (chart_id);
}
returnfalse ;
}
코드로 판단하면 열려 있는 모든 차트에서 핸들로 지표를 찾습니다. 기호, 기간, 차트 ID, 하위 창 및 표시기 이름을 반환합니다.
비슷한 일을 했습니다. 여기에서 찾았습니다. 작동 여부는 기억나지 않습니다. 확인하시기 바랍니다.
코드로 판단하면 열려 있는 모든 차트에서 핸들로 지표를 찾습니다. 기호, 기간, 차트 ID, 하위 창 및 표시기 이름을 반환합니다.
이것은 설명된 문제에 맞지 않습니다. IndicatorCreate에 의해 생성된 표시기는 어떤 창에도 배치되지 않습니다. 내부에 "앉아" 있으며 작업은 핸들로 창에 표시기를 배치하는 것입니다. 이제 MQL5는 ChartIndicatorAdd 함수를 사용하여 표시기 자체의 "속성"에 관계없이(오류 없이!) 기본 창과 하위 창 모두에 임의의 핸들을 추가할 수 있으며, 추가가 아닐 때 결과는 매우 이상해 보입니다. 예정된.
그들 중 일부는 하나의 입력 배열로 단순화된 방식으로 OnCalculate 핸들러를 구현하며, 계산을 위해 가격 유형을 선택할 수 있습니다. 타사 MQL5 프로그램에서 터키가 이러한 유형의 가격을 예상하고 있는지 확인하는 방법은 표시기를 생성할 때 모든 매개변수 다음에 전달되어야 하는 가격입니다. 그렇지 않은 것 같습니다. 그리고 이것이 완료되지 않으면 #property indicator_applied_price 에 따라 지표가 구축되며 외부에서도 액세스할 수 없습니다. 다음은 프로그래밍 방식으로 차트에 예제/AMA를 추가하는 간단한 EA입니다.
그 후에 차트 타임프레임 을 전환하면 2개의 AMA 표시기를 얻게 됩니다. 하나는 종가(프로그래밍 방식으로 생성)이고 두 번째는 시가(타임프레임 변경 및 #property indicator_applied_price PRICE_OPEN으로 인해 생성됨)입니다. 이 속성이 iCustom에서 선택되지 않은 이유를 분명히 합니다.
지표에 대한 주제를 계속하면서 MqlParam 매개변수의 문제를 찾아 우회하는 Expert Advisor를 첨부하겠습니다.
전문가의 임무는 동일한 매개변수를 사용하여 차트에 "Examples/Price_Channel" 표시기가 없는 경우 차트에 추가하는 것입니다.
이를 위해 iCustom/IndicatorCreate를 사용하여 인스턴스를 만들고 IndicatorParameters를 통해 매개변수 배열을 얻은 다음 IndicatorParameters가 차트에 이미 존재하는 지표에 대해 루프에서 폴링됩니다. 매개변수 배열에 일치하는 항목이 없으면 표시기가 차트에 추가되고 일치하는 항목이 있으면 새 핸들이 단순히 소멸됩니다.
문제는 매개변수 평등이 항상 예상대로 작동하지 않는다는 것입니다. 특히 이러한 실패 테스트 사례가 있습니다. 빈 차트에 Expert Advisor를 배치하고 마우스를 클릭하면 지표의 첫 번째 인스턴스가 생성됩니다. 그런 다음 차트의 시간대를 다른 것으로 전환하고(이전 표시기는 그대로 유지) 마우스로 다시 클릭합니다. 이상하게도 표시기의 두 번째 인스턴스가 생성됩니다.
실행 및 로그 분석에서 이는 매개변수의 표시기 이름과 행의 잘못된 부등식으로 인한 것임이 분명합니다. 줄은 260자이지만 터미널 0은 훨씬 더 일찍 위치합니다. 그 후 - 일부 서비스 정보 또는 쓰레기. 따라서 "==" 또는 StringCompare 행의 비교는 이 "쓰레기"를 고려하고 행의 부등식이 밝혀집니다.
문자열을 char 배열 로 변환하면 배열이 정확히 일치합니다. 짧은 배열로 변환하면 쓰레기가 보입니다. 일반적으로 문서에 설명되지 않은 일종의 일관성 없는 동작입니다.
MT4에서 MT5로 표시기 전송
DRAW_HISTOGRAM 두께 치수 문제
"1" 또는 "2"로 설정하면 크기가 변경되지만 "3" 또는 "4" = 크기가 여전히 "2"로 유지됨
MT4에서는 모든 것이 작동하지만 MT5에서는 그러한 문제가 발생하는 이유는 무엇입니까?
MT4 결과
MT5의 결과는 "2"의 두께만 표시하지만 설정에서는 "3"입니다.
또한 OnInit() 에서 속성을 설정해도 도움이 되지 않습니다.
PlotIndexSetInteger (0, PLOT_LINE_WIDTH , 3);
디버깅 중 치명적인 오류 :
결과:
현재 최신 베타 버전표시기 핸들로 주 창이나 하위 창에서 표시 속성을 가져오는 방법을 생각해낸 사람이 있습니까? IndicatorCreate를 사용하여 생성된 임의의 타사 표시기에 대해 이야기하고 있으며 사용자의 요청에 따라 ChartIndicatorAdd를 사용하여 차트에 추가할 수 있습니다.
아마도 표시기를 OBJ_CHART 로 밀어넣고 표시기가 어디에 있는지 확인할 수 있습니다.
표시기 핸들로 주 창이나 하위 창에서 표시 속성을 가져오는 방법을 생각해낸 사람이 있습니까? IndicatorCreate를 사용하여 생성된 임의의 타사 표시기에 대해 이야기하고 있으며 사용자의 요청에 따라 ChartIndicatorAdd를 사용하여 차트에 추가할 수 있습니다.
비슷한 일을 했습니다.
코드로 판단하면 열려 있는 모든 차트에서 핸들로 지표를 찾습니다. 기호, 기간, 차트 ID, 하위 창 및 표시기 이름을 반환합니다.여기에서 찾았습니다. 작동 여부는 기억나지 않습니다. 확인하시기 바랍니다.
아마도 표시기를 OBJ_CHART 로 밀어넣고 표시기가 어디에 있는지 확인할 수 있습니다.
사용자가 지정하는 옵션을 만들어야 하는 동안 시도해 보겠습니다.
비슷한 일을 했습니다.
코드로 판단하면 열려 있는 모든 차트에서 핸들로 지표를 찾습니다. 기호, 기간, 차트 ID, 하위 창 및 표시기 이름을 반환합니다.여기에서 찾았습니다. 작동 여부는 기억나지 않습니다. 확인하시기 바랍니다.
이것은 설명된 문제에 맞지 않습니다. IndicatorCreate에 의해 생성된 표시기는 어떤 창에도 배치되지 않습니다. 내부에 "앉아" 있으며 작업은 핸들로 창에 표시기를 배치하는 것입니다. 이제 MQL5는 ChartIndicatorAdd 함수를 사용하여 표시기 자체의 "속성"에 관계없이(오류 없이!) 기본 창과 하위 창 모두에 임의의 핸들을 추가할 수 있으며, 추가가 아닐 때 결과는 매우 이상해 보입니다. 예정된.
지표가 있는 더 큰 매복이 있습니다.
그들 중 일부는 하나의 입력 배열로 단순화된 방식으로 OnCalculate 핸들러를 구현하며, 계산을 위해 가격 유형을 선택할 수 있습니다. 타사 MQL5 프로그램에서 터키가 이러한 유형의 가격을 예상하고 있는지 확인하는 방법은 표시기를 생성할 때 모든 매개변수 다음에 전달되어야 하는 가격입니다. 그렇지 않은 것 같습니다. 그리고 이것이 완료되지 않으면 #property indicator_applied_price 에 따라 지표가 구축되며 외부에서도 액세스할 수 없습니다. 다음은 프로그래밍 방식으로 차트에 예제/AMA를 추가하는 간단한 EA입니다.
그 후에 차트 타임프레임 을 전환하면 2개의 AMA 표시기를 얻게 됩니다. 하나는 종가(프로그래밍 방식으로 생성)이고 두 번째는 시가(타임프레임 변경 및 #property indicator_applied_price PRICE_OPEN으로 인해 생성됨)입니다. 이 속성이 iCustom에서 선택되지 않은 이유를 분명히 합니다.
지표에 대한 주제를 계속하면서 MqlParam 매개변수의 문제를 찾아 우회하는 Expert Advisor를 첨부하겠습니다.
전문가의 임무는 동일한 매개변수를 사용하여 차트에 "Examples/Price_Channel" 표시기가 없는 경우 차트에 추가하는 것입니다.
이를 위해 iCustom/IndicatorCreate를 사용하여 인스턴스를 만들고 IndicatorParameters를 통해 매개변수 배열을 얻은 다음 IndicatorParameters가 차트에 이미 존재하는 지표에 대해 루프에서 폴링됩니다. 매개변수 배열에 일치하는 항목이 없으면 표시기가 차트에 추가되고 일치하는 항목이 있으면 새 핸들이 단순히 소멸됩니다.
문제는 매개변수 평등이 항상 예상대로 작동하지 않는다는 것입니다. 특히 이러한 실패 테스트 사례가 있습니다. 빈 차트에 Expert Advisor를 배치하고 마우스를 클릭하면 지표의 첫 번째 인스턴스가 생성됩니다. 그런 다음 차트의 시간대를 다른 것으로 전환하고(이전 표시기는 그대로 유지) 마우스로 다시 클릭합니다. 이상하게도 표시기의 두 번째 인스턴스가 생성됩니다.
실행 및 로그 분석에서 이는 매개변수의 표시기 이름과 행의 잘못된 부등식으로 인한 것임이 분명합니다. 줄은 260자이지만 터미널 0은 훨씬 더 일찍 위치합니다. 그 후 - 일부 서비스 정보 또는 쓰레기. 따라서 "==" 또는 StringCompare 행의 비교는 이 "쓰레기"를 고려하고 행의 부등식이 밝혀집니다.
문자열을 char 배열 로 변환하면 배열이 정확히 일치합니다. 짧은 배열로 변환하면 쓰레기가 보입니다. 일반적으로 문서에 설명되지 않은 일종의 일관성 없는 동작입니다.
정확히 버그가 무엇인지 잘 모르겠습니다. MQL에서 문자열을 처리하는 원칙이나 다른 것입니다.
뉘앙스를 알고 있는 사람이 있으면 pliz가 팁을 제공합니다.
뉘앙스를 알고 있는 사람이 있으면 pliz가 팁을 제공합니다.
안다고 해도 머리속으로 레이어 전체를 다시 올려야 하는 그런 종류의 기능입니다.
여기서 그는 자신의 존재를 결정했습니다. TF를 전환할 때 작동하는 것 같습니다.