코딩 도움말 - 페이지 195

 
shtopr:
спасибо за ответ.

проверил h1, m30, m15, m5, m1

по-прежнему работает только один цвет, красный.

그것이 내가 말한 것입니다. 세 번째 색상의 경우(두 값이 동일한 값 범위에 속할 때) 세 번째 색상에 대한 옵션을 추가하려면 코드를 수정해야 합니다.

 
mladen:
다음은 하나의 열을 사용하는 버전입니다. 세 번째 색상을 원하시면 새 옵션을 추가해야 합니다.

2min renko 라이브 차트에서 상단에 2개의 녹색 막대만 있고 그게 내가 피곤한 모든 쌍에 해당됩니다. 정상입니까?

 
drunkpips:
2min renko 라이브 차트에서 상단에 2개의 녹색 막대만 있고 그게 내가 피곤한 모든 쌍에 해당됩니다. 정상입니까?

나는 Renko 차트를 사용하지 않습니다

내장 표시기(iBEarsPower() 및 iBullsPower())를 사용하고 있으므로 일부 문제가 있는 경우 이미 내장 표시기 자체에 문제가 있는 것입니다.

 
mladen:
그것이 내가 말한 것입니다. 세 번째 색상의 경우(두 값이 동일한 값 범위에 속할 때) 세 번째 색상에 대한 옵션을 추가하려면 코드를 수정해야 합니다.

오케이. 시바!!

 

믈라덴,

나는 포스트 #1874에서 'simple mtf'로 공부하고 놀았다.

참고: MA의 MA이며 MTF가 가능합니다.

질문이 몇 개 있습니다:

코드로 무엇을 하든 'returnBars'가 무엇을 하는지 이해할 수 없습니다.

1. 목표 시간 프레임에서 변경된 막대의 수가 필요한지 여부를 결정하는 것은 무엇이며 그 이유는 무엇입니까?

2. 이 라인에 관하여:

returnBars = TimeFrame == "returnBars"; // 변경된 바의 수를 요청하는지 확인

저는 고등학교를 졸업한 프로그래머가 아닙니다. 나는 이 복합 구조를 모른다. 나는 또한 변수 유형을 혼합하는 규칙을 모릅니다.

문자열 변수 Timeframe이 부울 returnBars의 값을 가져오는 것 같습니다.

그런 다음 returnBars에 값을 다시 할당합니다. ??

returnBars는 boolean이므로 TimeFrame이 0보다 크면 '1'을 할당하고, 그렇지 않으면 '0'을 할당합니까?

3. 지표를 더 높은 TF로 설정하고 많은 막대 또는 전략 테스터 에서 라이브(앞으로) 테스트합니다. 나는 그것을 사용하는 라인을 제거할 수 있고 표시 라인에 변화가 없습니다:

if (returnBars) Comment("returnBars ",returnBars, " Tick ", 볼륨(0));

// if (returnBars) { ma1[0] = limit+1; 반환(0); }

화면의 주석 줄에 "returnBars 1"이 표시됩니다.

나는 그것이 '1'값을 얻는 곳을 모릅니다.

'if' 부분이 없으면 항상 '0'이 표시됩니다.

Init()에 넣어도 같은 결과입니다.

빅비

 
Big Be:
믈라덴,

나는 포스트 #1874에서 'simple mtf'로 공부하고 놀았다.

참고: MA의 MA이며 MTF가 가능합니다.

질문이 몇 개 있습니다:

코드로 무엇을 하든 'returnBars'가 무엇을 하는지 이해할 수 없습니다.

1. 목표 시간 프레임에 변경된 막대 수가 필요한지 여부를 결정하는 것은 무엇이며 그 이유는 무엇입니까?

2. 이 라인에 관하여:

returnBars = TimeFrame == "returnBars"; // 변경된 바의 수를 요청하는지 확인

저는 고등학교를 졸업한 프로그래머가 아닙니다. 나는 이 복합 구조를 모른다. 나는 또한 변수 유형을 혼합하는 규칙을 모릅니다.

문자열 변수 Timeframe이 부울 returnBars 값을 가져오는 것 같습니다.

그런 다음 returnBars에 값을 다시 할당합니다. ??

returnBars는 boolean이므로 TimeFrame이 0보다 크면 '1'을 할당하고 그렇지 않으면 '0'을 할당합니까?

3. 지표를 더 높은 TF로 설정하고 많은 막대 또는 전략 테스터에서 라이브(앞으로) 테스트합니다. 나는 그것을 사용하는 라인을 제거할 수 있고 표시 라인에 변화가 없습니다:

if (returnBars) Comment("returnBars ",returnBars, " Tick ",Volume(0));

// if (returnBars) { ma1[0] = limit+1; 리턴(0); }

화면의 주석 줄에 "returnBars 1"이 표시됩니다.

나는 그것이 '1'값을 얻는 곳을 모릅니다.

'if' 부분이 없으면 항상 '0'이 표시됩니다.

Init()에 넣어도 같은 결과입니다.

빅비

빅비

이것을 상상해보십시오 :

1. 당신은 15분 차트에서 작업하고 있고 당신의 지표는 1시간 데이터를 보여주고 있습니다. 15분 차트의 마지막 눈금에서 몇 개의 막대가 변경되었고 1시간 차트의 경우 몇 개의 막대가 변경되었습니까? 리턴 바가 이를 확인 하고 있습니다. 그 숫자는 가정된 값일 필요가 없습니다(오랫 동안 차트에서 방문하지 않은 기간을 선택하고 메타 트레이더가 해당 기간 동안 데이터를 다운로드하기 시작할 때 어떤 일이 일어날지 확인하십시오 - 새 막대가 몇 개인지 확인해야 합니다 다운로드되었거나 그렇지 않으면 다중 시간 프레임 표시기의 과거 막대에 대한 정확한 상태를 갖기 위해 시간 프레임을 앞뒤로 점프해야 합니다)

2. returnBars = TimeFrame == "returnBars";

거기에 하나의 할당("=")과 하나의 논리적 비교("==")가 있습니다. 즉, returnBars는 두 문자열(TimeFrame 및 "returnBars")의 논리적 비교 결과를 받아야 합니다.

3. 리턴 바는 부울 유형 변수입니다. 두 가지 값을 가질 수 있습니다. 0은 "거짓"이고 1은 "참"입니다. 이것이 returnBars에 대해 1을 얻는 이유입니다(returnBars가 "true"로 설정됨을 의미).

______________

추신: 부울에 대한 C/C++ 규칙에 대한 것이라면 0이 아닌 다른 값은 모두 true로 간주되며 메타 트레이더 변수를 동일한 방식으로 테스트할 수 있습니다(예: if(someDoubleValue)는 someDoubleValue가 0과 다른지 테스트함). 그러나 메타 트레이더는 부울 유형 변수에 0과 1을 할당합니다.

 

친애하는 믈라덴

Poalln 표시기가 어떻게 다시 칠해지는지 요점을 알 수 없습니다. iRSI(NULL,0,RSI,PRICE_TYPICAL,i-8) 또는 iCCI(NULL,0,CCI,PRICE_TYPICAL,i-8)는 미래 값을 의미하지만 마지막 막대를 계산할 때 i-8에 대한 데이터가 없다는 것을 알고 있습니다.

제 생각에는 제로일 것입니다. 그렇다면 Pollan은 어떻게 다시 칠합니까?

최상의,

 
-IXI-:
친애하는 믈라덴

Poalln 표시기가 어떻게 다시 칠해지는지 요점을 알 수 없습니다. iRSI(NULL,0,RSI,PRICE_TYPICAL,i-8) 또는 iCCI(NULL,0,CCI,PRICE_TYPICAL,i-8)는 미래 값을 의미하지만 마지막 막대를 계산할 때 i-8에 대한 데이터가 없다는 것을 알고 있습니다.

제 생각에는 제로일 것입니다. 그렇다면 Pollan은 어떻게 다시 칠합니까?

최상의,

IX

현재 막대에서 해당 막대의 값은 0입니다. 첫 번째 과거 막대에서 1개의 미래 가치와 7개의 0을 얻습니다. 등등.

새로운 막대가 형성됨에 따라 미래 값의 결과에 대해 0을 얻었던 막대가 실제로 실제 미래 결과를 얻은 다음 해당 값이 "새로운" 미래 값에 따라 변경됩니다.

 

이 표시기가 JPY 쌍에서 작동하도록 하려면 어떻게 해야 하나요?

안녕,

이 인디는 모든 라운드 번호 로 라인을 만들고 라운드 번호의 각 면에 한 라인 15핍을 만듭니다.

그러나 JPY 쌍에서는 작동하지 않습니다.

이것이 작동하려면 무엇을 변경해야 합니까?

#property indicator_chart_window

extern color UpperLineColor = Red;

extern color MainLineColor = Red;

extern color LowerLineColor = Red;

extern double HighOffset = 150;

extern double LowOffset = 150;

extern int LineStyle = 2;

extern string LineStyleInfo = "0=Solid,1=Dash,2=Dot,3=DashDot,4=DashDotDot";

double LineSpaceOld;

double Hoch;

double Tief;

bool FirstRun = true;

double LineSpace = 1.0; // 1 unit = 0.01 of basic value (e.g. 1 USD cent)

string LineText = "RoundNr ";

string LineText1 = "RoundNr1 ";

string LineText2 = "RoundNr2 ";

int deinit()

{

double AbSpace = 0.01*LineSpace;

double Oben = MathRound(110*Hoch)/100;

double Unten = MathRound(80*Tief)/100;

for(double i=0; i<=Oben; i+=AbSpace)

{

if(i<Unten) { continue; }

ObjectDelete(LineText+DoubleToStr(i,2));

ObjectDelete(LineText1+DoubleToStr(i,2));

ObjectDelete(LineText2+DoubleToStr(i,2));

}

return(0);

}

int start()

{

if(FirstRun)

{

Hoch = NormalizeDouble( High, 2 );

Tief = NormalizeDouble( Low, 2 );

FirstRun = false;

}

else if(LineSpace != LineSpaceOld)

{

deinit();

Hoch = NormalizeDouble( High, 2 );

Tief = NormalizeDouble( Low, 2 );

}

DrawLines();

LineSpaceOld = LineSpace;

return(0);

}

void DrawLines()

{

double AbSpace = 0.01*LineSpace;

double Oben = MathRound(110*Hoch)/100;

double Unten = MathRound(80*Tief)/100;

for(double i=0; i<=Oben; i+=AbSpace)

{

if(i<Unten) { continue; }

string StringNr = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText+StringNr) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText+StringNr, OBJ_HLINE, 0, 0, i);

ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);

}

else // Adjustments

{

ObjectSet(LineText+StringNr, OBJPROP_PRICE1, i);

ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);

}

//#######################################################################

if(i<Unten) { continue; }

string StringNr1 = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText1+StringNr1) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText1+StringNr1, OBJ_HLINE, 0, 0, i+(HighOffset/100000));

ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);

}

else // Adjustments

{

ObjectSet(LineText1+StringNr1, OBJPROP_PRICE1, i+(HighOffset/100000));

ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);

}

//#######################################################################

if(i<Unten) { continue; }

string StringNr2 = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText2+StringNr2) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText2+StringNr2, OBJ_HLINE, 0, 0, i-(LowOffset/100000));

ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);

}

else // Adjustments

{

ObjectSet(LineText2+StringNr2, OBJPROP_PRICE1, i-(LowOffset/100000));

ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);

}

}

WindowRedraw();

}
 
Georgebaker:
안녕,

이 인디는 모든 라운드 번호로 라인을 만들고 라운드 번호의 각 면에 한 라인 15핍을 만듭니다.

그러나 JPY 쌍에서는 작동하지 않습니다.

이것이 작동하려면 무엇을 변경해야 합니까?

#property indicator_chart_window

extern color UpperLineColor = Red;

extern color MainLineColor = Red;

extern color LowerLineColor = Red;

extern double HighOffset = 150;

extern double LowOffset = 150;

extern int LineStyle = 2;

extern string LineStyleInfo = "0=Solid,1=Dash,2=Dot,3=DashDot,4=DashDotDot";

double LineSpaceOld;

double Hoch;

double Tief;

bool FirstRun = true;

double LineSpace = 1.0; // 1 unit = 0.01 of basic value (e.g. 1 USD cent)

string LineText = "RoundNr ";

string LineText1 = "RoundNr1 ";

string LineText2 = "RoundNr2 ";

int deinit()

{

double AbSpace = 0.01*LineSpace;

double Oben = MathRound(110*Hoch)/100;

double Unten = MathRound(80*Tief)/100;

for(double i=0; i<=Oben; i+=AbSpace)

{

if(i<Unten) { continue; }

ObjectDelete(LineText+DoubleToStr(i,2));

ObjectDelete(LineText1+DoubleToStr(i,2));

ObjectDelete(LineText2+DoubleToStr(i,2));

}

return(0);

}

int start()

{

if(FirstRun)

{

Hoch = NormalizeDouble( High, 2 );

Tief = NormalizeDouble( Low, 2 );

FirstRun = false;

}

else if(LineSpace != LineSpaceOld)

{

deinit();

Hoch = NormalizeDouble( High, 2 );

Tief = NormalizeDouble( Low, 2 );

}

DrawLines();

LineSpaceOld = LineSpace;

return(0);

}

void DrawLines()

{

double AbSpace = 0.01*LineSpace;

double Oben = MathRound(110*Hoch)/100;

double Unten = MathRound(80*Tief)/100;

for(double i=0; i<=Oben; i+=AbSpace)

{

if(i<Unten) { continue; }

string StringNr = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText+StringNr) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText+StringNr, OBJ_HLINE, 0, 0, i);

ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);

}

else // Adjustments

{

ObjectSet(LineText+StringNr, OBJPROP_PRICE1, i);

ObjectSet(LineText+StringNr, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText+StringNr, OBJPROP_COLOR, MainLineColor);

}

//#######################################################################

if(i<Unten) { continue; }

string StringNr1 = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText1+StringNr1) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText1+StringNr1, OBJ_HLINE, 0, 0, i+(HighOffset/100000));

ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);

}

else // Adjustments

{

ObjectSet(LineText1+StringNr1, OBJPROP_PRICE1, i+(HighOffset/100000));

ObjectSet(LineText1+StringNr1, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText1+StringNr1, OBJPROP_COLOR, UpperLineColor);

}

//#######################################################################

if(i<Unten) { continue; }

string StringNr2 = DoubleToStr(i,2); // 2 digits number in object name

if (ObjectFind(LineText2+StringNr2) != 0) // HLine not in main chartwindow

{

ObjectCreate(LineText2+StringNr2, OBJ_HLINE, 0, 0, i-(LowOffset/100000));

ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);

}

else // Adjustments

{

ObjectSet(LineText2+StringNr2, OBJPROP_PRICE1, i-(LowOffset/100000));

ObjectSet(LineText2+StringNr2, OBJPROP_STYLE, LineStyle);

ObjectSet(LineText2+StringNr2, OBJPROP_COLOR, LowerLineColor);

}

}

WindowRedraw();

}

조지 베이커,

https://www.mql5.com/en/forum/180648/page307 과 같은 지표를 지표의 기초로 사용하지 않으시겠습니까? 코딩 시간을 절약할 수 있습니다.