Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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