코딩 도움말 - 페이지 288

 

안녕,

먼저 이것이 잘못된 위치에 있다면 사과드립니다. 제가 보고 있는 중심점이지만 제 Q는 코딩과 관련되어 있습니다. MTF에도 넣을 수 있었지만 이것이 시작하기에 가장 좋은 곳이라고 생각했습니다.

MT4에는 매일, 매주, 매월 = W1, D1, MN1이 있습니다.

그러나 연도 함수 또는 분기 함수가 있습니다.

예를 들어 첨부된 피벗 표시기에서 1년을 얻는 방법은 무엇이며 롤링 12개월 또는 고정 이전 연도 2013년 예입니까(또는 선택할 수 있습니까). 분기별 피벗을 계산하는 방법도 마찬가지입니다.

모든 지침을 주시면 감사하겠습니다. 첨부된 월별 피벗 인디입니다. 첨부 파일을 수정할 수 있다고 합리적으로 확신하지만 분기 또는 연도를 출력하기 위해 데이터를 가져오는 방법을 모르겠습니다.

allpivots_monthly.mq4

많은 감사

케빈

파일:
 
mladen:
"#pollan indy"를 사용하도록 변경했습니다. 그 표시기가 무엇을 하는지 모르겠습니다(나머지 "pollan" 표시기와 같다면 다시 칠해져서 문제를 일으킬 수 있지만 지금 추측 게임을 하는 것뿐입니다)

친애하는 MLADEN 경...

이(#pollan indy)를 가지고 있는 다른 표시기로 대체할 수 있습니까? #VQ 막대를 호출할 수 있습니다.... 시도해 보십시오. 첨부된 표시기 버퍼에 대한 판독값이 있기 때문입니다. 사진 ... 하지만 이 '#꽃가루 인디'를 추가로 테스트하기 위해 내 EA에서 iCustom을 통해 호출할 수 없었습니다...

곧 다시 여기 있기를 바랍니다... 감사합니다.

당신의 진정한

아즈룰

파일:
my_vq.jpg  48 kb
 
12BPRO:
친애하는 MLADEN 경...

이(#pollan indy)를 가지고 있는 다른 표시기로 대체할 수 있습니까? #VQ 막대를 호출할 수 있습니다.... 시도해 보십시오. 첨부된 표시기 버퍼에 대한 판독값이 있기 때문입니다. 사진... 하지만 이 '#꽃가루 인디'를 더 테스트하기 위해 내 EA에서 iCustom을 통해 호출할 수 없었습니다...

곧 다시 여기 있기를 바랍니다... 감사합니다.

당신의 진정한

아즈룰

#VQ를 #VQ로 바꿀 필요가 없습니다(이미 변동성 품질을 계산 중입니다).

일반 #VQ에서 제대로 작동하는 경우 유일한 논리적 결론은 "#pollan indy"에 문제가 있다는 것입니다.

 

코딩 도움말

모두 좋은 아침

안녕하세요 mladen

첫 번째 코드를 만들려고 합니다.

내 언어에는 수동 MT4가 없기 때문에 다른 코드에서 배우십시오.

내 코드를 비웃지 않기를 기도합니다.

작동하도록 도와주세요.

Doji의 생성을 표시하는 간단한 지표입니다.

도움을 청합니다.

미리 감사드립니다.

친애하는.

허모.

PD. 잘 컴파일되지만 작동하지 않습니다.

파일:
 
Hermo:
모두 좋은 아침

안녕하세요 mladen

첫 번째 코드를 만들려고 합니다.

내 언어에는 수동 MT4가 없기 때문에 다른 코드에서 배우십시오.

내 코드를 비웃지 않기를 기도합니다.

작동하도록 도와주세요.

Doji의 생성을 표시하는 간단한 지표입니다.

도움을 청합니다.

미리 감사드립니다.

친애하는.

허모.

PD. 잘 컴파일되지만 작동하지 않습니다.

허모

확인 합니다

지금 ECB 기자 회견을 기다리고 있습니다. :) :)

 
12BPRO:
친애하는 MLADEN 경...

그래서 처음에 내 #VQ를 게시하지 않았습니다.... "꽃가루 인디"에 대해 잘못된 것이 있고 예 다시 칠하는 것에 대해 당신이 옳을 수도 있습니다....

나를 위해, 나는 결과가 무엇인지 보기 위해 이 지표를 사용하여 내 이론을 시도하고 싶습니다....

문제는 내 EA에서 표시기 버퍼를 호출할 수 없다는 것입니다... 내 EA에 대한 iCustom 호출을 차단하는 수정된 버전의 내 #VQ 때문일 수 있습니다....

원래 #VQ를 사용하면 잘 작동합니다... 그리고 EA를 실행할 수 있습니다.... 수정된 #VQ(내)를 사용하면 초과할 수 없지만 여전히 이전 스레드에 표시된 값이 있습니다. .

내 MODIFIED #VQ 버전에 문제가 있는 것 같습니다.... 너무 구문 오류일 수 있습니다... 시간이 있으면 살펴보고 제대로 작동하는지 확인하십시오.....

감사합니다 ... 부정적인 입력에 대해 죄송합니다 .....

너의 진짜..

아즈룰

아즈룰

코드를 보지 않고는 "꽃가루 인디"에 무슨 일이 일어나고 있는지 알 수 없습니다.

내가 할 수 있는 일은 추측하는 것뿐이고 코딩에서 추측하는 것은 매우 나쁘다.

모두 제일 좋다

 
mladen:
#VQ를 #VQ로 바꿀 필요가 없습니다. (이미 변동성 품질을 계산 중입니다.) 일반 #VQ와 마찬가지로 작동한다면 "#pollan indy"에 문제가 있다는 것이 논리적 결론뿐입니다.

친애하는 MLADEN 경...

그래서 처음에 내 #VQ를 게시하지 않았습니다.... "꽃가루 인디"에 대해 잘못된 것이 있고 예 다시 칠하는 것에 대해 당신이 옳을 수도 있습니다....

나를 위해, 나는 결과가 무엇인지 보기 위해 이 지표를 사용하여 내 이론을 시도하고 싶습니다....

문제는 내 EA에서 표시기 버퍼 를 호출할 수 없다는 것입니다... 내 EA에 대한 iCustom 호출을 차단하는 수정된 버전의 내 #VQ 때문일 수 있습니다....

원래 #VQ를 사용하면 잘 작동합니다... 그리고 EA를 실행할 수 있습니다.... 수정된 #VQ(내)를 사용하면 초과할 수 없지만 여전히 이전 스레드에 표시된 값이 있습니다. .

내 수정된 #VQ 버전에 문제가 있는 것 같습니다.... 구문 오류가 있을 수 있습니다... 시간이 있으면 살펴보고 제대로 작동하는지 확인하십시오..... 단지 학습 목적을 위한 것입니다 ....

감사합니다... EA는 지금 실행 중이며 결과를 찾는 데 관심이 있다면 테스트 중입니다. 나는 그것을 폴란 스레드에 게시할 것입니다.....

너의 진짜..

아즈룰

 
mladen:
아즈룰

코드를 보지 않고는 "꽃가루 인디"에 무슨 일이 일어나고 있는지 알 수 없습니다.

내가 할 수 있는 일은 추측하는 것뿐이고 코딩에서 추측하는 것은 매우 나쁘다.

모두 제일 좋다

나는 EA를 지금 실행하고 있고 당신이 결과를 찾는 데 관심이 있다면 테스트하고 있습니다. 나는 그것을 폴란 스레드에 게시할 것입니다.....

작동하지 않는 #VQ 버전이었습니다...

감사해요...

너의 진짜..

아즈룰

 

안녕하세요 CODESGURUS입니다.

다중 시간 프레임에 대한 일반적인 질문이 있습니다.... 첨부된 대로

왼쪽의 첫 번째 사진은 5M 시간 프레임의 RSI 표시기입니다...

두 번째는 15M 시간 프레임에서 5M의 RSI 다중 시간 프레임입니다...

문제는 빨간색 원에 표시된 값에 차이가 있는 이유입니다....

누군가 이 RsiMA-MTF 코드를 설명하고 수정해 주십시오........

#property indicator_separate_window

#속성 표시기_버퍼 6

#property indicator_color1 라임

#property indicator_color2 빨간색

#property indicator_color3 아쿠아

#property indicator_color4 노란색

#property indicator_color5 흰색

#property indicator_color6 마젠타색

#속성 표시기_너비1 1

#속성 표시기_너비2 1

#속성 표시기_너비3 1

#속성 표시기_너비4 1

#속성 표시기_너비5 1

#속성 표시기_너비6 1

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

//-----

//외부 문자열 TimeFrames = "M15; M60";

외부 부울 TimeFrame1bool = true;

외부 정수 TimeFrame1 = 0;

extern bool TimeFrame2bool = 거짓;

외부 정수 TimeFrame2 = 0;

extern bool TimeFrame3bool = False;

외부 정수 TimeFrame3 = 0;

//int 마침표[]={1,5,15,30,60,240,1440,43200};

//문자열 periodString[]={"M1","M5","M15","M30","H1","H4","D1",MN1"};

// 지시자 이름을 가진 배열을 하나 더 생성

//문자열 signalNameString[]={"MA"};

int ExtCountedBars=0;

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

정수 TF;

//---- 버퍼

이중 ExtMapBuffer1[];

이중 ExtMapBuffer2[];

이중 ExtMapBuffer3[];

이중 ExtMapBuffer4[];

이중 ExtMapBuffer5[];

이중 ExtMapBuffer6[];

//-------

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

정수 초기화()

{

SetIndexBuffer(0, ExtMapBuffer1);

SetIndexBuffer(1, ExtMapBuffer2);

SetIndexBuffer(2, ExtMapBuffer3);

SetIndexBuffer(3, ExtMapBuffer4);

SetIndexBuffer(4, ExtMapBuffer5);

SetIndexBuffer(5, ExtMapBuffer6);

//-----

SetIndexStyle(0, DRAW_LINE);

SetIndexStyle(1, DRAW_LINE);

SetIndexStyle(2, DRAW_LINE);

SetIndexStyle(3, DRAW_LINE);

SetIndexStyle(4, DRAW_LINE);

SetIndexStyle(5, DRAW_LINE);

// SetIndexStyle(0,DRAW_LINE,EMPTY,1);

// SetIndexBuffer(0,ExtMapBuffer1);

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

정수 M1 = PERIOD_M1;

정수 M5 = PERIOD_M5;

정수 M15 = PERIOD_M15;

정수 M30 = PERIOD_M30;

정수 H1 = PERIOD_H1;

정수 H4 = PERIOD_H4;

정수 D1 = PERIOD_D1;

정수 WK1 = PERIOD_W1;

정수 MN1 = PERIOD_M1;

TF=기간();

if (TF==PERIOD_M1) { TimeFrame1 = M1; 타임프레임2 = M1; TimeFrame3 = M1;}

else if (TF==PERIOD_M5) { TimeFrame1 = M1; 타임프레임2 = M5; TimeFrame3 = M15;}

else if (TF==PERIOD_M15) { TimeFrame1 = M5; TimeFrame2 = M15; TimeFrame3 = H1; }

else if (TF==PERIOD_M30) { TimeFrame1 = M5; TimeFrame2 = M15; TimeFrame3 = H1; }

else if (TF==PERIOD_H1) { TimeFrame1 = M15; 타임프레임2 = H1; TimeFrame3 = H4; }

else if (TF==PERIOD_H4) { TimeFrame1 = H4; 타임프레임2 = H4; 타임프레임3 = D1; }

else if (TF==PERIOD_D1) { TimeFrame1 = H4; 타임프레임2 = D1; TimeFrame3 = WK1;}

else if (TF==PERIOD_W1) { TimeFrame1 = D1; 타임프레임2 = WK1; TimeFrame3 = MN1;}

else if (TF==PERIOD_MN1) { TimeFrame1 = D1; 타임프레임2 = WK1; TimeFrame3 = MN1;}

else { TimeFrame1 = D1; 타임프레임2 = WK1; TimeFrame3 = MN1;}

//-----

리턴(0);

}

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

