코딩 도움말 - 페이지 167

 

아래 코딩에서 중간 가격 대신 "CLOSE PRICE"를 사용하고 싶습니다. .... Plz help:

정말 감사합니다

정수 시작()

{

이중 ClosePrice=닫기[0];

int limit, i, 플래그, 플래그, 경향[5000];

더블 업[5000], dn[5000], medianPrice, atr;

정수 counted_bars = IndicatorCounted();

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

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

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

if(counted_bars > 0) counted_bars--;

limit=Bars-1-counted_bars;

//인쇄(제한);

//----

for (i = 막대, i >= 1, i--) {

트렌드업 = EMPTY_VALUE;

TrendDown = EMPTY_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//인쇄("atr: "+atr);

중간 가격 = (높은+낮은)/2;

//Print("중앙값: "+중앙값);

up=medianPrice+(승수*atr);

//인쇄("위: "+위);

dn=medianPrice-(승수*atr);

//인쇄("dn: "+dn);

경향=1;

if (닫기>위) {

경향=1;

if (추세 == -1) changeOfTrend = 1;

//Print("추세: "+추세);

}

그렇지 않으면 (닫기<dn) {

경향=-1;

if (추세 == 1) changeOfTrend = 1;

//Print("추세: "+추세);

}

그렇지 않으면 (추세==1) {

경향=1;

변화의 추세 = 0;

}

그렇지 않으면 (추세==-1) {

경향=-1;

변화의 추세 = 0;

}

if (trend0) {

플래그=1;

//Print("플래그: "+플래그);

}

또 다른 {

플래그=0;

//Print("플래그: "+플래그);

}

if (추세>0 && 추세<0) {

플래그=1;

//Print("플래그: "+플래그);

}

또 다른 {

플래그=0;

//Print("플래그: "+플래그);

}

if (추세>0 && dn<dn)

dn=dn;

if (추세)

위로 = 위로;

if (플래그==1)

up=medianPrice+(승수*atr);

if (플래그==1)

dn=medianPrice-(승수*atr);

//-- 표시기 그리기

if (추세==1) {

트렌드업=dn;

if (changeOfTrend == 1) {

트렌드업 = 트렌드다운;

변화의 추세 = 0;

}

}

그렇지 않으면 (추세==-1) {

TrendDown=위쪽;

if (changeOfTrend == 1) {

트렌드다운 = 트렌드업;

변화의 추세 = 0;

}

}

if (추세==1 && 추세==-1) {

UpBuffer = iLow(Symbol(),0,i)-(3*포인트);

DnBuffer = EMPTY_VALUE;

}

if (추세==-1 && 추세==1) {

업버퍼 = EMPTY_VALUE;

DnBuffer = iHigh(Symbol(),0,i)+(3*포인트);

}

}

창 다시 그리기();

//----

리턴(0);

}

 
rpasupathy:
아래 코딩에서 중간 가격 대신 "CLOSE PRICE"를 사용하고 싶습니다. .... Plz help:

정말 감사합니다

정수 시작()

{

이중 ClosePrice=닫기[0];

int limit, i, 플래그, 플래그, 경향[5000];

더블 업[5000], dn[5000], medianPrice, atr;

정수 counted_bars = IndicatorCounted();

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

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

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

if(counted_bars > 0) counted_bars--;

limit=Bars-1-counted_bars;

//인쇄(제한);

//----

for (i = 막대, i >= 1, i--) {

트렌드업 = EMPTY_VALUE;

TrendDown = EMPTY_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//인쇄("atr: "+atr);

중간 가격 = (높은+낮은)/2;

//Print("중앙값: "+중앙값);

up=medianPrice+(승수*atr);

//인쇄("위: "+위);

dn=medianPrice-(승수*atr);

//인쇄("dn: "+dn);

경향=1;

if (닫기>위) {

경향=1;

if (추세 == -1) changeOfTrend = 1;

//Print("추세: "+추세);

}

그렇지 않으면 (닫기<dn) {

경향=-1;

if (추세 == 1) changeOfTrend = 1;

//Print("추세: "+추세);

}

그렇지 않으면 (추세==1) {

경향=1;

변화의 추세 = 0;

}

그렇지 않으면 (추세==-1) {

경향=-1;

변화의 추세 = 0;

}

if (trend0) {

플래그=1;

//Print("플래그: "+플래그);

}

또 다른 {

플래그=0;

//Print("플래그: "+플래그);

}

if (추세>0 && 추세<0) {

플래그=1;

//Print("플래그: "+플래그);

}

또 다른 {

플래그=0;

//Print("플래그: "+플래그);

}

if (추세>0 && dn<dn)

dn=dn;

if (추세)

위로 = 위로;

if (플래그==1)

up=medianPrice+(승수*atr);

if (플래그==1)

dn=medianPrice-(승수*atr);

//-- 표시기 그리기

if (추세==1) {

트렌드업=dn;

if (changeOfTrend == 1) {

트렌드업 = 트렌드다운;

변화의 추세 = 0;

}

}

그렇지 않으면 (추세==-1) {

TrendDown=위쪽;

if (changeOfTrend == 1) {

트렌드다운 = 트렌드업;

변화의 추세 = 0;

}

}

if (추세==1 && 추세==-1) {

UpBuffer = iLow(Symbol(),0,i)-(3*포인트);

DnBuffer = EMPTY_VALUE;

}

if (추세==-1 && 추세==1) {

업버퍼 = EMPTY_VALUE;

DnBuffer = iHigh(Symbol(),0,i)+(3*포인트);

}

}

창 다시 그리기();

//----

반환(0);

}

다음을 대체할 수 있습니다.

(높음+낮음)/2

~와 함께

닫다

 
mladen:
켄와

어떤 자동 검사 기호 기능에 대해 이야기하고 있습니까? 그 코드에는 그런 것이 없다

적절한 매개변수 필드에 기호를 입력하기만 하면 작동합니다(기호 이름이 정확한 한 모든 기호에 대해). 필요해

안녕하세요 mladen님

나는 이것들을 내부에서 본다:

if (ForSymbol1=="") ForSymbol1 = 기호();

if (ForSymbol2=="") ForSymbol2 = 기호();

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();

if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();

if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();

몇몇 부분들:

무효 checkSymbol(int 제한, 문자열 ForSymbol, double& 버퍼[])

