Linee orizzontali - pagina 7

 

Plot Lines(15)/price/Color/Width/Style L'ho scritto io

Ciao per favore aiutatemi a completare questo e aggiungendo solo una cancellazione per la linea precedentemente fatta e il codice per rendere il programma solo eseguito una volta quando aorginaly applicato al grafico e se aperto e cambiato, cioè ... prezzo colore stile ecc ... Grazie e sto anche pubblicando lo script anche se penso che lo script funziona bene, ma ringrazio anche chi può aiutarmi a completare questo e spero che funzioni per chiunque ne abbia bisogno o abbia bisogno di cambiarlo per adattarlo alle sue esigenze, spero che i miei colleghi trader possano beneficiare del mio primo indicatore che ho scritto personalmente dopo aver imparato a scriverlo dal mio stile di apprendimento. Grazie ancora.

tracciare_linee.mq4

plot_lines_1.mq4

File:
 

Salve,

Qualcuno può modificare questo indicatore (MT_breakout.mq4) in modo che non cancelli la linea sul nuovo tick? Grazie.

(L'indicatore è su questo post: https: //www.mql5.com/en/forum/172989/page3)

 

Livelli di prezzo a distanza di x pip

Ho anche cercato un indicatore che disegna diverse linee a livello di distanza x pips da un prezzo di riferimento, ma non sono riuscito a trovarne nessuno. Così ho fatto un indicatore basato su "Plot Lines" postato sopra.

Puoi scegliere 7 livelli in alto o in basso e selezionare la distanza che vuoi che la linea sia tracciata. La distanza è calcolata in punti dal prezzo di riferimento.

Sono impostati 4 livelli predefiniti: 30, 70, 100 e 130 pips.

Dovrebbe aiutare a vedere i take profit se si usano livelli di profitto fissi in pip.

Spero che sia utile. Grazie.

 

Cara ricerca dell'aria,

Devo ringraziarti per aver condiviso il tuo indicatore x Pips. L'ho appena trascinato nel grafico di mt4 ma non esce, non vedo apparire nessuna linea, cosa c'è che non va. Vi prego gentilmente di consigliarmi su di esso.

Grazie e saluti

 

Ciao,

Puoi mostrarmi come fare la linea orizzontale in questo modo? Normalmente una linea orizzontale è disegnata nei grafici a foro, da sinistra a destra. Quello che voglio è disegnare una linea solida a partire da un prezzo specifico, e terminerà allo stesso livello di prezzo. Poi disegnerà un'altra linea di punti della stessa lunghezza. Esempio: la linea solida magenta è disegnata al prezzo 1.2324, il prezzo scende. Dopo che il prezzo risale e raggiunge quel livello, la linea solida magenta deve terminare. Questa linea solida magenta ha 100 candele per esempio, quindi la linea a punti bianca deve essere disegnata allo stesso livello per le prossime 100 candele.

Per favore aiutatemi a farlo, o datemi un link di esempio su come fare questo.

Grazie

File:
 
pedma:
Ciao,

Puoi mostrarmi come fare la linea orizzontale in questo modo? Normalmente una linea orizzontale è disegnata nei grafici a foro, da sinistra a destra. Quello che voglio è disegnare una linea solida a partire da un prezzo specifico, e terminerà allo stesso livello di prezzo. Poi disegnerà un'altra linea di punti della stessa lunghezza. Esempio: la linea solida magenta è disegnata al prezzo 1.2324, il prezzo scende. Dopo che il prezzo risale e raggiunge quel livello, la linea solida magenta deve terminare. Questa linea solida magenta ha 100 candele per esempio, quindi la linea a punti bianca deve essere disegnata allo stesso livello per le prossime 100 candele.

Per favore aiutatemi a farlo, o datemi un link di esempio su come farlo.

Grazie

Usa OBJECT_TRENDLINE per questo invece di OBJECT_HLINE e sarai in grado di farlo

 
mladen:
Usa OBJECT_TRENDLINE per questo invece di OBJECT_HLINE e sarai in grado di farlo

Ciao mladen,

Grazie mille. Posso disegnare una linea orizzontale usando il codice qui sotto:

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

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

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

}

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

Puoi per favore dare qualche idea ....??

Grazie

File:
 

Mi dispiace,

Ci sono dei refusi nell'ultimo codice. Questo è quello giusto:

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

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

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

}

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

 

Ciao Mladen,

Grazie mille. Ho capito, è meglio ora (anche se ha ancora molto da fare .... ma sono felice ora .... )

*) quello molto semplice :

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

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

Grazie mille. Ho capito, ora va meglio (anche se ha ancora molto da fare .... ma sono contento ora .... )

*) quello molto semplice :

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

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

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

}

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

Buona Felice ulteriore codifica e trading

Motivazione: