수평선 - 페이지 7

 

Plot Lines(15)/price/Color/Width/Style 직접 작성했습니다.

안녕하세요, 이 작업을 완료하고 이전에 만든 행에 대한 삭제만 추가하고 프로그램을 원래 차트에 적용했을 때 그리고 열리거나 변경한 경우, 즉... 가격 색상 스타일 등을 한 번만 실행하도록 코드를 추가하여 완료하도록 도와주세요. 감사합니다 그리고 나는 또한 스크립트가 잘 작동한다고 생각하지만 스크립트를 게시하고 있습니다. 또한 이 작업을 도와줄 수 있는 사람에게 감사하고, 필요로 하거나 필요에 맞게 변경해야 하는 사람에게 효과가 있기를 바랍니다. 동료 거래자들도 바랍니다. 내 학습 스타일에서 작성하는 방법을 배운 후 개인적으로 작성한 첫 번째 지표의 이점을 얻을 수 있습니다. 다시 한번 감사합니다.

plot_lines.mq4

plot_lines_1.mq4

파일:
 

여보세요,

누구든지 이 표시기(MT_breakout.mq4)를 수정하여 새 눈금에서 줄을 삭제하지 않도록 할 수 있습니까? 고맙습니다.

(지표는 이 게시물에 있습니다: https://www.mql5.com/en/forum/172989/page3 )

 

x 핍 거리 가격 수준

또한 참조 가격에서 x핍 거리 수준까지 여러 선을 그리는 표시기를 찾고 있었지만 찾을 수 없었습니다. 그래서 위에 게시된 "Plot Lines"를 기반으로 지표를 만들었습니다.

위 또는 아래로 7단계를 선택하고 선을 그릴 거리를 선택할 수 있습니다. 거리는 참조 가격에서 포인트로 계산됩니다.

4개의 기본 레벨이 설정됩니다: 30, 70, 100 및 130핍.

핍으로 고정 이익 수준을 사용하면 이익을 보는 데 도움이 됩니다.

도움이 되기를 바랍니다. 건배.

 

친애하는 에어 퀘스트,

x Pips 지표를 공유해 주셔서 감사합니다. 방금 mt4 차트로 드래그했지만 나오지 않습니다. 어떤 선도 나타나지 않습니다. 무엇이 문제입니까? 친절하게 저에게 그것에 대해 조언해 주십시오.

감사합니다

 

안녕,

이렇게 수평선 을 만드는 방법을 보여줄 수 있습니까? 일반적으로 구멍 도표에는 왼쪽에서 오른쪽으로 수평선이 그려집니다. 내가 원하는 것은 지정된 가격에서 실선을 그리고 동일한 가격 수준이 터치로 끝나는 것입니다. 그런 다음 같은 길이의 다른 점선을 그립니다. 예: 실선 마젠타 선이 가격 1.2324에 그려지고 가격이 내려갑니다. 가격이 다시 상승하여 해당 수준에 도달하면 실선 마젠타 선이 끝나야 합니다. 예를 들어 이 실선 마젠타색 선에는 100개의 양초가 있으므로 흰색 점선은 다음 100개 양초에 대해 동일한 수준으로 그려야 합니다.

그것을 만드는 데 도움을 주시거나 이것을 만드는 방법에 대한 예제 링크를 제공하십시오.

감사해요

파일:
 
pedma:
안녕,

이렇게 수평선을 만드는 방법을 보여줄 수 있습니까? 일반적으로 구멍 도표에는 왼쪽에서 오른쪽으로 수평선이 그려집니다. 내가 원하는 것은 지정된 가격에서 실선을 그리고 동일한 가격 수준이 터치로 끝나는 것입니다. 그런 다음 같은 길이의 다른 점선을 그립니다. 예: 실선 마젠타 선이 가격 1.2324에 그려지고 가격이 내려갑니다. 가격이 다시 상승하여 해당 수준에 도달하면 실선 마젠타 선이 끝나야 합니다. 예를 들어 이 실선 마젠타색 선에는 100개의 양초가 있으므로 흰색 점선은 다음 100개 양초에 대해 동일한 수준으로 그려야 합니다.

그것을 만드는 데 도움을 주시거나 이것을 만드는 방법에 대한 예제 링크를 제공하십시오.

감사해요

OBJECT_HLINE 대신 OBJECT_TRENDLINE을 사용하면 할 수 있습니다.

 
mladen:
OBJECT_HLINE 대신 OBJECT_TRENDLINE을 사용하면 할 수 있습니다.

안녕하세요 mladen님

매우 감사합니다. 아래 코드를 사용하여 수평선을 그릴 수 있습니다.

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

//| myHorizontalLine.mq4 |

//| Copyright 2013, MetaQuotes Software Corp. |

//| MetaTrader 5 Trading Platform / MetaQuotes Software Corp. |

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

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

#property indicator_chart_window

extern int getClosePrcOfCandleNr = 8;

extern color lineColor = Lime;

extern int lineWidth = 2;

extern int lineBeginOfCandleNr = 40;

extern int lineEndOfCandleNr = 1;

string label = "_myHorLine_";

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

//| Custom indicator initialization function |

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

int init()

{

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

ObjectDelete(label);

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

Trend_Line(Time[lineBeginOfCandleNr],Time[lineEndOfCandleNr],Close[getClosePrcOfCandleNr],Close[getClosePrcOfCandleNr],lineColor,STYLE_SOLID,lineWidth);

return(0);

}

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

void Trend_Line(

datetime x1, datetime x2, double y1,

double y2, color lineColor, int lineStyle, int lineWidth)

{

//~~~~~~~~~~

ObjectDelete(label);

ObjectCreate(label, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(label, OBJPROP_RAY, 0);

ObjectSet(label, OBJPROP_COLOR, lineColor);

ObjectSet(label, OBJPROP_STYLE, lineStyle);

ObjectSet(label, OBJPROP_WIDTH, lineWidth);

//~~~~~~~~~~

}

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

[/PHP]

This line is still moving / redraw every new candle appear (see picture).

It's still not what i need. For example: I want to get the TIME and PRICE the EMA3 cross EMA21 at TimeFrame H1. At that point, I will draw a line. This line must end if the price goes back to the same price level. But i must can see the line from smaller timeframe like M1, M5, M15, M30 (not only on H1).

I tried to make it like this, but i did not get any line ....

[PHP]

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

//| myHorizontalLine2.mq4 |

//| Copyright 2013, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

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

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

#property indicator_chart_window

extern int smallEMAperiod = 3;

extern int bigEMAperiod = 21;

extern color lineColorUp = Lime;

extern int lineWidthUp = 2;

extern color lineColorDn = Red;

extern int lineWidthDn = 2;

//---

double getUpPrice=0, getDnPrice=0, prcBefore=0, prcAfter=0;

datetime getUpTime=0, endUpTime=0, getDnTime=0, endDnTime=0;

bool goingUp=false, goingDown=false;

string upLabel = "_myHorLineUp_";

string dnLabel = "_myHorLineDn_";

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

//| Custom indicator initialization function |

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

int init()

{

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

ObjectDelete(upLabel);

ObjectDelete(dnLabel);

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

int limit,i;

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---

for(i=0; i<limit; i++) {

double prevSmallEMA = iMA(NULL,60,smallEMAperiod,0,MODE_EMA,PRICE_CLOSE,i+1);

double curSmallEMA = iMA(NULL,60,smallEMAperiod,0,MODE_EMA,PRICE_CLOSE,i);

double prevBigEMA = iMA(NULL,60,bigEMAperiod,0,MODE_EMA,PRICE_CLOSE,i+1);

double curBigEMA = iMA(NULL,60,bigEMAperiod,0,MODE_EMA,PRICE_CLOSE,i);

if ((prevSmallEMA curBigEMA)) { // going up

getUpPrice = iClose(NULL,60,i);

getUpTime = Time;

goingUp = true;

goingDown = false;

}

else if ((prevSmallEMA >= prevBigEMA)&&(curSmallEMA < curBigEMA)) { // going down

getDnPrice = iClose(NULL,60,i);

getDnTime = Time;

goingDown = true;

goingUp = false;

}

}

//---

if (goingUp == true) {

for(i=0; i<limit; i++) {

prcBefore = iClose(NULL,60,i+1);

prcAfter = iClose(NULL,60,i);

if ((prcBefore >= getUpPrice)&&(prcAfter < 0)) {

endUpTime = Time;

}

else {

endUpTime = 0;

}

}

if (endUpTime != 0) {

Trend_LineUp(getUpTime,endUpTime,getUpPrice,getUpPrice,lineColorUp,STYLE_SOLID,lineWidthUp);

}

}

//---

if (goingDown == true) {

for(i=0; i<limit; i++) {

prcBefore = iClose(NULL,60,i+1);

prcAfter = iClose(NULL,60,i);

if ((prcBefore 0)) {

endDnTime = Time;

}

else {

endDnTime = 0;

}

}

if (endDnTime != 0) {

Trend_LineDn(getDnTime,endDnTime,getDnPrice,getDnPrice,lineColorDn,STYLE_SOLID,lineWidthDn);

}

}

//---

return(0);

}

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

void Trend_LineUp(

datetime x1, datetime x2, double y1,

double y2, color lineColor, int lineStyle, int lineWidth)

{

//~~~~~~~~~~

ObjectDelete(upLabel);

ObjectCreate(upLabel, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(upLabel, OBJPROP_RAY, 0);

ObjectSet(upLabel, OBJPROP_COLOR, lineColor);

ObjectSet(upLabel, OBJPROP_STYLE, lineStyle);

ObjectSet(upLabel, OBJPROP_WIDTH, lineWidth);

//~~~~~~~~~~

}

void Trend_LineDn(

datetime x1, datetime x2, double y1,

double y2, color lineColor, int lineStyle, int lineWidth)

{

//~~~~~~~~~~

ObjectDelete(dnLabel);

ObjectCreate(dnLabel, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(dnLabel, OBJPROP_RAY, 0);

ObjectSet(dnLabel, OBJPROP_COLOR, lineColor);

ObjectSet(dnLabel, OBJPROP_STYLE, lineStyle);

ObjectSet(dnLabel, OBJPROP_WIDTH, lineWidth);

//~~~~~~~~~~

}

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

아이디어 좀 주실 수 있으신가요....??

감사해요

파일:
 

죄송합니다,

마지막 코드에 오타가 있습니다. 이것은 올바른 것입니다 :

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

//| myHorizontalLine2.mq4 |

//| Copyright 2013, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

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

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

#property indicator_chart_window

extern int smallEMAperiod = 3;

extern int bigEMAperiod = 21;

extern color lineColorUp = Lime;

extern int lineWidthUp = 2;

extern color lineColorDn = Red;

extern int lineWidthDn = 2;

//---

double getUpPrice=0, getDnPrice=0, prcBefore=0, prcAfter=0;

datetime getUpTime=0, endUpTime=0, getDnTime=0, endDnTime=0;

bool goingUp=false, goingDown=false;

string upLabel = "_myHorLineUp_";

string dnLabel = "_myHorLineDn_";

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

//| Custom indicator initialization function |

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

int init()

{

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

ObjectDelete(upLabel);

ObjectDelete(dnLabel);

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

int limit,i;

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---

for(i=0; i<limit; i++) {

double prevSmallEMA = iMA(NULL,60,smallEMAperiod,0,MODE_EMA,PRICE_CLOSE,i+1);

double curSmallEMA = iMA(NULL,60,smallEMAperiod,0,MODE_EMA,PRICE_CLOSE,i);

double prevBigEMA = iMA(NULL,60,bigEMAperiod,0,MODE_EMA,PRICE_CLOSE,i+1);

double curBigEMA = iMA(NULL,60,bigEMAperiod,0,MODE_EMA,PRICE_CLOSE,i);

if ((prevSmallEMA curBigEMA)) { // going up

getUpPrice = iClose(NULL,60,i);

getUpTime = Time;

goingUp = true;

goingDown = false;

}

else if ((prevSmallEMA >= prevBigEMA)&&(curSmallEMA < curBigEMA)) { // going down

getDnPrice = iClose(NULL,60,i);

getDnTime = Time;

goingDown = true;

goingUp = false;

}

}

//---

if (goingUp == true) {

for(i=0; i<limit; i++) {

prcBefore = iClose(NULL,60,i+1);

prcAfter = iClose(NULL,60,i);

if ((prcBefore >= getUpPrice)&&(prcAfter < getUpPrice)) {

endUpTime = Time;

}

else {

endUpTime = 0;

}

}

if (endUpTime != 0) {

Trend_LineUp(getUpTime,endUpTime,getUpPrice,getUpPrice,lineColorUp,STYLE_SOLID,lineWidthUp);

}

}

//---

if (goingDown == true) {

for(i=0; i<limit; i++) {

prcBefore = iClose(NULL,60,i+1);

prcAfter = iClose(NULL,60,i);

if ((prcBefore getDnPrice)) {

endDnTime = Time;

}

else {

endDnTime = 0;

}

}

if (endDnTime != 0) {

Trend_LineDn(getDnTime,endDnTime,getDnPrice,getDnPrice,lineColorDn,STYLE_SOLID,lineWidthDn);

}

}

//---

return(0);

}

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

void Trend_LineUp(

datetime x1, datetime x2, double y1,

double y2, color lineColor, int lineStyle, int lineWidth)

{

//~~~~~~~~~~

ObjectDelete(upLabel);

ObjectCreate(upLabel, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(upLabel, OBJPROP_RAY, 0);

ObjectSet(upLabel, OBJPROP_COLOR, lineColor);

ObjectSet(upLabel, OBJPROP_STYLE, lineStyle);

ObjectSet(upLabel, OBJPROP_WIDTH, lineWidth);

//~~~~~~~~~~

}

void Trend_LineDn(

datetime x1, datetime x2, double y1,

double y2, color lineColor, int lineStyle, int lineWidth)

{

//~~~~~~~~~~

ObjectDelete(dnLabel);

ObjectCreate(dnLabel, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(dnLabel, OBJPROP_RAY, 0);

ObjectSet(dnLabel, OBJPROP_COLOR, lineColor);

ObjectSet(dnLabel, OBJPROP_STYLE, lineStyle);

ObjectSet(dnLabel, OBJPROP_WIDTH, lineWidth);

//~~~~~~~~~~

}

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

 

안녕 믈라덴

매우 감사합니다. 알았어, 지금은 나아졌어 (아직 할 일이 많지만 ....하지만 지금은 행복합니다 .... )

*) 매우 간단한 것 :

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

//| myHorizontalLine1.mq4 |

//| Copyright 2013, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

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

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

#property indicator_chart_window

extern int getClosePrcOfCandleNr = 9;

extern color lineColorMain = Magenta;

extern int lineWidthMain = 2;

extern color lineColorNext = White;

int lineWidthNext = 1; // style dot muss max=1 width

extern int lineBeginOfCandleNr = 45;

extern int lineEndOfCandleNr = 21;

datetime curTimeStamp=0;

int beginOfDotLine, endOfDotLine;

string labelMain = "_HorLine5_";

string labelNext = "_HorLine5Next_";

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

//| Custom indicator initialization function |

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

int init()

{

curTimeStamp = Time[0];

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

ObjectDelete(labelMain);

ObjectDelete(labelNext);

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

if (curTimeStamp != Time[0]) {

curTimeStamp = Time[0];

lineBeginOfCandleNr++;

lineEndOfCandleNr++;

getClosePrcOfCandleNr++;

beginOfDotLine = lineEndOfCandleNr;

int beginMainCandle = iBarShift(NULL,0,Time[lineBeginOfCandleNr]);

int endMainCandle = iBarShift(NULL,0,Time[lineEndOfCandleNr]);

endOfDotLine = beginOfDotLine - (beginMainCandle - endMainCandle);

}

Trend_LineMain(Time[lineBeginOfCandleNr],Time[lineEndOfCandleNr],Close[getClosePrcOfCandleNr],Close[getClosePrcOfCandleNr],lineColorMain,STYLE_SOLID,lineWidthMain);

if (endOfDotLine > 0) { // muss positive

Trend_LineNext(Time,Time[endOfDotLine],Close[getClosePrcOfCandleNr],Close[getClosePrcOfCandleNr],lineColorNext,STYLE_DOT,lineWidthNext);

}

else {

Trend_LineNext(Time,Time[1],Close[getClosePrcOfCandleNr],Close[getClosePrcOfCandleNr],lineColorNext,STYLE_DOT,lineWidthNext);

}

return(0);

}

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

void Trend_LineMain(

datetime x1, datetime x2, double y1,

double y2, color lineColorMain, int lineStyle, int lineWidthMain)

{

//~~~~~~~~~~

ObjectDelete(labelMain);

ObjectCreate(labelMain, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(labelMain, OBJPROP_RAY, 0);

ObjectSet(labelMain, OBJPROP_COLOR, lineColorMain);

ObjectSet(labelMain, OBJPROP_STYLE, lineStyle);

ObjectSet(labelMain, OBJPROP_WIDTH, lineWidthMain);

//~~~~~~~~~~

}

void Trend_LineNext(

datetime x1, datetime x2, double y1,

double y2, color lineColorNext, int lineStyle, int lineWidthNext)

{

//~~~~~~~~~~

ObjectDelete(labelNext);

ObjectCreate(labelNext, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(labelNext, OBJPROP_RAY, 0);

ObjectSet(labelNext, OBJPROP_COLOR, lineColorNext);

ObjectSet(labelNext, OBJPROP_STYLE, lineStyle);

ObjectSet(labelNext, OBJPROP_WIDTH, lineWidthNext);

//~~~~~~~~~~

}

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

[/PHP]

And this is better ... :

[PHP]

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

//| myHorizontalLine3.mq4 |

//| Copyright 2013, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

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

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

#property indicator_chart_window

extern int getClosePrcOfCandleNr = 9;

extern color lineColorMain = Magenta;

extern int lineWidthMain = 2;

extern color lineColorNext = White;

int lineWidthNext = 1; // style dot muss max=1 width

extern int smallEMAperiod = 30;

extern int bigEMAperiod = 150;

extern int bars_limit = 1000;

datetime curTimeStamp=0;

int beginOfDotLine, endOfDotLine;

double getUpPrice=0, getDnPrice=0, prcBefore=0, prcAfter=0;

datetime getUpTime=0, endUpTime=0, getDnTime=0, endDnTime=0;

bool goingUp=false, goingDown=false;

string labelMain = "_HorLine8_";

string labelNext = "_HorLine8Next_";

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

//| Custom indicator initialization function |

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

int init()

{

curTimeStamp = Time[0];

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

ObjectDelete(labelMain);

ObjectDelete(labelNext);

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

int limit,i;

int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

if (limit>bars_limit-1 && bars_limit!=0) limit=bars_limit-1;

//---

for(i=limit; i>0; i--) { // decrement here ....

double prevSmallEMA = iMA(NULL,0,smallEMAperiod,0,MODE_EMA,PRICE_CLOSE,i+1);

double curSmallEMA = iMA(NULL,0,smallEMAperiod,0,MODE_EMA,PRICE_CLOSE,i);

double prevBigEMA = iMA(NULL,0,bigEMAperiod,0,MODE_EMA,PRICE_CLOSE,i+1);

double curBigEMA = iMA(NULL,0,bigEMAperiod,0,MODE_EMA,PRICE_CLOSE,i);

if ((prevSmallEMA curBigEMA)) { // going up

///// getUpPrice = iClose(NULL,0,i);

getUpPrice = (prevSmallEMA + curSmallEMA)/2;

getUpTime = Time;

goingUp = true;

goingDown = false;

int getUpCandle = iBarShift(NULL,0,getUpTime);

prcBefore = iClose(NULL,0,i+1);

prcAfter = iClose(NULL,0,i);

if ((prcBefore >= getUpPrice)&&(prcAfter < getUpPrice)) {

if (Time > getUpTime) {

endUpTime = Time;

int endUpCandle = iBarShift(NULL,0,endUpTime);

}

}

else {

endUpTime = Time[0];

endUpCandle = 0;

}

//---

if (curTimeStamp != Time[0]) {

curTimeStamp = Time[0];

getUpCandle++;

endUpCandle++;

beginOfDotLine = endUpCandle;

int beginMainCandle = iBarShift(NULL,0,Time[getUpCandle]);

int endMainCandle = iBarShift(NULL,0,Time[endUpCandle]);

endOfDotLine = beginOfDotLine - (beginMainCandle - endMainCandle);

}

Trend_LineMain(Time[getUpCandle],Time[endUpCandle],getUpPrice,getUpPrice,lineColorMain,STYLE_SOLID,lineWidthMain);

if (endOfDotLine > 0) { // muss positive

Trend_LineNext(Time,Time[endOfDotLine],getUpPrice,getUpPrice,lineColorNext,STYLE_DOT,lineWidthNext);

}

else {

Trend_LineNext(Time,Time[1],getUpPrice,getUpPrice,lineColorNext,STYLE_DOT,lineWidthNext);

}

//---

goingUp = false;

}

else if ((prevSmallEMA >= prevBigEMA)&&(curSmallEMA < curBigEMA)) { // going down

getDnPrice = iClose(NULL,0,i);

getDnTime = Time;

goingDown = true;

goingUp = false;

int getDnCandle = iBarShift(NULL,0,getDnTime);

//-- to do .....

goingDown = false;

}

} // ende for

//---

return(0);

}

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

void Trend_LineMain(

datetime x1, datetime x2, double y1,

double y2, color lineColorMain, int lineStyle, int lineWidthMain)

{

//~~~~~~~~~~

ObjectDelete(labelMain);

ObjectCreate(labelMain, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(labelMain, OBJPROP_RAY, 0);

ObjectSet(labelMain, OBJPROP_COLOR, lineColorMain);

ObjectSet(labelMain, OBJPROP_STYLE, lineStyle);

ObjectSet(labelMain, OBJPROP_WIDTH, lineWidthMain);

//~~~~~~~~~~

}

void Trend_LineNext(

datetime x1, datetime x2, double y1,

double y2, color lineColorNext, int lineStyle, int lineWidthNext)

{

//~~~~~~~~~~

ObjectDelete(labelNext);

ObjectCreate(labelNext, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(labelNext, OBJPROP_RAY, 0);

ObjectSet(labelNext, OBJPROP_COLOR, lineColorNext);

ObjectSet(labelNext, OBJPROP_STYLE, lineStyle);

ObjectSet(labelNext, OBJPROP_WIDTH, lineWidthNext);

//~~~~~~~~~~

}

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

 
pedma:
안녕 믈라덴

매우 감사합니다. 알았어, 지금은 나아졌어 (아직 할 일이 많지만 ....하지만 지금은 행복합니다 .... )

*) 매우 간단한 것 :

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

//| myHorizontalLine1.mq4 |

//| Copyright 2013, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

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

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

#property indicator_chart_window

extern int getClosePrcOfCandleNr = 9;

extern color lineColorMain = Magenta;

extern int lineWidthMain = 2;

extern color lineColorNext = White;

int lineWidthNext = 1; // style dot muss max=1 width

extern int lineBeginOfCandleNr = 45;

extern int lineEndOfCandleNr = 21;

datetime curTimeStamp=0;

int beginOfDotLine, endOfDotLine;

string labelMain = "_HorLine5_";

string labelNext = "_HorLine5Next_";

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

//| Custom indicator initialization function |

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

int init()

{

curTimeStamp = Time[0];

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

ObjectDelete(labelMain);

ObjectDelete(labelNext);

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

if (curTimeStamp != Time[0]) {

curTimeStamp = Time[0];

lineBeginOfCandleNr++;

lineEndOfCandleNr++;

getClosePrcOfCandleNr++;

beginOfDotLine = lineEndOfCandleNr;

int beginMainCandle = iBarShift(NULL,0,Time[lineBeginOfCandleNr]);

int endMainCandle = iBarShift(NULL,0,Time[lineEndOfCandleNr]);

endOfDotLine = beginOfDotLine - (beginMainCandle - endMainCandle);

}

Trend_LineMain(Time[lineBeginOfCandleNr],Time[lineEndOfCandleNr],Close[getClosePrcOfCandleNr],Close[getClosePrcOfCandleNr],lineColorMain,STYLE_SOLID,lineWidthMain);

if (endOfDotLine > 0) { // muss positive

Trend_LineNext(Time,Time[endOfDotLine],Close[getClosePrcOfCandleNr],Close[getClosePrcOfCandleNr],lineColorNext,STYLE_DOT,lineWidthNext);

}

else {

Trend_LineNext(Time,Time[1],Close[getClosePrcOfCandleNr],Close[getClosePrcOfCandleNr],lineColorNext,STYLE_DOT,lineWidthNext);

}

return(0);

}

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

void Trend_LineMain(

datetime x1, datetime x2, double y1,

double y2, color lineColorMain, int lineStyle, int lineWidthMain)

{

//~~~~~~~~~~

ObjectDelete(labelMain);

ObjectCreate(labelMain, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(labelMain, OBJPROP_RAY, 0);

ObjectSet(labelMain, OBJPROP_COLOR, lineColorMain);

ObjectSet(labelMain, OBJPROP_STYLE, lineStyle);

ObjectSet(labelMain, OBJPROP_WIDTH, lineWidthMain);

//~~~~~~~~~~

}

void Trend_LineNext(

datetime x1, datetime x2, double y1,

double y2, color lineColorNext, int lineStyle, int lineWidthNext)

{

//~~~~~~~~~~

ObjectDelete(labelNext);

ObjectCreate(labelNext, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(labelNext, OBJPROP_RAY, 0);

ObjectSet(labelNext, OBJPROP_COLOR, lineColorNext);

ObjectSet(labelNext, OBJPROP_STYLE, lineStyle);

ObjectSet(labelNext, OBJPROP_WIDTH, lineWidthNext);

//~~~~~~~~~~

}

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

[/PHP]

And this is better ... :

[PHP]

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

//| myHorizontalLine3.mq4 |

//| Copyright 2013, MetaQuotes Software Corp. |

//| http://www.metaquotes.net |

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

#property copyright "Copyright 2013, MetaQuotes Software Corp."

#property link "http://www.metaquotes.net"

#property indicator_chart_window

extern int getClosePrcOfCandleNr = 9;

extern color lineColorMain = Magenta;

extern int lineWidthMain = 2;

extern color lineColorNext = White;

int lineWidthNext = 1; // style dot muss max=1 width

extern int smallEMAperiod = 30;

extern int bigEMAperiod = 150;

extern int bars_limit = 1000;

datetime curTimeStamp=0;

int beginOfDotLine, endOfDotLine;

double getUpPrice=0, getDnPrice=0, prcBefore=0, prcAfter=0;

datetime getUpTime=0, endUpTime=0, getDnTime=0, endDnTime=0;

bool goingUp=false, goingDown=false;

string labelMain = "_HorLine8_";

string labelNext = "_HorLine8Next_";

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

//| Custom indicator initialization function |

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

int init()

{

curTimeStamp = Time[0];

return(0);

}

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

//| Custom indicator deinitialization function |

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

int deinit()

{

ObjectDelete(labelMain);

ObjectDelete(labelNext);

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

int limit,i;

int counted_bars=IndicatorCounted();

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

if (limit>bars_limit-1 && bars_limit!=0) limit=bars_limit-1;

//---

for(i=limit; i>0; i--) { // decrement here ....

double prevSmallEMA = iMA(NULL,0,smallEMAperiod,0,MODE_EMA,PRICE_CLOSE,i+1);

double curSmallEMA = iMA(NULL,0,smallEMAperiod,0,MODE_EMA,PRICE_CLOSE,i);

double prevBigEMA = iMA(NULL,0,bigEMAperiod,0,MODE_EMA,PRICE_CLOSE,i+1);

double curBigEMA = iMA(NULL,0,bigEMAperiod,0,MODE_EMA,PRICE_CLOSE,i);

if ((prevSmallEMA curBigEMA)) { // going up

///// getUpPrice = iClose(NULL,0,i);

getUpPrice = (prevSmallEMA + curSmallEMA)/2;

getUpTime = Time;

goingUp = true;

goingDown = false;

int getUpCandle = iBarShift(NULL,0,getUpTime);

prcBefore = iClose(NULL,0,i+1);

prcAfter = iClose(NULL,0,i);

if ((prcBefore >= getUpPrice)&&(prcAfter < getUpPrice)) {

if (Time > getUpTime) {

endUpTime = Time;

int endUpCandle = iBarShift(NULL,0,endUpTime);

}

}

else {

endUpTime = Time[0];

endUpCandle = 0;

}

//---

if (curTimeStamp != Time[0]) {

curTimeStamp = Time[0];

getUpCandle++;

endUpCandle++;

beginOfDotLine = endUpCandle;

int beginMainCandle = iBarShift(NULL,0,Time[getUpCandle]);

int endMainCandle = iBarShift(NULL,0,Time[endUpCandle]);

endOfDotLine = beginOfDotLine - (beginMainCandle - endMainCandle);

}

Trend_LineMain(Time[getUpCandle],Time[endUpCandle],getUpPrice,getUpPrice,lineColorMain,STYLE_SOLID,lineWidthMain);

if (endOfDotLine > 0) { // muss positive

Trend_LineNext(Time,Time[endOfDotLine],getUpPrice,getUpPrice,lineColorNext,STYLE_DOT,lineWidthNext);

}

else {

Trend_LineNext(Time,Time[1],getUpPrice,getUpPrice,lineColorNext,STYLE_DOT,lineWidthNext);

}

//---

goingUp = false;

}

else if ((prevSmallEMA >= prevBigEMA)&&(curSmallEMA < curBigEMA)) { // going down

getDnPrice = iClose(NULL,0,i);

getDnTime = Time;

goingDown = true;

goingUp = false;

int getDnCandle = iBarShift(NULL,0,getDnTime);

//-- to do .....

goingDown = false;

}

} // ende for

//---

return(0);

}

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

void Trend_LineMain(

datetime x1, datetime x2, double y1,

double y2, color lineColorMain, int lineStyle, int lineWidthMain)

{

//~~~~~~~~~~

ObjectDelete(labelMain);

ObjectCreate(labelMain, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(labelMain, OBJPROP_RAY, 0);

ObjectSet(labelMain, OBJPROP_COLOR, lineColorMain);

ObjectSet(labelMain, OBJPROP_STYLE, lineStyle);

ObjectSet(labelMain, OBJPROP_WIDTH, lineWidthMain);

//~~~~~~~~~~

}

void Trend_LineNext(

datetime x1, datetime x2, double y1,

double y2, color lineColorNext, int lineStyle, int lineWidthNext)

{

//~~~~~~~~~~

ObjectDelete(labelNext);

ObjectCreate(labelNext, OBJ_TREND, 0, x1, y1, x2, y2, 0, 0);

ObjectSet(labelNext, OBJPROP_RAY, 0);

ObjectSet(labelNext, OBJPROP_COLOR, lineColorNext);

ObjectSet(labelNext, OBJPROP_STYLE, lineStyle);

ObjectSet(labelNext, OBJPROP_WIDTH, lineWidthNext);

//~~~~~~~~~~

}

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

좋은 더 행복한 코딩과 거래