코딩 도움말 - 페이지 287

 
airquest:
안녕하세요, 버퍼에서 확률론의 메인 라인의 x 기간 동안 가장 높은 값과 가장 낮은 값을 추출하려고합니다. 값으로 배열을 만들어야 한다는 글을 읽었지만 작동하지 않습니다. 지금까지 나는이 코드에 붙어 있습니다. 내가 옳은 일을하고 있습니까? 누군가가 나를 도울 수 있습니까? 정말 감사합니다. 문안 인사.

double num_array[1]={iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,CustomPeriod)};

int gmax=ArrayMaximum(num_array[1],WHOLE_ARRAY,0);

int gmin=ArrayMinimum(num_array[1],WHOLE_ARRAY,0);

MinBuffer=gmin;

MaxBuffer=gmax;

괜찮아, 답을 찾았어... iStochastic을 버퍼링하고 ArraySetAsSeries로 값을 시리즈로 설정한 다음 시리즈의 ArrayMaximum .

 
airquest:
괜찮아, 답을 찾았어... iStochastic을 버퍼링하고 ArraySetAsSeries로 값을 시리즈로 설정한 다음 시리즈의 ArrayMaximum .

바꾸다

ArrayMaximum(num_array[1], WHOLE_ARRAY , 0);

ArrayMinimum(num_array[1],WHOLE_ARRAY,0);

~와 함께

최대 배열(num_array,WHOLE_ARRAY,0);

ArrayMinimum(num_array,WHOLE_ARRAY,0);

 
zigflip:
죄송합니다. 이미 dojh 정확한 것을 사용하면서 그것들을 섞었습니다! 모든 것을 바꾸는 어리석은 메타 따옴표

당신은 그러한 경험을 한 유일한 사람이 아닙니다.

이것은 사용자 친화적이지 않습니다.

 

안녕하세요 코더앤크래커입니다.

닫기 표시기(첨부)에서 지그재그 수정에 대한 전문 지식이 필요합니다.

대신 열기에 지그재그가 필요합니다(동일한 기본 설정). 새 양초가 열렸을 때 알림을 받는 것이 좋습니다(가능한 경우).

많은 감사, 감사합니다!

파일:
 
razo:
안녕하세요 코더앤크래커입니다.

닫기 표시기(첨부)에서 지그재그 수정에 대한 전문 지식이 필요합니다.

대신 열기에 지그재그가 필요합니다(동일한 기본 설정). 새 양초가 열렸을 때 알림을 받는 것이 좋습니다(가능한 경우).

많은 감사, 감사합니다!

안녕하세요 라조입니다. 지그재그 오픈입니다.

파일:
 

안녕하세요 구루 여러분,

다음 표시기가 첨부된 iCustom에 문제가 있습니다... #VQ 막대.

누군가 다음 버퍼의 값을 추출하는 방법을 보여주세요....DIR[]

다음 코드를 사용하여 버퍼를 추출합니다... 하지만 아무 값도 반환하지 않습니다....

더블 dir=iCustom(NULL,PERIOD_M1,"#VQ 막대",4,0);

누군가 이 문제를 조사해 주시겠습니까...

귀하의 도움과 조수를 높이 평가합니다 .....

#property indicator_chart_window

#속성 표시기_버퍼 2

#property indicator_color1 녹색

#property indicator_color2 빨간색

#속성 표시기_너비1 2

#속성 표시기_너비2 2

외부 정수 길이 = 5;

extern int 메서드 = 3;

extern int 평활화 = 1;

외부 정수 필터 = 5;

extern bool 계속 = false;

이중 VQ[];

이중 SumVQ[];

이중 DIR[];

이중 UpBuffer[];

이중 DnBuffer[];

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

정수 초기화()

{

표시 버퍼(5);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(0,UpBuffer);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,DnBuffer);

SetIndexBuffer(2,SumVQ);

SetIndexBuffer(3,VQ);

SetIndexBuffer(4,DIR);

if (길이 < 2) 길이 = 2;

if (메소드 < 0) 메서드 = 0;

if (메소드 > 3) 메서드 = 3;

if (스무딩 < 0) 스무딩 = 0;

if (필터 < 0) 필터 = 0;

문자열 short_name = "VQ | "+ 길이 + " , " +

방법 + " , " + 스무딩 + " , " + 필터 + " | ";

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0.0);

SetIndexEmptyValue(2, 0.0);

SetIndexEmptyValue(3, 0.0);

리턴(0);

}

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

정수 시작()

{

이중 MH = 0, ML = 0, MO = 0, MC = 0, MC1 = 0;

정수 i, j, 제한, counted_bars=IndicatorCounted();

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

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

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

if(counted_bars>0) counted_bars--;

//----

if(counted_bars<1) i=바 길이-1;

else i=바 개수 계산된 바;

if(counted_bars<1)

{

j=바 길이-1;

SumVQ[j + 1] = 닫기[j + 1];

}

동안 (나는 >= 0)

{

MH = iMA(NULL,0,길이,0,방법,PRICE_HIGH,i);

ML = iMA(NULL,0,길이,0,방법,PRICE_LOW,i);

MO = iMA(NULL,0,길이,0,방법,PRICE_OPEN,i);

MC = iMA(NULL,0,길이,0,메서드,PRICE_CLOSE,i);

MC1 = iMA(NULL,0,길이,0,방법,PRICE_CLOSE,i+스무딩);

if (계속==true)

{

MC=iMA(NULL,0,길이,0,메서드,PRICE_MEDIAN,i);

MC1=iMA(NULL,0,길이,0,방법,PRICE_MEDIAN,i+스무딩);

}

if((MH - ML)>0)

VQ = MathAbs(((MC - MC1) / MathMax(MH - ML, MathMax(MH - MC1, MC1 - ML)) + (MC - MO) / (MH - ML)) * 0.5) * ((MC - MC1 + (MC-MO)) * 0.5);

SumVQ = SumVQ + VQ;

if (필터 > 0)

if (MathAbs(SumVQ - SumVQ) < 필터 * 포인트)

합VQ = 합VQ;

나--;

}

if(counted_bars<1)

limit=바-길이-1;

else limit=바 개수 계산된_바;

(i = 한계-1, 나는 >= 0, 나는--)

{

if (SumVQ > SumVQ) DIR = 1;

if (SumVQ < SumVQ) DIR = -1;

if (SumVQ== SumVQ) DIR = DIR;

만약 (디렉터리 > 0)

{

UpBuffer = 높음;

DnBuffer = 낮음;

}

또 다른

만약 (디렉터리 < 0)

{

DnBuffer = 높음;

UpBuffer = 낮음;

}

}

리턴(0);

}

 
12BPRO:
안녕하세요 구루 여러분,

다음 표시기가 첨부된 iCustom에 문제가 있습니다... #VQ 막대.

누군가 다음 버퍼의 값을 추출하는 방법을 보여주세요....DIR[]

다음 코드를 사용하여 버퍼를 추출합니다... 하지만 아무 값도 반환하지 않습니다....

더블 디렉토리=iCustom(NULL,PERIOD_M1,"#VQ 막대",4,0);

누군가 이 문제를 조사해 주시겠습니까...

귀하의 도움과 조수를 높이 평가합니다 .....

모든 것이 괜찮은 것 같습니다

#vq 막대와 해당 값을 사용하는 테스트 표시기를 첨부하고 올바른 값을 표시합니다.

vq_bars.mq4

_test_vq.mq4

파일:
vq_bars.mq4  3 kb
_test_vq.mq4  1 kb
 
mladen:
모든 것이 정상인 것 같습니다. #vq 막대와 해당 값을 사용하는 테스트 표시기를 연결하면 올바른 값이 표시됩니다.

vq_bars.mq4

_test_vq.mq4

와... 감사합니다 MLADEN님....

가장 이상한 일이 발생했습니다 ... 그 코드가 내 표시기에서 작동하지 않습니다 ... 오류 로그를 열 수 없습니다 ....

하지만 #VQ 바에서 테스트했는데 잘 작동합니다....

그걸로 몇시간을 허비했다....

내가 무슨 말을 해야 할까요.... 당신에게 빚을 졌습니다.... 선생님.... 저를 위해 이 일을 해결해 주셔서.....

이것은 나의 #VQ . . . . . . .

그것은 가치가 있지만 EA에서 iCustom을 호출하면 가치가 없습니다.

파일:
gbpjpy_test.jpg  123 kb
my_vq.jpg  48 kb
 

친애하는 MLADEN 경,

내 #VQ.... 표시기를 조사해 주시겠습니까... 사용하지 않는 몇 줄을 삭제했습니다.... 그리고 몇 가지 경고를 추가했습니다....

그것이 iCustom을 통해 EA의 버퍼를 호출할 수 없는 문제의 원인입니다....

다시 한 번 귀하의 도움에 감사드립니다.....

당신의 진정한

아즈룰.......

#속성 표시기_차트_창

#속성 표시기_버퍼 2

#property indicator_color1 녹색

#property indicator_color2 빨간색

#속성 표시기_너비1 2

#속성 표시기_너비2 2

외부 정수 길이 = 5;

extern int 메서드 = 3;

extern int 평활화 = 1;

외부 이중 필터 = 0.5;

extern bool 계속 = False;

extern string SoundGp = "news.wav";

extern string SoundEur = "news.wav";

extern bool PopupAlert = true;

외부 부울 SendPushNotification = 거짓;

extern bool SoundAlert = True;

int lastAlert=3;

이중 VQ[];

이중 SumVQ[];

이중 DIR[];

이중 UpBuffer[];

이중 DnBuffer[];

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

정수 초기화()

{

표시 버퍼(5);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(0,UpBuffer);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,DnBuffer);

SetIndexBuffer(2,SumVQ);

SetIndexBuffer(3,VQ);

SetIndexBuffer(4,DIR);

if (길이 < 2) 길이 = 2;

if (메소드 < 0) 메서드 = 0;

if (메소드 > 3) 메서드 = 3;

if (스무딩 < 0) 스무딩 = 0;

if (필터 < 0) 필터 = 0;

문자열 short_name = "VQ | "+ 길이 + " , " +

방법 + " , " + 스무딩 + " , " + 필터 + " | ";

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0.0);

SetIndexEmptyValue(2, 0.0);

SetIndexEmptyValue(3, 0.0);

리턴(0);

}

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

정수 시작()

{

정수 i, 제한, counted_bars=IndicatorCounted();

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

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

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

if(counted_bars>0) counted_bars--;

//----

if(counted_bars<1) i=바 길이;

else i=바 개수 계산된 바;

if(counted_bars<1)

동안 (나는 >= 0)

{

VQ = iCustom(NULL,0,"#꽃가루 인디",0,i+1);

SumVQ= iCustom(NULL,0,"#꽃가루 인디",1,i+1);

//if (필터 > 0)

//if (MathAbs(VQ - SumVQ) < 필터)

//VQ = 합VQ;

나--;

}

if(counted_bars<1)

limit=바-길이-1;

else limit=바 개수 계산된_바;

(i = 한계-1, 나는 >= 0, 나는--)

{

//if (VQ > SumVQ) DIR = 1;

if ((VQ+VQ) > (SumVQ+SumVQ))

디렉토리 = 1;

if ((VQ+VQ) < (SumVQ+SumVQ))

디렉토리 = -1;

if ((VQ+VQ) == (SumVQ+SumVQ))

DIR = DIR;

만약 (디렉터리 > 0)

{

UpBuffer = 높음;

DnBuffer = 낮음;

}

또 다른

만약 (디렉터리 < 0)

{

DnBuffer = 높음;

UpBuffer = 낮음;

}

if ((DIR > 0) && (DIR > 0))

{

CheckForAlerts(OP_BUY);//ALERT BUY

}

if ((DIR < 0) && (DIR < 0))

{

CheckForAlerts(OP_SELL);//경보 판매

}

}

이중 vq1=iCustom(NULL,0,"#꽃가루 인디",0,i+1);

이중 svq1=iCustom(NULL,0,"#꽃가루 인디",1,i+1);

이중 vq2=iCustom(NULL,0,"#꽃가루 인디",0,i+2);

이중 svq2=iCustom(NULL,0,"#꽃가루 인디",1,i+2);

이중 vq3=iCustom(NULL,0,"#꽃가루 인디",0,i+3);

이중 svq3=iCustom(NULL,0,"#꽃가루 인디",1,i+3);

이중 디렉토리1=DIR;

이중 dir2=DIR;

이중 dir3=DIR;

이중 vq0= (vq1 + vq2);

이중 svq0= (svq1 + svq2);

문자열 VQ0_Teks=DoubleToStr(vq0,6);

문자열 VQS0_Teks=DoubleToStr(svq0,6);

문자열 VQ1_Teks=DoubleToStr(vq1,6);

문자열 VQS1_Teks=DoubleToStr(svq1,6);

문자열 VQ2_Teks=DoubleToStr(vq2,6);

문자열 VQS2_Teks=DoubleToStr(svq2,6);

문자열 VQ3_Teks=DoubleToStr(vq3,6);

문자열 VQS3_Teks=DoubleToStr(svq3,6);

문자열 dir1_Teks=DoubleToStr(dir1,6);

문자열 dir2_Teks=DoubleToStr(dir2,6);

문자열 dir3_Teks=DoubleToStr(dir3,6);

문자열 h =

" 파란색" + " " + VQ0_Teks+ " " + " 빨간색" + " " + VQS0_Teks + "\n" +

" 파란색" + " " + VQ1_Teks+ " " + " 빨간색" + " " + VQS1_Teks + "\n" +

" 파란색" + " " + VQ2_Teks+ " " + " 빨간색" + " " + VQS2_Teks + "\n" +

" 파란색" + " " + VQ3_Teks+ " " + " 빨간색" + " " + VQS3_Teks + "\n" + "\n" +

" DIR1" + " " + dir1_Teks+" " + "DIR2" + " " + dir2_Teks + " " +"DIR3" + " " + dir3_Teks;

코멘트(h);

리턴(0);

}

//------------------------------------------------ --------------

무효 CheckForAlerts(int 유형)

{

//경고:

정적 날짜/시간 lastAlertTime=0;

if (lastAlertTime != iTime(NULL,0,0)) {

if (유형==OP_BUY && lastAlert!=2) { //구매

doAlerts("폴란 막대 UP "+Symbol()+" (tf:"+Period()+")",SoundEur);

마지막 경고 = 2;

lastAlertTime=iTime(NULL,0,0);

}

if (유형==OP_SELL && lastAlert!=1) { //판매

doAlerts("폴란 막대 DOWN "+Symbol()+" (tf:"+Period()+")",SoundGp);

마지막 경고 = 1;

lastAlertTime=iTime(NULL,0,0);

}

}//if (lastAlertTime != iTime(NULL,0,0) {

// 경고 종료

}

//------------------------------------------------ --------------

무효 doAlerts(문자열 sMsg,문자열 SoundFile) {

if (PopupAlert) 경고(sMsg);

if(SoundAlert) PlaySound(사운드파일);

if(SendPushNotification) SendNotification (sMsg);

}

감사해요........

 
12BPRO:
친애하는 MLADEN 경,

내 #VQ.... 표시기를 조사해 주시겠습니까... 사용하지 않는 몇 줄을 삭제했습니다.... 그리고 몇 가지 경고를 추가했습니다....

그것이 iCustom을 통해 EA의 버퍼를 호출할 수 없는 문제의 원인입니다....

다시 한 번 귀하의 도움에 감사드립니다.....

당신의 진정한

아즈룰.......

#속성 표시기_차트_창

#속성 표시기_버퍼 2

#property indicator_color1 녹색

#property indicator_color2 빨간색

#속성 표시기_너비1 2

#속성 표시기_너비2 2

외부 정수 길이 = 5;

extern int 메서드 = 3;

extern int 평활화 = 1;

외부 이중 필터 = 0.5;

extern bool 계속 = False;

extern string SoundGp = "news.wav";

extern string SoundEur = "news.wav";

extern bool PopupAlert = true;

외부 부울 SendPushNotification = 거짓;

extern bool SoundAlert = True;

int lastAlert=3;

이중 VQ[];

이중 SumVQ[];

이중 DIR[];

이중 UpBuffer[];

이중 DnBuffer[];

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

정수 초기화()

{

표시 버퍼(5);

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexBuffer(0,UpBuffer);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,DnBuffer);

SetIndexBuffer(2,SumVQ);

SetIndexBuffer(3,VQ);

SetIndexBuffer(4,DIR);

if (길이 < 2) 길이 = 2;

if (메소드 < 0) 메서드 = 0;

if (메소드 > 3) 메서드 = 3;

if (스무딩 < 0) 스무딩 = 0;

if (필터 < 0) 필터 = 0;

문자열 short_name = "VQ | "+ 길이 + " , " +

방법 + " , " + 스무딩 + " , " + 필터 + " | ";

IndicatorShortName(short_name);

SetIndexEmptyValue(0, 0.0);

SetIndexEmptyValue(1, 0.0);

SetIndexEmptyValue(2, 0.0);

SetIndexEmptyValue(3, 0.0);

리턴(0);

}

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

정수 시작()

{

정수 i, 제한, counted_bars=IndicatorCounted();

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

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

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

if(counted_bars>0) counted_bars--;

//----

if(counted_bars<1) i=바 길이;

else i=바 개수 계산된 바;

if(counted_bars<1)

동안 (나는 >= 0)

{

VQ = iCustom(NULL,0,"#꽃가루 인디",0,i+1);

SumVQ= iCustom(NULL,0,"#꽃가루 인디",1,i+1);

//if (필터 > 0)

//if (MathAbs(VQ - SumVQ) < 필터)

//VQ = 합VQ;

나--;

}

if(counted_bars<1)

limit=바-길이-1;

else limit=바 개수 계산된_바;

(i = 한계-1, 나는 >= 0, 나는--)

{

//if (VQ > SumVQ) DIR = 1;

if ((VQ+VQ) > (SumVQ+SumVQ))

디렉토리 = 1;

if ((VQ+VQ) < (SumVQ+SumVQ))

디렉토리 = -1;

if ((VQ+VQ) == (SumVQ+SumVQ))

DIR = DIR;

만약 (디렉터리 > 0)

{

UpBuffer = 높음;

DnBuffer = 낮음;

}

또 다른

만약 (디렉터리 < 0)

{

DnBuffer = 높음;

UpBuffer = 낮음;

}

if ((DIR > 0) && (DIR > 0))

{

CheckForAlerts(OP_BUY);//ALERT BUY

}

if ((DIR < 0) && (DIR < 0))

{

CheckForAlerts(OP_SELL);//경보 판매

}

}

이중 vq1=iCustom(NULL,0,"#꽃가루 인디",0,i+1);

이중 svq1=iCustom(NULL,0,"#꽃가루 인디",1,i+1);

이중 vq2=iCustom(NULL,0,"#꽃가루 인디",0,i+2);

이중 svq2=iCustom(NULL,0,"#꽃가루 인디",1,i+2);

이중 vq3=iCustom(NULL,0,"#꽃가루 인디",0,i+3);

이중 svq3=iCustom(NULL,0,"#꽃가루 인디",1,i+3);

이중 디렉토리1=DIR;

이중 dir2=DIR;

이중 dir3=DIR;

이중 vq0= (vq1 + vq2);

이중 svq0= (svq1 + svq2);

문자열 VQ0_Teks=DoubleToStr(vq0,6);

문자열 VQS0_Teks=DoubleToStr(svq0,6);

문자열 VQ1_Teks=DoubleToStr(vq1,6);

문자열 VQS1_Teks=DoubleToStr(svq1,6);

문자열 VQ2_Teks=DoubleToStr(vq2,6);

문자열 VQS2_Teks=DoubleToStr(svq2,6);

문자열 VQ3_Teks=DoubleToStr(vq3,6);

문자열 VQS3_Teks=DoubleToStr(svq3,6);

문자열 dir1_Teks=DoubleToStr(dir1,6);

문자열 dir2_Teks=DoubleToStr(dir2,6);

문자열 dir3_Teks=DoubleToStr(dir3,6);

문자열 h =

" 파란색" + " " + VQ0_Teks+ " " + " 빨간색" + " " + VQS0_Teks + "\n" +

" 파란색" + " " + VQ1_Teks+ " " + " 빨간색" + " " + VQS1_Teks + "\n" +

" 파란색" + " " + VQ2_Teks+ " " + " 빨간색" + " " + VQS2_Teks + "\n" +

" 파란색" + " " + VQ3_Teks+ " " + " 빨간색" + " " + VQS3_Teks + "\n" + "\n" +

" DIR1" + " " + dir1_Teks+" " + "DIR2" + " " + dir2_Teks + " " +"DIR3" + " " + dir3_Teks;

코멘트(h);

리턴(0);

}

//------------------------------------------------ --------------

무효 CheckForAlerts(int 유형)

{

//경고:

정적 날짜/시간 lastAlertTime=0;

if (lastAlertTime != iTime(NULL,0,0)) {

if (유형==OP_BUY && lastAlert!=2) { //구매

doAlerts("폴란 막대 UP "+Symbol()+" (tf:"+Period()+")",SoundEur);

마지막 경고 = 2;

lastAlertTime=iTime(NULL,0,0);

}

if (유형==OP_SELL && lastAlert!=1) { //판매

doAlerts("폴란 막대 DOWN "+Symbol()+" (tf:"+Period()+")",SoundGp);

마지막 경고 = 1;

lastAlertTime=iTime(NULL,0,0);

}

}//if (lastAlertTime != iTime(NULL,0,0) {

// 경고 종료

}

//------------------------------------------------ --------------

무효 doAlerts(문자열 sMsg,문자열 SoundFile) {

if (PopupAlert) 경고(sMsg);

if(SoundAlert) PlaySound(사운드파일);

if(SendPushNotification) SendNotification(sMsg);

}

감사해요........

"#꽃가루 인디"를 사용하도록 변경했습니다.

나는 그 표시기가 무엇을 하는지 전혀 모릅니다(나머지 "꽃가루" 표시기와 같다면 다시 칠해져서 문제를 일으킬 수 있지만 지금 추측 게임을 하는 것뿐입니다)