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.
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.
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.
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.
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
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 ....
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
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
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.
GrazieUsa OBJECT_TRENDLINE per questo invece di OBJECT_HLINE e sarai in grado di farlo
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
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);
//~~~~~~~~~~
}
//+------------------------------------------------------------------+
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