[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 309

 

도와주세요, 제발!

코드가 네 줄 모두에 대해 동일하지만 MA의 두 줄만 표시됩니다. 문제가 무엇입니까?

#property indicator_separate_window // 표시기. 별도의 창에 그려진
#property indicator_buffers 4 // 버퍼 수
#property indicator_color1 Blue // 첫 번째 줄의 색상
#property indicator_color2 Red // 두 번째 라인 색상
#property indicator_color3 올리브
#property indicator_color4 청록


이중 Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // 배열 선언(지시자 버퍼용)
//------------------------------------------------ --------------------
int init() // 특수 함수 init()
{
SetIndexBuffer(0,Buf_MA40); // 버퍼에 배열 할당
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2); // 선 스타일
SetIndexBuffer(1,Buf_MA20); // 버퍼에 배열 할당
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2); // 선 스타일
SetIndexBuffer(3,Buf_ROC_MA40); // 버퍼에 배열 할당
SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2); // 선 스타일
SetIndexBuffer(4,Buf_ROC_MA40); // 버퍼에 배열 할당
SetIndexStyle(4,DRAW_LINE,STYLE_SOLID,2); // 선 스타일
반품; // 사양을 종료합니다. 함수 초기화()
}
//------------------------------------------------ --------------------
int start() // 특수 함수 start()
{
int i, // 막대 인덱스
기록=3000,
counted_bars; // 계산된 막대의 수
더블 ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//------------------------------------------------ --------------------
// Counted_bars=IndicatorCounted(); // 계산된 막대의 수
i=바;//-Counted_bars-1; // 카운트되지 않은 첫 번째 인덱스
while(i>=0) // 셀 수 없는 막대를 반복합니다.
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
경고("ma20=",ma20, "ma20_s=",ma20_s," ma40_s=",ma40_s," ma40=",ma40);
MA40_s[i]=ma40_s;
MA40[i]=ma40;
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40;
Buf_MA20[i]=ma20;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
나--;
// 다음 막대의 인덱스 계산
}
//------------------------------------------------ --------------------
반품; // 사양을 종료합니다. 시작() 함수
}

 

1. 디버거인 plz를 추천합니다(변수의 중간 값을 볼 수 있도록 단계별 디버깅을 사용하는 것이 좋습니다).

2. 디버깅 데이터를 어떻게 표시하고 어디에(어느 창에서) 표시할 수 있습니까? 그렇지 않으면 경고를 사용하는 것이 불편합니다.

3.MQL 버전은 어떻게 업데이트하나요?

 

제발 내게 말해줘!

고문이 유럽 세션에서만 거래하도록 하는 방법은 무엇입니까?

 
VNG писал(а) >>

도와주세요, 제발!

코드가 네 줄 모두에 대해 동일하지만 MA의 두 줄만 표시됩니다. 문제가 무엇입니까?

 int init ( ) // Специальная функция init()
{
SetIndexBuffer ( 0 , Buf_MA40 ) ; // Назначение массива буферу
SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 2 ) ; // Стиль линии
SetIndexBuffer ( 1 , Buf_MA20 ) ; // Назначение массива буферу
SetIndexStyle ( 1 , DRAW_LINE , STYLE_SOLID , 2 ) ; // Стиль линии
SetIndexBuffer ( 2 , Buf_ROC_MA40 ) ; // Назначение массива буферу
SetIndexStyle ( 2 , DRAW_LINE , STYLE_SOLID , 2 ) ; // Стиль линии
SetIndexBuffer ( 3 , Buf_ROC_MA40 ) ; // Назначение массива буферу
SetIndexStyle ( 3 , DRAW_LINE , STYLE_SOLID , 2 ) ; // Стиль линии
return ; // Выход из спец. ф-ии init()
}

한 가지 실수를 발견했습니다. 버퍼 1 바로 다음에 버퍼 3이 옵니다. 버퍼 2는 건너뛰었습니다.

한 창에 눈금과 눈금의 차이를 표시하는 것은 가치가 없습니다. 그들의 값은 10배 이상 다릅니다.

 
KoDi писал(а) >>

제발 내게 말해줘!

고문이 유럽 세션에서만 거래하도록 하는 방법은 무엇입니까?

모듈 시작 부분에 시작

if(Hour()<7 || Hour()>15)return(0);

 

코드를 다시 살펴보십시오. 새로 얻은 값은 완전히 다른 척도를 갖습니다.

여전히 아무것도 출력되지 않습니다.

#property indicator_separate_window // 표시기. 별도의 창에 그려진
#property indicator_buffers 2 // 버퍼 수
#property indicator_color1 Blue // 첫 번째 줄의 색상
#property indicator_color2 Red // 두 번째 라인 색상
//#속성 indicator_color3 올리브
//#property indicator_color4 청록색


이중 Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // 배열 선언(지시자 버퍼용)
//------------------------------------------------ --------------------
int init() // 특수 함수 init()
{
//SetIndexBuffer(0,Buf_MA40); // 버퍼에 배열 할당
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//선 스타일
//SetIndexBuffer(1,Buf_MA20); // 버퍼에 배열 할당
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//선 스타일
SetIndexBuffer(0,Buf_ROC_MA40); // 버퍼에 배열 할당
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2); // 선 스타일
SetIndexBuffer(1,Buf_ROC_MA20); // 버퍼에 배열 할당
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2); // 선 스타일
반품; // 사양을 종료합니다. 함수 초기화()
}
//------------------------------------------------ --------------------
int start() // 특수 함수 start()
{
int i, // 막대 인덱스
기록=3000,
counted_bars; // 계산된 막대의 수
더블 ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//------------------------------------------------ --------------------
// Counted_bars=IndicatorCounted(); // 계산된 막대의 수
i=바;//-Counted_bars-1; // 카운트되지 않은 첫 번째 인덱스
while(i>=0) // 셀 수 없는 막대를 반복합니다.
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
MA40_s[i]=ma40_s;
MA40[i]=ma40;
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40;
Buf_MA20[i]=ma20;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
나--;
// 다음 막대의 인덱스 계산
}
//------------------------------------------------ --------------------
반품; // 사양을 종료합니다. 시작() 함수
}

 
VNG писал(а) >>

코드를 다시 살펴보십시오. 새로 얻은 값은 완전히 다른 척도를 갖습니다.

여전히 아무것도 출력되지 않습니다.

#property indicator_separate_window // 표시기. 별도의 창에 그려진
#property indicator_buffers 2 // 버퍼 수
#property indicator_color1 Blue // 첫 번째 줄의 색상
#property indicator_color2 Red // 두 번째 라인 색상
//#속성 indicator_color3 올리브
//#property indicator_color4 청록색


이중 Buf_ROC_MA40[],Buf_ROC_MA20[],Buf_MA40[],Buf_MA20[]; // 배열 선언(지시자 버퍼용)
//------------------------------------------------ --------------------
int init() // 특수 함수 init()
{
//SetIndexBuffer(0,Buf_MA40); // 버퍼에 배열 할당
//SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);//선 스타일
//SetIndexBuffer(1,Buf_MA20); // 버퍼에 배열 할당
//SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);//선 스타일
SetIndexBuffer(0,Buf_ROC_MA40); // 버퍼에 배열 할당
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2); // 선 스타일
SetIndexBuffer(1,Buf_ROC_MA20); // 버퍼에 배열 할당
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2); // 선 스타일
반품; // 사양을 종료합니다. 함수 초기화()
}
//------------------------------------------------ --------------------
int start() // 특수 함수 start()
{
int i, // 막대 인덱스
기록=3000,
counted_bars; // 계산된 막대의 수
더블 ma20,ma40,MA40[],MA20[],MA40_s[],MA20_s[],ma40_s,ma20_s,ROC_MA40[],ROC_MA20[];
//------------------------------------------------ --------------------
// Counted_bars=IndicatorCounted(); // 계산된 막대의 수
i=바;//-Counted_bars-1; // 카운트되지 않은 첫 번째 인덱스
while(i>=0) // 셀 수 없는 막대를 반복합니다.
{
ma20=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i);
ma20_s=iMA("EURUSD",PERIOD_M1,20,0,MODE_SMA,PRICE_CLOSE,i+20);
ma40=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i);
ma40_s=iMA("EURUSD",PERIOD_M1,40,0,MODE_SMA,PRICE_CLOSE,i+40);
MA40_s[i]=ma40_s;
MA40[i]=ma40;
MA20[i]=ma20;
MA20_s[i]=ma20_s;
Buf_MA40[i]=ma40;
Buf_MA20[i]=ma20;
ROC_MA40[i]=MA40[i]-MA40_s[i];
Buf_ROC_MA40[i]=ROC_MA40[i];
ROC_MA20[i]=MA20[i]-MA20_s[i];
Buf_ROC_MA20[i]=ROC_MA20[i];
나--;
// 다음 막대의 인덱스 계산
}
//------------------------------------------------ --------------------
반품; // 사양을 종료합니다. 시작() 함수
}

실수가 너무 많습니다.

기본적으로 배열 작업의 버그입니다.

파일:
proba.mq4  2 kb
 

이 문제를 해결하는 데 도움이 됩니다. 구매/판매 신호가 나타나고 고문이 거래를 시작하고 이익을 설정하고 중지합니다. 그리고 이제 거래가 같은 양초의 정지로 마감되면 고문은 거래를 다시 열지 만 열지 않아야합니다. 하나의 신호에서 하나의 거래가 열렸습니다.

그것을 하는 방법?

 
KoDi >> :

그것을 하는 방법?

마지막 주문의 마감 시간은 현재 바의 시작 시간보다 작아야 합니다.

그렇지 않은 경우 거래를 열지 않습니다.

 
TheXpert >> :

마지막 주문의 마감 시간은 현재 바의 시작 시간보다 작아야 합니다.

그렇지 않은 경우 거래를 열지 않습니다.

나는 혼란스러워졌다.

그렇다면 그는 적어도 하나의 거래가 이루어질 때까지 입력하지 않는다는 조건으로 작성하면 어떻게 FIRST 거래를 열 수 있습니까 ??