정수 시작()

{

날짜 시간 TimeArray1[];

날짜 시간 TimeArray2[];

날짜 시간 TimeArray3[];

정수 한계, i,y=0;

// int counted_bars = IndicatorCounted();

ExtCountedBars=IndicatorCounted();

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

if(ExtCountedBars > 0) ExtCountedBars--;

제한 = 막대 - ExtCountedBars;

//-----

ArrayCopySeries(TimeArray1,MODE_TIME,Symbol(),TimeFrame1);

ArrayCopySeries(TimeArray2,MODE_TIME,Symbol(),TimeFrame2);

ArrayCopySeries(TimeArray3,MODE_TIME,Symbol(),TimeFrame3);

for(i=0,y=0;i<limit;i++)

{

if(TimeFrame1bool)

{

if (시간<시간배열1[y]) y++;

{

//ExtMapBuffer1

ExtMapBuffer1 = iCustom(NULL,TimeFrame1, "#RSI-MA",0, y);

ExtMapBuffer2 = iCustom(NULL,TimeFrame1, "#RSI-MA",3, y);

}

}

//-----

if(TimeFrame2bool)

{

if (시간<시간배열2[y]) y++;

{

//ExtMapBuffer1

ExtMapBuffer3 = iCustom(NULL,TimeFrame2, "#RSI-MA",0,y);

ExtMapBuffer4 = iCustom(NULL,TimeFrame2, "#RSI-MA",3,y);

}

}

//-----

if(TimeFrame3bool)

{

if (시간<시간배열3[y]) y++;

{

//ExtMapBuffer1

ExtMapBuffer5 = iCustom(NULL,TimeFrame3, "#RSI-MA",0, y);

ExtMapBuffer6 = iCustom(NULL,TimeFrame3, "#RSI-MA",3, y);

}

}

}

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

//================================================== =======

리턴(0);

}

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

정수 초기화()

{

리턴(0);

}

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

파일:
rsi-mtf_diff.jpg  290 kb
 

이것은 RSI-MA의 사본입니다........

#property indicator_separate_window

#속성 표시기_버퍼 4

#property indicator_color1 라임그린

#property indicator_color2 빨간색

#property indicator_color3 노란색

#property indicator_color4 흰색 ///DarkGray

#속성 표시기_너비1 3

#속성 표시기_너비2 3

#속성 표시기_너비3 3

#속성 표시기_너비4 1

#property indicator_levelcolor 아쿠아

extern string TimeFrame = "현재 시간 프레임";

외부 int RsiOma_Period = 13;

외부 int RsiOma_Price = 0;

외부 int RsiOma_Mode = MODE_LWMA;

외부 정수 MaPeriod = 8;

외부 정수 MaType = MODE_LWMA;

외부 이중 수준Ob = 88;

외부 이중 수준Os = 13;

외부 정수 OB_RSI = 80;

외부 int OS_RSI = 15;

extern string note = "경보 켜기 = true, 끄기 = false";

extern bool alertsOn = true; ///거짓;

extern 부울 alertsOnCurrent = true;

extern bool alertsMessage = true;

extern bool alertsSound = true; ///거짓;

extern bool alertsEmail = 거짓;

extern string soundfile = "connect.wav"; ///"alert2.wav";

외부 문자열 SoundUp = "ok.wav";

extern string SoundDown = "stops.wav";

이중 rsi[];

이중 rsida[];

이중 rsidb[];

더블 마[];

더블맵[];

이중 추세[];

이중 기울기[];

문자열 표시기 파일 이름;

int Char, timeFrame;

부울 returnBars;

부울 계산값;

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

정수 초기화()

{

표시 버퍼(7);

SetIndexBuffer(0,rsi);

SetIndexBuffer(1,rsida);

SetIndexBuffer(2,rsidb);

SetIndexBuffer(3,ma);

SetIndexBuffer(4,맵);

SetIndexBuffer(5, 경향);

SetIndexBuffer(6, 기울기);

SetLevelValue(0,levelOs);

SetLevelValue(1,levelOb);

IndicatorFileName = WindowExpertName();

계산값 = (TimeFrame=="계산값"); if(값 계산) return(0);

returnBars = (TimeFrame=="returnBars"); if (returnBars) return(0);

timeFrame = stringToTimeFrame(TimeFrame);

IndicatorShortName(timeFrameToString(timeFrame)+" Rsi-Ma MaxMin("+RsiOma_Period+","+MaPeriod+")");

SetIndexLabel(0,"RSI");

SetIndexLabel(1,"RSIDA");

SetIndexLabel(2,"RSIDB");

SetIndexLabel(3,"MA");

리턴(0);

}

int deinit() { 반환(0); }

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

정수 시작()

{

int counted_bars=IndicatorCounted();

int i, 제한;

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

if(counted_bars>0) counted_bars--;

limit = MathMin(막대-카운트된_막대,막대-1);

if (returnBars) { rsi[0] = 한계+1; 리턴(0); }

if (calculateValue || timeFrame==Period())

{

if (기울기[limit] == -1) ClearPoint(limit,rsida,rsidb);

for (i=limit; i >= 0; i--) mab = iMA(NULL,0,RsiOma_Period,0,RsiOma_Mode,RsiOma_Price,i);

(i=한계, i >= 0, i--) rsi = iRSIOnArray(mab,0,RsiOma_Period,i);

(i=한계, i >= 0, i--)

{

ma = iMAOnArray(rsi,0,MaPeriod,0,MaType,i);

rsida = EMPTY_VALUE;

rsidb = EMPTY_VALUE;

기울기 = 기울기;

추세 = 추세;

if ((rsi > rsi) && (rsi > OB_RSI))

기울기= 1;

if ((rsi < rsi) && (rsi < OS_RSI))

기울기=-1;

if ((rsi > ma) && (rsi > OB_RSI))

추세 = 1;

if ((rsi < ma) && (rsi < OS_RSI))

경향=-1;

if (기울기 == -1)

플롯포인트(i,rsida,rsidb,rsi);

}

관리 경고();

리턴(0);

}

limit = MathMax(limit,MathMin(Bars-1,iCustom(NULL,timeFrame,indicatorFileName,"returnBars",0,0)*timeFrame/Period()));

if (기울기[limit]==-1) ClearPoint(limit,rsida,rsidb);

(i=한계, i>=0, i--)

{

정수 y = iBarShift(NULL, 시간 프레임, 시간);

rsi = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,0,y);

rsida = EMPTY_VALUE;

rsidb = EMPTY_VALUE;

ma = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,3,y);

경향 = iCustom(NULL, timeFrame, 표시기 파일 이름, "calculateValue", RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,5,y);

기울기 = iCustom(NULL,timeFrame,indicatorFileName,"calculateValue",RsiOma_Period,RsiOma_Price,RsiOma_Mode,MaPeriod,MaType,6,y);

}

for (i=limit;i>=0;i--) if (slope==-1) PlotPoint(i,rsida,rsidb,rsi);

관리 경고();

리턴(0);

}

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

문자열 sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};

int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};

int stringToTimeFrame(문자열 tfs)

{

tfs = stringUpperCase(tfs);

(int i=ArraySize(iTfTable)-1; i>=0; i--)

if (tfs==sTfTable || tfs==""+iTfTable) return(MathMax(iTfTable,Period()));

반환(마침표());

}

문자열 timeFrameToString(int tf)

{

(int i=ArraySize(iTfTable)-1; i>=0; i--)

if (tf==iTfTable) return(sTfTable);

반품("");

}

문자열 stringUpperCase(문자열 str)

{

문자열 s = str;

(int 길이=StringLen(str)-1; 길이>=0; 길이--)

{

Char = StringGetChar(s, 길이);

if((문자 > 96 && 문자 223 && 문자 < 256))

s = StringSetChar(s, 길이, Char - 32);

else if(문자 > -33 && 문자 < 0)

s = StringSetChar(s, 길이, Char + 224);

}

보고);

}

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

무효 ClearPoint(int i,double& 첫 번째[],double& 두 번째[])

{

if ((초 != EMPTY_VALUE) && (초 != EMPTY_VALUE))

두 번째 = EMPTY_VALUE;

또 다른

if ((첫 번째 != EMPTY_VALUE) && (첫 번째 != EMPTY_VALUE) && (첫 번째 == EMPTY_VALUE))

첫 번째 = EMPTY_VALUE;

}

무효 PlotPoint(int i,double& 첫 번째[],double& 두 번째[],double& from[])

{

if (첫 번째 == EMPTY_VALUE)

{

if (첫 번째 == EMPTY_VALUE)

{

첫 번째 = ~에서;

첫 번째 = ~에서;

두 번째 = EMPTY_VALUE;

}

또 다른

{

두 번째 = ~에서;

두 번째 = ~에서;

첫 번째 = EMPTY_VALUE;

}

}

또 다른

{

첫 번째 = ~에서;

두 번째 = EMPTY_VALUE;

}

}

무효 관리 경고()

{

if (!calculateValue && alertsOn)

{

if (alertsOnCurrent)

int whichBar = 0;

그렇지 않으면 whichBar = 1; whichBar = iBarShift(NULL,0,iTime(NULL,timeFrame, whichBar));

if (추세[ whichBar] != 추세[ whichBar+1])

{

if (추세[ whichBar] == 1)

//doAlert( whichBar,"추세");

doAlerts( whichBar,"UP RSI-MA "+Symbol()+" (tf:"+Period()+")",SoundUp);

if (추세[ whichBar] ==-1)

//doAlert( whichBar,"추세 없음");

doAlerts( whichBar,"DOWN RSI-MA "+Symbol()+" (tf:"+Period()+")",SoundDown);

}

}

}

무효 doAlerts(int forBar, string doWhat, string SoundFile) {

정적 문자열 previousAlert="아무것도";

정적 날짜 시간 이전 시간;

문자열 메시지;

if (previousAlert != doWhat || previousTime != 시간[forBar]) {

이전 경고 = 할 일;

이전 시간 = 시간[forBar];

메시지 = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" rsioma ",doWhat);

if (alertsMessage) 경고(메시지);

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

if (alertsEmail) SendMail(StringConcatenate(Symbol()," rsioma "), 메시지);

}

}

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

무효 doAlert(int forBar, 문자열 doWhat)

{

정적 문자열 previousAlert="아무것도";

정적 날짜 시간 이전 시간;

문자열 메시지;

if (previousAlert != doWhat || previousTime != 시간[forBar]) {

이전 경고 = 할 일;

이전 시간 = 시간[forBar];

메시지 = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," - ",timeFrameToString(timeFrame)+" rsioma ",doWhat);

if (alertsMessage) 경고(메시지);

if (alertsEmail) SendMail(StringConcatenate(Symbol()," rsioma "), 메시지);

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

}

}

모두 감사합니다.....

친애하는

아즈룰...........

추신 ... 여기에이 파일 코드를 어떻게 첨부합니까 ..... 엉망으로 죄송합니다 ....