다중 기간 표시기 - 페이지 108

 

mtf 슬로프

여기를 봐 alpha24seven

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

 

감사합니다 Lodol2

내가 놓친 것을 유감스럽게 생각합니다. 관심을 가져주셔서 감사합니다.

컴파일하는 데 문제가 있었습니다. 나는 전에이 오류를 본 적이 없습니다. 어떤 아이디어?

그래픽 보기

감사합니다.

파일:
 

나는 당신이 말한 모든 것에 동의하지만 내 자신이 충분히 명확하지 않다고 생각합니다.

keris 공식은 실시간으로 (차트를 새로 고치지 않고) 그렇게 보이지 않고 노란색 선처럼 보입니다. 차트를 새로 고치면 모든 것이 괜찮아 보이지만 더 높은 기간의 두 번째 차트를 사용하고 지표가 더 높은 기간에만 움직이는지 확인하는 것은 어떻습니까?

더 낮은 기간에 mtf 표시기를 그리는 순간부터 해당 기간의 일부 데이터를 평균화하는 또 다른 방법이 있습니다(높은 tf에는 없음). 원본처럼 보이지는 않겠지만 근사할 수는 있습니다. 따라서 문제는 가장 가까운 근사값에 대한 최상의 공식을 찾는 방법입니다. 그리고 이것이 귀하의 질문에 대한 답변이라고 생각합니다. 맞습니까?

mladen:
빨간색 선은 제안하는 MA의 근사치입니다.

자홍색은 MTF MA의 Keris 방식입니다.

황금선은 더 낮은 시간 프레임에서 더 높은 시간 프레임 MA의 실제 값입니다.

보시다시피, 일정 기간 동안 근사값의 정확한 단일 값은 거의 없지만 Keris의 공식은 기간당 적어도 하나의 정확한 값을 제공합니다. 어쨌든 Metatrader의 근사 공식은 다음과 같습니다.

MAperiod=MAperiod*TimeFrame/Period()

이 근사치를 이동 평균 파생 지표(예: MACD)에 적용하려고 하면 결국 큰 차이가 발생하게 됩니다. 즉, 큰 차이가 발생합니다(저는 1H 시간 프레임에서 4H MACD의 7-8% 차이를 보았습니다).

반대 질문: 얼마나 많은 사람들이 다중 시간 프레임 지표에 대해 다른 접근을 시도했다고 생각합니까?
 

코드 오류

나는 그것을 알아. 이 추가 코드는 마지막에 파일에 남습니다. 그냥 삭제하고 컴파일하고 짜잔'.

우수한 지표 BTW.

---

/*

void drawLine(이중 레벨, 문자열 이름, 색상 Col)

{

개체삭제(이름);

ObjectCreate(이름, OBJ_HLINE , WindowFind(이름), 시간[0], lvl, 시간[0], lvl);

ObjectSet(이름, OBJPROP_STYLE, STYLE_DOT);

ObjectSet(이름, OBJPROP_COLOR, 열);

ObjectSet(이름,OBJPROP_WIDTH,1);

}

---

 

...

노란색 선은 "실제 MTF" 이동 평균 입니다.

그림의 표시기를 "새로 고침"할 필요가 없습니다.

나머지는 그 포스트를 다시 읽어주세요

문안 인사

믈라덴

Scrat:
나는 당신이 말한 모든 것에 동의하지만 내 자신이 충분히 명확하지 않다고 생각합니다.

keris 공식은 실시간으로 (차트를 새로 고치지 않고) 그렇게 보이지 않고 노란색 선처럼 보입니다. 차트를 새로 고치면 모든 것이 괜찮아 보이지만 더 높은 기간의 두 번째 차트를 사용하고 지표가 더 높은 기간에만 움직이는지 확인하는 것은 어떻습니까?

더 낮은 기간에 mtf 표시기를 그리는 순간부터 해당 기간의 일부 데이터를 평균화하는 또 다른 방법이 있습니다(높은 tf에는 없음). 절대 원본처럼 보이지 않을 것입니다. 하지만 근사화할 수는 있습니다. 따라서 문제는 가장 가까운 근사값에 대한 최상의 공식을 찾는 방법입니다. 그리고 이것이 귀하의 질문에 대한 답변이라고 생각합니다. 맞습니까?
 

이 인디에는 Mtf가 필요합니다.

안녕하세요 여러분,

내 차트에 다양한 시간대의 지표를 표시할 수 있는 기능을 갖고 싶었습니다.

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

//| 피셔_m11.mq4 |

//| 저작권 ฉ forexjr

//| /cam06/fisher의 색인 |

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

#property copyright "Copyright ฉ 23.07.2006 MartinG "

#속성 링크 "http://home.arcor.de/cam06/fisher"

#속성 표시기_분리_창

//#속성 표시기_최소 -1

//#속성 표시기_최대 1

#속성 표시기_버퍼 3

#property indicator_color2 로얄블루

#property indicator_color3 빨간색

#속성 표시기_너비2 0.5

#속성 표시기_너비3 0.5

정수 LeftNum1=56;

정수 LeftNum2=56;

extern int RangePeriods=35;

외부 이중 PriceSmoothing=0.3; // = 0.67 bei Fisher_m10

외부 이중 IndexSmoothing=0.3; // =0.50 bei Fisher_m10

문자열 ThisName="피셔_쿠스쿠스";

정수 그리기 시작;

//---- 버퍼

이중 ExtMapBuffer1[];

이중 ExtMapBuffer2[];

이중 ExtMapBuffer3[];

이중 ExtMapBuffer4[];

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

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

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

정수 초기화()

{

//---- 표시기

표시기버퍼(4);

SetIndexLabel(0,"별");

SetIndexStyle(0,DRAW_NONE);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexStyle(2,DRAW_HISTOGRAM);

SetIndexBuffer(2,ExtMapBuffer3);

SetIndexStyle(3,DRAW_NONE);

SetIndexBuffer(3,ExtMapBuffer4);

문자열 텍스트=이이름;

Text=Text+"(rPeriods "+RangePeriods;

Text=텍스트+", pSmooth "+DoubleToStr(PriceSmoothing,2);

텍스트=텍스트+", iSmooth "+DoubleToStr(IndexSmoothing,2);

텍스트=텍스트+") ";

IndicatorShortName(텍스트);

SetIndexLabel(1,NULL);

SetIndexLabel(2,NULL);

DrawStart=2*RangePeriods+4; // DrawStart= 왼쪽에서 오른쪽으로 계산된 BarNumber

SetIndexDrawBegin(1, 그리기 시작);

SetIndexDrawBegin(2, 그리기 시작);

if (PriceSmoothing>=1.0)

{

가격스무딩=0.9999;

Alert("Fish61: PriceSmothing 팩터는 1보다 작아야 합니다!");

}

if (PriceSmoothing<0)

{

가격스무딩=0;

Alert("Fish61: PriceSmothing 요소는 음수가 아니어야 합니다!");

}

if (인덱스 스무딩>=1.0)

{

인덱스스무딩=0.9999;

Alert("Fish61: PriceSmothing 팩터는 1보다 작아야 합니다!");

}

if (인덱스 스무딩<0)

{

인덱스스무딩=0;

Alert("Fish61: PriceSmothing 요소는 음수가 아니어야 합니다!");

}

//----

리턴(0);

}

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

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

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

정수 초기화()

{

//----

//----

리턴(0);

}

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

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

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

정수 시작()

{

if (막대<DrawStart)

{

Alert("Fish84: RangePeriods=",RangePeriods로 FisherIndicator를 계산하기 위해 로드된 막대가 충분하지 않습니다.);

리턴(-1);

}

//----

int counted_bars=IndicatorCounted();

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

if (counted_bars>0) counted_bars--;

//----

int Position=바 개수 계산된 바; // Position = BarPosition은 오른쪽에서 왼쪽으로 계산

int LeftNum1=막대 위치; // 더 많은 막대가 로드되면 막대의 위치가 변경되지만 LeftNum은 변경되지 않습니다.

if (LeftNum1<RangePeriods+1)Position=Bars-RangePeriods-1;

동안(위치>=0)

{

계산현재막대(위치);

위치--;

}

//----

리턴(0);

}

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

//| 단일 막대 계산 기능 |

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

int 계산 현재 막대(int pos)

{

이중 LowestLow, HighestHigh, GreatestRange, MidPrice;

Double PriceLocation, SmoothedLocation, FishIndex, SmoothedFish;

//----

LowestLow = 낮음[최저(NULL,0,MODE_LOW,RangePeriods,pos)];

HighestHigh = 높음;

if (HighestHigh-LowestLow<0.1*Point)HighestHigh=LowestLow+0.1*Point;

GreatestRange=가장 높음-낮음 낮음;

MidPrice = (높은[pos]+낮은[pos])/2;

// 현재 범위의 PriceLocation

if (최대 범위!=0)

{

PriceLocation=(MidPrice-LowestLow)/GreatestRange;

가격 위치= 2.0*가격 위치 - 1.0; // -> -1 < 가격위치 < +1

}

// PriceLocation의 평활화

ExtMapBuffer4[pos]=PriceSmoothing*ExtMapBuffer4[pos+1]+(1.0-PriceSmoothing)*PriceLocation;

SmoothedLocation=ExtMapBuffer4[pos];

if (SmoothedLocation> 0.99) SmoothedLocation= 0.99; // verhindert, dass MathLog unendlich wird

if (SmoothedLocation<-0.99) SmoothedLocation=-0.99; // verhindert, dass MathLog minuns unendlich wird

// 피셔 인덱스

if(1-SmoothedLocation!=0) FishIndex=MathLog((1+SmoothedLocation)/(1-SmoothedLocation));

else Alert("Fisher129: Unerlaubter Zusstand bei Bar Nummer ",Bars-pos);

// FisherIndex의 평활화

ExtMapBuffer1[pos]=IndexSmoothing*ExtMapBuffer1[pos+1]+(1.0-IndexSmoothing)*FishIndex;

if (Bars-pos<DrawStart)ExtMapBuffer1[pos]=0;

SmoothedFish=ExtMapBuffer1[pos];

if (SmoothedFish>0) // 상승 추세

{

ExtMapBuffer2[pos]=SmoothedFish;

ExtMapBuffer3[pos]=0;

}

else // else 하락 추세

{

ExtMapBuffer2[pos]=0;

ExtMapBuffer3[pos]=SmoothedFish;

}

//----

반환(0);

}

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

감사하다

 
mladen:
여러분, 진지하게 합시다.

난 진심이야...

저는 프로그래머가 아닌 초보자입니다. scrat의 방식이 완벽하지 않을 수도 있지만 사용할 수는 있습니다. 나는 그것을 시도 할 것이다. 유용하면 사용하겠습니다. 그렇지 않은 경우 다른 좋은 방법이나 다른 지표를 다시 찾을 것입니다.

나는 Codersguru에게 비슷한 것에 대해 물어본 적이 있습니다.

그에게 내 질문은 내가 3천만 TF에서 1 EMA를 사용하는 경우 1백만 TF에서 30 EMA여야 한다는 것입니다.

그리고 그는 그렇지 않다고 말했다. 그러나 나는 만족하지 않았고 다른 방법이있을 수 있으므로 여기에서 찾습니다. 하지만 소용없으면 나한테는 괜찮아... . 적어도 결과는 알고 있습니다.

BTW, 최신 RSIOMA mladen 덕분에 매우 마음에 들었습니다. 이 훌륭한 지표를 제공한 fxbs와 Kalenzo에게도 감사합니다.

문안 인사,

이인

 

문제는 다음과 같습니다.

MA의 아이디어는 아마도 기술적 분석 에서 가장 오래된 아이디어일 것입니다.

나는 TSD와 같은 장소가 아이디어와 지식을 공유하는 장소라는 데 동의합니다.

그러나 아무도 이런 식으로 시도해서는 안 됩니다.

나는 당신 중 누군가가 동시에 더 높은 tf와 더 작은 tf에서 동일한 지표를 일치시킬 생각을 한 적이 있는지 궁금합니다....

자, 도대체 우리가 여기서 무엇을 하려는 걸까요?

이제 내 자신이 분명해졌기를 바랍니다.

문안 인사

믈라덴

인잘:
난 진심이야...

저는 프로그래머가 아닌 초보자입니다. scrat의 방식이 완벽하지 않을 수도 있지만 사용할 수는 있습니다. 나는 그것을 시도 할 것이다. 유용하면 사용하겠습니다. 그렇지 않은 경우 다른 좋은 방법이나 다른 지표를 다시 찾을 것입니다.

나는 Codersguru에게 비슷한 것에 대해 물어본 적이 있습니다.

그에게 내 질문은 내가 3천만 TF에서 1 EMA를 사용하는 경우 1백만 TF에서 30 EMA여야 한다는 것입니다.

그리고 그는 그렇지 않다고 말했다. 그러나 나는 만족하지 않았고 다른 방법이있을 수 있으므로 여기에서 찾습니다. 하지만 소용없으면 나한테는 괜찮아... . 적어도 결과는 알고 있습니다.

BTW, 최신 RSIOMA mladen 덕분에 매우 마음에 들었습니다. 이 훌륭한 지표에 대해 fxbs와 Kalenzo에게도 감사드립니다.

문안 인사,

이인
 

좋아, 나는 공식적으로 바보이고 방금 이 스레드의 모든 사람을 화나게 했습니다. 내가 이번에 맞았어?

죄송합니다.

mladen:
문제는 다음과 같습니다.

MA의 아이디어는 아마도 기술적 분석에서 가장 오래된 아이디어일 것입니다.

나는 TSD와 같은 장소가 아이디어와 지식을 공유하는 장소라는 데 동의합니다.

그러나 아무도 이런 식으로 시도해서는 안 됩니다.

자, 도대체 우리가 여기서 무엇을 하려는 걸까요?

이제 내 자신이 분명해졌기를 바랍니다.

문안 인사

믈라덴
 

이 기동특무부대 인디스가 어디에 있는지 아는 사람이 있습니까?

나는 이들의 MTF 버전을 모두 찾아보았다. 아는 사람이나 본 사람이 있습니까?

고맙습니다.

파일: