Líneas horizontales - página 7

 

Plot Lines(15)/price/Color/Width/Style He escrito esto yo mismo

Hola por favor ayudenme a completar esto y solo agregando un borrado para la linea previamente hecha y un codigo para hacer que el programa solo se ejecute una vez cuando se aplique aorginalmente al grafico y si se abre y se cambia, es decir...precio color estilo etc... gracias y tambien estoy publicando el script aunque creo que el script funciona bien pero tambien agradezco a quien me pueda ayudar a copletar esto y espero que funcione para quien lo necesite o necesite cambiarlo para que se adapte a sus necesidades, espero que mis compañeros comerciantes puedan beneficiarse de mi primer indicador que yo personalmente escribí después de aprender a escribirlo desde mi estilo de aprendizaje. Gracias de nuevo.

plot_lines.mq4

plot_lines_1.mq4

Archivos adjuntos:
 

Hola,

¿Puede alguien modificar este indicador (MT_breakout.mq4) para que no borre la línea en un nuevo tick? Gracias.

(El indicador está en este post : https://www.mql5.com/en/forum/172989/page3)

 

Niveles de precios a x pips de distancia

También he estado buscando un indicador que dibuje varias líneas a un nivel de distancia de x pips de un precio de referencia, pero no he podido encontrar ninguno. Así que he hecho un indicador basado en "Plot Lines" publicado anteriormente.

Puedes elegir 7 niveles hacia arriba o hacia abajo y seleccionar la distancia a la que quieres que se trace la línea. La distancia se calcula en puntos desde el precio de referencia.

Se establecen 4 niveles por defecto: 30, 70, 100 y 130 pips.

Debería ayudar a ver la toma de beneficios si utiliza niveles de beneficios fijos en pips.

Espero que le sirva de ayuda. Saludos.

Archivos adjuntos:
 

Querida búsqueda de aire,

Debo agradecerle por compartir su indicador x Pips. Acabo de arrastrarlo a mt4 gráfico, pero no sale, no veo ninguna línea aparecen, lo que está mal con él. Por favor, aconséjeme sobre ello.

Gracias y saludos

 

Hola,

¿Puede mostrarme cómo hacer la línea horizontal así? Normalmente se dibuja una línea horizontal en los gráficos de agujero, de izquierda a derecha. Lo que quiero es que se dibuje una línea sólida a partir de un precio determinado, y que termine en el mismo nivel de precio. Luego dibujará otra línea de puntos de la misma longitud. Ejemplo: la línea sólida magenta se dibuja en el precio 1.2324, el precio baja. Después de que el precio vuelva a subir y alcance ese nivel, la línea sólida magenta debe terminar. Esta línea sólida magenta tiene 100 velas por ejemplo, por lo que la línea de puntos blancos debe dibujarse en el mismo nivel para las siguientes 100 velas.

Por favor, ayúdenme a hacerlo, o denme un enlace de ejemplo de cómo hacer esto.

Gracias

Archivos adjuntos:
 
pedma:
Hola,

¿Puede mostrarme cómo hacer la línea horizontal así? Normalmente se dibuja una línea horizontal en los gráficos de agujero, de izquierda a derecha. Lo que quiero es que dibuje una línea sólida a partir de un precio específico, y que termine en el mismo nivel de precio. Luego dibujará otra línea de puntos de la misma longitud. Ejemplo: la línea sólida magenta se dibuja en el precio 1.2324, el precio baja. Después de que el precio vuelva a subir y alcance ese nivel, la línea sólida magenta debe terminar. Esta línea sólida magenta tiene 100 velas por ejemplo, por lo que la línea de puntos blancos debe dibujarse en el mismo nivel para las siguientes 100 velas.

Por favor, ayúdenme a hacerlo, o denme un enlace de ejemplo de cómo hacer esto.

Gracias

Usa OBJECT_TRENDLINE para eso en vez de OBJECT_HLINE y podrás hacerlo

 
mladen:
Usa OBJECT_TRENDLINE para eso en lugar de OBJECT_HLINE y podrás hacerlo

Hola mladen,

Muchas gracias. Puedo dibujar una línea horizontal usando el código de abajo :

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

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

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

}

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

¿Puedes dar alguna idea ....?

Gracias

Archivos adjuntos:
 

Lo siento,

El hay algún error tipográfico en el último código. Este es el correcto:

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

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

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

}

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

 

Hola Mladen,

Muchas gracias. Ya lo tengo, ya está mejor (aunque todavía le queda mucho por hacer .... pero ya estoy contento .... )

*) el muy simple :

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

//| 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:
Hola Mladen,

Muchas gracias. Ya lo tengo, ya está mejor (aunque todavía le queda mucho por hacer .... pero ya estoy contento .... )

*) el muy simple :

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

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

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

}

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

Bueno Feliz más codificación y el comercio

Razón de la queja: