ObjectCreate("최대",OBJ_HLINE,win_idx,0,top); 원하는 창에 그리기,
ObjectSet("최대",OBJPROP_COLOR,노란색); 적당한 색으로 칠하다
ObjectSet("최대",OBJPROP_WIDTH,0); 오른쪽 선을 그립니다
그러나 최상위 매개변수를 정의하지 않습니다.
이중 상단=WindowPriceMax(win_idx);
그리고 topBuffer[]는 비어 있습니다.
코드
#속성 표시기_분리_창 #속성 표시기_버퍼 3 #property indicator_color1 라임 #property indicator_color2 빨간색 //--- 버퍼 이중 ExtMapBuffer1[]; 이중 ExtMapBuffer2[]; 이중 topBuffer[];
bool initFinished=거짓; // 초기화 상태를 기억할 변수를 추가합니다. // false - 아직 초기화되지 않음 // 사실 - 이전 //+----------------------------------------------- --------------------+ //| 사용자 지정 표시기 초기화 기능 | //+----------------------------------------------- --------------------+ 정수 초기화() { //---- 표시기 SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); SetIndexStyle(2,DRAW_NONE); SetIndexBuffer(2,topBuffer);
표시자숫자(5); //---- 리턴(0); } //+----------------------------------------------- --------------------+ //| 사용자 지정 표시기 초기화 해제 기능 | //+----------------------------------------------- --------------------+ 정수 초기화() { //----
//---- 리턴(0); } //+----------------------------------------------- --------------------+ //| 사용자 지정 표시기 반복 기능 | //+----------------------------------------------- --------------------+ 정수 시작() { int counted_bars=IndicatorCounted(), 한계;
ObjectCreate("최대",OBJ_HLINE,win_idx,0,top); 원하는 창에 그리기,
ObjectSet("최대",OBJPROP_COLOR,노란색); 적당한 색으로 칠하다
ObjectSet("최대",OBJPROP_WIDTH,0); 오른쪽 선을 그립니다
그러나 최상위 매개변수를 정의하지 않습니다.
이중 상단=WindowPriceMax(win_idx);
그리고 topBuffer[]는 비어 있습니다.
코드
#속성 표시기_분리_창 #속성 표시기_버퍼 3 #property indicator_color1 라임 #property indicator_color2 빨간색 //--- 버퍼 이중 ExtMapBuffer1[]; 이중 ExtMapBuffer2[]; 이중 topBuffer[];
bool initFinished=거짓; // 초기화 상태를 기억할 변수를 추가합니다. // false - 아직 초기화되지 않음 // 사실 - 이전 //+----------------------------------------------- --------------------+ //| 사용자 지정 표시기 초기화 기능 | //+----------------------------------------------- --------------------+ 정수 초기화() { //---- 표시기 SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,ExtMapBuffer2); SetIndexStyle(2,DRAW_NONE); SetIndexBuffer(2,topBuffer);
표시자숫자(5); //---- 리턴(0); } //+----------------------------------------------- --------------------+ //| 사용자 지정 표시기 초기화 해제 기능 | //+----------------------------------------------- --------------------+ 정수 초기화() { //----
//---- 리턴(0); } //+----------------------------------------------- --------------------+ //| 사용자 지정 표시기 반복 기능 | //+----------------------------------------------- --------------------+ 정수 시작() { int counted_bars=IndicatorCounted(), 한계;
int ArrayMaximum( 이중 배열[], int count=WHOLE_ARRAY, int start=0) 최대값을 가진 요소를 검색합니다. 이 함수는 배열에서 최대 요소의 위치를 반환합니다. 옵션: array[] - 검색할 숫자 배열입니다. count - 검색할 요소의 수입니다. start - 검색할 시작 인덱스입니다.
예시: 이중 num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9}; int maxValueIdx=ArrayMaximum(num_array); Print("최대값 = ", num_array[maxValueIdx]);
win_idx - 맞습니까?
win_ind가 맞습니다.
ObjectCreate("최대",OBJ_HLINE,win_idx,0,top); 원하는 창에 그리기,
ObjectSet("최대",OBJPROP_COLOR,노란색); 적당한 색으로 칠하다
ObjectSet("최대",OBJPROP_WIDTH,0); 오른쪽 선을 그립니다
그러나 최상위 매개변수를 정의하지 않습니다.
이중 상단=WindowPriceMax(win_idx);
그리고 topBuffer[]는 비어 있습니다.
코드
#속성 표시기_분리_창
#속성 표시기_버퍼 3
#property indicator_color1 라임
#property indicator_color2 빨간색
//--- 버퍼
이중 ExtMapBuffer1[];
이중 ExtMapBuffer2[];
이중 topBuffer[];
bool initFinished=거짓; // 초기화 상태를 기억할 변수를 추가합니다.
// false - 아직 초기화되지 않음
// 사실 - 이전
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//---- 표시기
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,topBuffer);
표시자숫자(5);
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 반복 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
int counted_bars=IndicatorCounted(),
한계;
if(counted_bars>0)
counted_bars--;
제한=막대 개수 계산된 막대기;
//----
for(int i=0;i<limit;i++)
{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);
if(초기화 완료==거짓)
{
IndicatorShortName("MACD_max-min");
int win_idx=WindowFind("MACD_max-min");
// 표시기의 하위 창 번호를 찾습니다.
if(win_idx<0)
{
// 서브 윈도우 번호가 -1이면 오류가 발생했습니다.
Print("창을 찾을 수 없습니다.");
리턴(0);
}
이중 상단=WindowPriceMax(win_idx);
//현재 차트의 지정된 하위 창의 세로 눈금의 최대값을 찾습니다.
ObjectCreate("최대",OBJ_HLINE,win_idx,0,top);
// 표시기 하위 창에 수평선을 그립니다.
ObjectSet("최대",OBJPROP_COLOR,노란색);
ObjectSet("최대",OBJPROP_WIDTH,0);
창 다시 그리기();
// 라인을 보기 위해 창을 다시 그립니다.
initFinished=참;
// 그리기 완료
}
topBuffer[i]=상단;
}
//----
반환(0);
}
//+----------------------------------------------- --------------------+
win_ind가 맞습니다.
ObjectCreate("최대",OBJ_HLINE,win_idx,0,top); 원하는 창에 그리기,
ObjectSet("최대",OBJPROP_COLOR,노란색); 적당한 색으로 칠하다
ObjectSet("최대",OBJPROP_WIDTH,0); 오른쪽 선을 그립니다
그러나 최상위 매개변수를 정의하지 않습니다.
이중 상단=WindowPriceMax(win_idx);
그리고 topBuffer[]는 비어 있습니다.
코드
#속성 표시기_분리_창
#속성 표시기_버퍼 3
#property indicator_color1 라임
#property indicator_color2 빨간색
//--- 버퍼
이중 ExtMapBuffer1[];
이중 ExtMapBuffer2[];
이중 topBuffer[];
bool initFinished=거짓; // 초기화 상태를 기억할 변수를 추가합니다.
// false - 아직 초기화되지 않음
// 사실 - 이전
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//---- 표시기
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,topBuffer);
표시자숫자(5);
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 반복 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
int counted_bars=IndicatorCounted(),
한계;
if(counted_bars>0)
counted_bars--;
제한=막대 개수 계산된 막대기;
//----
for(int i=0;i<limit;i++)
{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);
if(초기화 완료==거짓)
{
IndicatorShortName("MACD_max-min");
int win_idx=WindowFind("MACD_max-min");
// 표시기의 하위 창 번호를 찾습니다.
if(win_idx<0)
{
// 서브 윈도우 번호가 -1이면 오류가 발생했습니다.
Print("창을 찾을 수 없습니다.");
리턴(0);
}
이중 상단=WindowPriceMax(win_idx);
//현재 차트의 지정된 하위 창의 세로 눈금의 최대값을 찾습니다.
ObjectCreate("최대",OBJ_HLINE,win_idx,0,top);
// 표시기 하위 창에 수평선을 그립니다.
ObjectSet("최대",OBJPROP_COLOR,노란색);
ObjectSet("최대",OBJPROP_WIDTH,0);
창 다시 그리기();
// 라인을 보기 위해 창을 다시 그립니다.
initFinished=참;
// 그리기 완료
}
topBuffer[i]=상단;
}
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
방해해서 죄송합니다
루프 및 그리기에 대해 topBuffer[i]를 사용하려면 다음을 시도하십시오.
안녕하세요 !
올바른 경로에서 pzhl을 푸시합니다.
동일한 유형의 N 외부 변수가 제공됩니다. 코드를 복잡하게 하지 않고 최대값을 선택하는 방법 - MathMax는 최대 2개의 값을 반환합니다. 있는 경우 20 ?
또는 이 데이터에서 배열을 만드는 방법, ArrayMaximum을 적용 하는 방법은 무엇입니까?
extern int A = 10;
extern int .......;
extern int N = 1253;
미리 감사합니다!
https://docs.mql4.com/en/array/ArrayMaximum
int ArrayMaximum( 이중 배열[], int count=WHOLE_ARRAY, int start=0)최대값을 가진 요소를 검색합니다. 이 함수는 배열에서 최대 요소의 위치를 반환합니다.
옵션:
array[] - 검색할 숫자 배열입니다.
count - 검색할 요소의 수입니다.
start - 검색할 시작 인덱스입니다.
이중 num_array[15]={4,1,6,3,9,4,1,6,3,9,4,1,6,3,9};
int maxValueIdx=ArrayMaximum(num_array);
Print("최대값 = ", num_array[maxValueIdx]);
하지만, 형태로
int Max [N] = {A,.....,N};
배열이 생성되지 않습니다.
여기서: A,.......N - 동일한 유형의 지정된 변수. 변수 수 = N
외부 변수(스크립트)에서 문자열 배열을 만드는 예:
외부 변수(스크립트)에서 문자열 배열을 만드는 예:
고맙습니다 !
작동했지만 수정 사항으로: 대신
int init(){sym[1]=sym1;............
그렇게 하다
int init(){sym[0]=sym1;.......
그런 다음 모든 요소가 고려됩니다.
방해해서 죄송합니다
루프 및 그리기에 대해 topBuffer[i]를 사용하려면 다음을 시도하십시오.