Горизонтальные линии - страница 7

 

Plot Lines(15)/price/Color/Width/Style Я написал это сам

Здравствуйте, пожалуйста, помогите мне завершить это, добавив только удаление для линии, сделанной ранее, и код, чтобы программа запускалась только один раз при первоначальном применении к графику и при открытии и изменении, т.е....цена цвет стиль и т.д.... Спасибо, и я также размещаю скрипт, хотя я думаю, что скрипт работает просто отлично, но также я благодарю тех, кто может помочь мне сопоставить это и надеюсь, что это работает для тех, кому это нужно или нужно изменить его, чтобы соответствовать их потребностям, я надеюсь, что мои коллеги трейдеры могут извлечь выгоду из моего самого первого индикатора, который я лично написал после learnign, как написать его из моего стиля обучения. Еще раз спасибо.

plot_lines.mq4

plot_lines_1.mq4

Файлы:
 

Здравствуйте,

Кто-нибудь может модифицировать этот индикатор (MT_breakout.mq4) так, чтобы он не удалял линию на новом тике? Спасибо.

(Индикатор находится в этом посте: https: //www.mql5.com/en/forum/172989/page3)

 

Ценовые уровни с расстоянием x пипсов

Я также искал индикатор, который рисует несколько линий на расстоянии х пунктов от базовой цены, но не смог найти ни одной. Поэтому я сделал индикатор на основе "Plot Lines", размещенного выше.

Вы можете выбрать 7 уровней вверх или вниз и выбрать расстояние, на котором вы хотите, чтобы линия была построена. Расстояние рассчитывается в пунктах от базовой цены.

По умолчанию установлены 4 уровня: 30, 70, 100 и 130 пунктов.

Это должно помочь увидеть тейк-профиты, если вы используете фиксированные уровни прибыли в пунктах.

Надеюсь, это поможет. Будьте здоровы.

 

Уважаемый Air Quest,

Я должен поблагодарить вас за то, что вы поделились своим индикатором x Pips. Я только что перетащил его на график mt4, но он не отображается, я не вижу никакой линии, что с ним не так. Пожалуйста, проконсультируйте меня по этому вопросу.

Спасибо и с уважением

 

Здравствуйте,

Не могли бы вы показать мне, как сделать горизонтальную линию вот так? Обычно на дырявых графиках горизонтальная линия рисуется слева направо. Я хочу, чтобы она рисовала сплошную линию от заданной цены и заканчивалась на том же ценовом уровне. Затем она нарисует другую точечную линию той же длины. Пример: сплошная пурпурная линия нарисована на цене 1.2324, цена идет вниз. После того, как цена снова пойдет вверх и достигнет этого уровня, сплошная пурпурная линия должна закончиться. Эта сплошная пурпурная линия имеет, например, 100 свечей, поэтому белая точечная линия должна быть проведена на том же уровне для следующих 100 свечей.

Пожалуйста, помогите мне сделать это, или дайте мне ссылку на пример, как это сделать.

Спасибо

Файлы:
 
pedma:
Привет,

Не могли бы вы показать мне, как сделать горизонтальную линию вот так? Обычно на дырявых графиках горизонтальная линия рисуется слева направо. Я хочу, чтобы она рисовала сплошную линию от заданной цены и заканчивалась на том же ценовом уровне. Затем она нарисует другую точечную линию той же длины. Пример: сплошная пурпурная линия нарисована на цене 1.2324, цена идет вниз. После того, как цена снова пойдет вверх и достигнет этого уровня, сплошная пурпурная линия должна закончиться. Эта сплошная пурпурная линия имеет, например, 100 свечей, поэтому белая точечная линия должна быть проведена на том же уровне для следующих 100 свечей.

Пожалуйста, помогите мне сделать это или дайте мне ссылку на пример, как это сделать.

Спасибо

Используйте для этого OBJECT_TRENDLINE вместо OBJECT_HLINE и у вас все получится.

 
mladen:
Используйте для этого OBJECT_TRENDLINE вместо OBJECT_HLINE и у вас все получится.

Привет, Младен,

Большое спасибо. Я могу нарисовать горизонтальную линию, используя код ниже:

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

//| 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);

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

}

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

Хорошо Счастливого дальнейшего кодирования и торговли