{

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

for (int i=limit, i>=0, i--)

{

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

버퍼 = iCustom(ForSymbol,timeFrame,indicatorFileName,"calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,"",0,y);

}

}

내 능력은 정확한 목적을 알 수 없기 때문에 정확히 무엇을 하는지 알 수는 없지만, 원시 추측으로 볼 때 코드가 외부에서 기호를 입력하면 자동 감지되는 것으로 보입니다. 그런 다음 차트에 표시하고 아무 것도 입력하지 않으면 표시됩니다. 로컬 널 차트. 그런 다음 의도적으로 여러 외부 입력 문자열을 외부에 공백으로 남겨두면(아무것도 채우지 않음) 표시기가 반복적으로(적어도 중첩) 로컬 Null 차트를 여러 번 표시합니까? 또한 코드가 내부 사전 설정 기호에 어떻게 적응합니까? 정확히 어떻게 해야할지 모르겠으나 , (외부 입력 기호 기능/인식 을 둔감하게 하기 위해) 부착 방법과 같습니까? 또는 내부 사전 설정 기호에 맞게 수정하는 방법은 무엇입니까?

그런데 166페이지 #1660 이전에 만든 버전을 라이브에서 다시 그리는 이유는 무엇입니까? 그러한 재도색을 일으키는 기본적인 이유는 무엇입니까? 조언 감사합니다.

 
kenwa:
안녕하세요 mladen님

나는 이것들을 내부에서 본다:

if (ForSymbol1=="") ForSymbol1 = 기호();

if (ForSymbol2=="") ForSymbol2 = 기호();

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol();

if (ForSymbolSyn3b=="") ForSymbolSyn3b = Symbol();

if (ForSymbolSyn3c=="") ForSymbolSyn3c = Symbol();

몇몇 부분들:

무효 checkSymbol(int 제한, 문자열 ForSymbol, double& 버퍼[])

{

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

for (int i=limit, i>=0, i--)

{

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

버퍼 = iCustom(ForSymbol,timeFrame,indicatorFileName,"calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,"",0,y);

}

}

내 능력은 정확한 목적을 알 수 없기 때문에 정확히 무엇을 하는지 알 수는 없지만, 원시 추측으로 볼 때 코드가 외부에서 기호를 입력하면 자동 감지되는 것으로 보입니다. 그런 다음 차트에 표시하고 아무 것도 입력하지 않으면 표시됩니다. 로컬 널 차트. 그런 다음 의도적으로 여러 외부 입력 문자열을 외부에 공백으로 남겨두면(아무것도 채우지 않음) 표시기가 반복적으로(적어도 중첩) 로컬 Null 차트를 여러 번 표시합니까? 또한 코드가 내부 사전 설정 기호에 어떻게 적응합니까? 정확히 어떻게 해야할지 모르겠지만 (외부 입력 기호 기능/인식을 둔감하게 하기 위해) 부착 방법과 같습니까? 또는 내부 사전 설정 기호에 맞게 수정하는 방법은 무엇입니까?

그런데 166페이지 #1660 이전에 만든 버전을 라이브에서 다시 그리는 이유는 무엇입니까? 그러한 재도색을 일으키는 기본적인 이유는 무엇입니까? 조언 감사합니다.

이 게시물에서 표시기를 확인할 수 있습니다: https://www.mql5.com/en/forum/178416/page19 몇 가지 추가 제어를 수행할 수 있는 방법을 확인하십시오.

 

#1664의 경우 이전에 읽고 다운로드했습니다. 저에게 너무 고급스럽고 복잡한 코드를 적용할 수 없습니다.

 
kenwa:
#1664의 경우 이전에 읽고 다운로드했습니다. 저에게 너무 고급스럽고 복잡한 코드를 적용할 수 없습니다.

모든 것을 두 줄로 작성할 수 있는 것은 아닙니다. 어떤 경우에는 불가능합니다

 
fareastol:
안녕 믈라덴

주어진 시장 프로필을 기반으로 목표 대역에 대한 POC 및 VA를 계산하라는 내 요청과 관련하여 가능한 한 열심히 노력했습니다. 불행히도 나는 POC 값만 얻었습니다. VA High/Low 값을 얻는 것이 현재 능력 범위를 벗어납니다.

게다가 주 초에는 원래 표시기인 레벨 센서의 코드에 오류가 있어 첨부된 사진에서 볼 수 있듯이 끔찍한 표시를 하는 것 같습니다. 무슨 이유인지 이해할 수 없지만 MT4 기본 디스플레이와 더 낮은 기간(<W1)의 데이터 간의 충돌과 관련이 있다고 추측합니다.

보시고 진행을 위한 조언 부탁드립니다.

깊이 감사드립니다.

파리스톨

파리스톨

지난 금요일 데이터와 첫 번째 일요일 또는 월요일 데이터 사이에 차트의 시간 간격이 있고 xshift 시간이 선의 시간에 추가될 때 화면에 나타나는 일이 발생합니다.

한 가지 가능한 솔루션은 이 버전의 솔루션입니다. 디스플레이를 반전하고 오른쪽에서 왼쪽으로 표시하는 대신 왼쪽에서 오른쪽으로 표시하는 것입니다(그림과 같이). 지금까지 오른쪽에서 왼쪽으로 표시하는 솔루션을 찾지 못했습니다.

파일:
 

때때로 필요한 것은 조금 생각하는 것뿐입니다(이전 게시물을 마치자마자 아이디어가 거기에 있었습니다. )

다음은 "오른쪽에서 왼쪽으로" 솔루션입니다(테스트한 한 지금은 정상적으로 작동함)

 

안녕,

표준편 차선을 "손으로" 계산했습니다.

이제 메타 트레이더에서 원래 Deviation Channel과 같은 채널을 그리고 싶습니다.

하지만 원래 채널처럼 작동하도록 factor = 0.618을 정상 편차 선으로 계산하는 방법을 모르겠습니다. ...OBJPROP_DEVIATION,0.618)

 

안녕 믈라덴

당신은 나에게 많은 의미 있는 일을 생각나게 하고 많은 동기를 부여합니다.

모두 감사합니다

파리스톨