I사용자 정의 기능 - 페이지 8

 
 

MQL 도움말의 iCustom 기능 을 살펴보세요. 필요한 기능을 정확히 수행합니다.

 

그게 다야!

감사해요!

 

아이커스텀

안녕하세요,

때때로 내 표시기의 작동은 표시기가 차트에 첨부된 경우 표시기가 일반적으로 실행되는 방식과 반대로 표시기가 iCustom 호출의 결과로 실행된 경우 약간 달라야 합니다.

지표가 차트에 첨부되었기 때문에 지표가 명시적으로 실행되었는지 또는 지표가 iCustom에 대한 호출의 결과로 실행되었는지 확인하기 위해 지표 내에서 사용할 수 있는 MQL 내에 간단한 함수 또는 방법이 있습니까?

퍼지로 기본값이 false인 'Custom'이라는 지표에 부울 매개변수를 포함했습니다. 표시기를 실행하기 위해 iCustom을 호출하면 대신 이 매개변수를 true로 설정합니다. 이렇게 하면 표시기가 iCustom 호출의 결과로 실행되고 있는지 여부를 표시기 내에서 알 수 있습니다.

iCustom을 통해 실행된 표시기의 true를 반환하거나 그렇지 않은 경우 false를 반환하는 IsCustom()과 같은 함수가 분명히 있어야 합니다.

iCustom을 통해 호출된 결과로 표시기가 실행되었는지 여부를 간단하고 우아하게 결정할 수 있는 사람이 있습니까?

문안 인사,

로렌스.

 

모든 도움에 감사드립니다!

에이

 

아이커스텀 질문

icustom으로 다른 지표만 호출하는 지표를 만들려고 노력했습니다. 이 코드 줄을 만들었습니다.

이중 COG=iCustom(NULL,0,"COGpoint1",50,3000,0,true);

나는 코드의 다른 위치에 라인을 넣으려고 시도했고 이중 이름으로 놀았습니다. 나는 많은 튜토리얼을 읽고 읽었습니다. 버퍼 수와 같은 시작 부분에 뭔가를 넣어야 한다고 생각합니다!? 아마도 그것은 이중이 아니어야합니까?

그대로 컴파일하면 오류가 발생합니다.

'init' - 쉼표 또는 세미콜론이 필요함

'init' - 전역 범위에 대한 표현식이 허용되지 않습니다.

누군가 사용자 정의 표시기 로 이것을 이해하는 데 도움을 줄 수 있습니까? 내가 읽은 자습서(그리고 나는 그것들을 모두 가지고 있다고 믿습니다)가 나에게 icustom에 대한 코드 줄을 주었다고 생각하기 때문에 단순히 줄 자체를 갖는 것만으로는 작동하지 않습니다. 각 표시기에 대해 변경되어야 함을 알고 있습니다. 그러나 설명에서 빠진 것이 있습니다.

 

나는 이것에 대해 큰 시도를 했고 나는 나 자신이 매우 자랑스럽습니다! Codersguru에서 코드를 받았고 표시기로 변경했습니다. lol 컴파일할 때 오류가 없어 좋아 보이지만(처음으로!!!!!) 하지만 ... 차트에 추가할 때 메타 트레이더가 "응답하지 않음"을 만듭니다.

나는 Codersguru 코드를 더 잘 볼 때 서로 간섭하고 있다고 생각했기 때문에 표시기의 버퍼 이름을 모두 변경했습니다(val1, val2, val3, val4.에서 value1, value2...etc로). (그는 icustom으로 supertrend를 호출하기 위한 코드를 만들었습니다) 그는 버퍼의 이름을 변경하여 그것이 있어야만 하는 thort이지만 여전히 응답하지 않습니다.

//+----------------------------------------------- -------------------+

//| COG call.mq4 |

//| |

//| |

//+----------------------------------------------- -------------------+

#속성 표시기_분리_창

#속성 표시기_버퍼 4

#property indicator_color1 라임

#property indicator_color2 빨간색

#속성 표시기_색상3 CLR_NONE

#속성 표시기_색상4 CLR_NONE

//---- 버퍼

이중 값1[];

이중 값2[];

이중 값3[];

이중 값4[];

//+----------------------------------------------- -------------------+

//| 커스텀 인디케이터 초기화 기능 |

//+----------------------------------------------- -------------------+

정수 초기화()

{

//---- 표시기

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1,라임);

SetIndexBuffer(0,값1);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1,빨간색);

SetIndexBuffer(1, 값2);

SetIndexStyle(2,DRAW_NONE);

SetIndexBuffer(2, 값3);

SetIndexStyle(3,DRAW_NONE);

SetIndexBuffer(3, 값4);

//----

리턴(0);

}

//+----------------------------------------------- -------------------+

//| 커스텀 인디케이터 초기화 해제 기능 |

//+----------------------------------------------- -------------------+

정수 초기화()

{

//----

//----

리턴(0);

}

//+----------------------------------------------- -------------------+

//| 사용자 지정 표시기 반복 기능 |

//+----------------------------------------------- -------------------+

정수 시작()

{

int counted_bars=IndicatorCounted();

//---- 가능한 오류 확인

if (counted_bars<0) return(-1);

//---- 마지막으로 계산된 막대가 다시 계산됩니다.

if (counted_bars>0) counted_bars--;

int pos=바 수 계산된_바;

동안(위치>=0)

{

value1[pos]=iCustom(NULL,0,"COGpoint1",50,3000,0,true);

value2[pos]=iCustom(NULL,0,"COGpoint1",50,3000,0,true);

value3[pos]=iCustom(NULL,0,"COGpoint1",50,3000,0,true);

value4[pos]=iCustom(NULL,0,"COGpoint1",50,3000,0,true);

}

반환(0);

}

//+----------------------------------------------- -------------------+

 

이것은 Codersguru에서 만든 코드를 가져온 스레드입니다.

https://www.mql5.com/en/forum/173108

나는 끝과 pos에 내 코드 pos에서 일부를 남겨 두었다는 것을 알았습니다.

value1[pos]=iCustom(NULL,0,"COGpoint1",50,3000,0,true,pos);

value2[pos]=iCustom(NULL,0,"COGpoint1",50,3000,0,true,pos);

value3[pos]=iCustom(NULL,0,"COGpoint1",50,3000,0,true,pos);

value4[pos]=iCustom(NULL,0,"COGpoint1",50,3000,0,true,pos);

포스--;

해 보자!

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 세상에

ok 진행했습니다. 화면에 내 표시기의 절반이 표시됩니다(표시기의 빨간색 부분만, 녹색 부분은 어디에 있습니까?). 믿기지 않지만 절반 작업을 하게 된 것은 이번이 처음입니다. 하하하! 내가 뭘 잘못했는지 아는 사람 있니?

 

흠 실험을 위해 0,1,2,3 끝에 숫자를 추가했습니다. 왜 그런지 모르겠어? 하지만 그것은 뭔가를 해냈고, 이제 나는 평평한 빨간색 선과 녹색을 가지고 있습니다!!!!

야! 그것은 옳지 않습니다. 아마도 이것은 이상할 것입니다! 제발 좀 도와주세요... 다 자고 있어요 zzz zzzz zzz 나 빼고!