Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Linhas de Lote(15)/preço/Cor/ Largura/Estilo Eu mesmo escrevi isto
Olá, por favor, me ajude a completar isto e adicionando apenas uma exclusão para a linha previamente feita e código para fazer o programa funcionar apenas uma vez quando aorginaly aplicado ao gráfico e se aberto e alterado, ou seja, estilo de cor do preço etc... obrigado e eu também estou postando o script embora eu ache que o script funciona muito bem, mas também agradeço a quem pode me ajudar e espero que ele funcione para quem sempre precisar dele ou precisar mudá-lo para se adequar às suas necessidades, espero que meus colegas comerciantes possam se beneficiar do meu primeiro indicador que eu pessoalmente escrevi depois de aprender como escrevê-lo a partir do meu estilo de aprendizagem. Mais uma vez, obrigado.
plot_lines.mq4
linhas_do_lote_1.mq4
Olá,
Qualquer pessoa pode modificar este indicador (MT_breakout.mq4) para que ele não apague a linha no novo tick ? Obrigado.
(O indicador está neste post : https://www.mql5.com/en/forum/172989/page3)
x Distâncias de Pips Níveis de preços
Também tenho procurado um indicador que traça várias linhas até o nível x pips de distância de um preço de referência, mas não consegui encontrar nenhum. Por isso, fiz um indicador baseado em "Linhas de Plotagem" postado acima.
Você pode escolher 7 níveis para cima ou para baixo e selecionar a distância que deseja que a linha seja traçada. A distância é calculada em pontos a partir do preço de referência.
4 níveis padrão são definidos: 30, 70, 100 e 130 pips.
Deve ajudar a ver os lucros se você usar níveis de lucros fixos em pips.
Espero que ajude. Abraço.
Prezada busca aérea,
Devo agradecer-lhe por compartilhar seu indicador x Pips. Acabo de arrastá-lo para o gráfico mt4, mas ele não sai, não vejo nenhuma linha aparecer, o que há de errado com ele. Por favor, por favor, me informe sobre isso.
Obrigado e cumprimentos
Hi,
Você pode me mostrar como fazer uma linha horizontal como esta ? Normalmente uma linha horizontal é traçada nas tabelas de furos, da esquerda para a direita. O que eu quero é que ela desenhe uma linha sólida a partir de um preço especificado, e termine com o mesmo nível de preço que é tocado. Depois, desenhará outra linha de pontos para o mesmo comprimento. Exemplo: a linha magenta sólida é traçada ao preço 1,2324 , o preço desce. Após o preço voltar a subir e atingir esse nível, a linha magenta sólida deve terminar. Esta linha magenta sólida tem 100 velas, por exemplo, então a linha de ponto branco deve ser desenhada no mesmo nível para as próximas 100 velas.
Por favor, me ajude a fazer isso, ou me dê um link de exemplo de como fazer isso.
Obrigado
Hi,
Você pode me mostrar como fazer uma linha horizontal como esta ? Normalmente uma linha horizontal é traçada nos gráficos de furos, da esquerda para a direita. O que eu quero é que ela desenhe uma linha sólida a partir de um preço especificado, e termine com o mesmo nível de preço que é tocado. Depois, desenhará outra linha de pontos para o mesmo comprimento. Exemplo: a linha magenta sólida é traçada ao preço 1,2324 , o preço desce. Após o preço voltar a subir e atingir esse nível, a linha magenta sólida deve terminar. Esta linha magenta sólida tem 100 velas, por exemplo, então a linha de ponto branco deve ser desenhada no mesmo nível para as próximas 100 velas.
Por favor, me ajude a fazer isso, ou me dê um link de exemplo de como fazer isso.
ObrigadoUse OBJECT_TRENDLINE para isso ao invés de OBJECT_HLINE e você será capaz de fazer isso
Use OBJECT_TRENDLINE para isso ao invés de OBJECT_HLINE e você será capaz de fazer isso
Oi mladen,
Muito obrigado. Posso traçar uma linha horizontal usando o código abaixo :
//| 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);
//~~~~~~~~~~
}
//+------------------------------------------------------------------+
Você pode dar alguma idéia ....???
Obrigado
Desculpe,
Existem alguns erros de digitação no último código. Este é o correto:
//+------------------------------------------------------------------+
//| 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);
//~~~~~~~~~~
}
//+------------------------------------------------------------------+
Olá, Mladen,
Muito obrigado. Consegui, está melhor agora (embora ainda tenha muito a fazer .... mas agora estou feliz .... )
*) a muito simples :
//+------------------------------------------------------------------+
//| 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);
//~~~~~~~~~~
}
//+------------------------------------------------------------------+
Olá, Mladen,
Muito obrigado. Consegui, está melhor agora (embora ainda tenha muito a fazer .... mas agora estou feliz .... )
*) a muito simples :
//+------------------------------------------------------------------+
//| 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);
//~~~~~~~~~~
}
//+------------------------------------------------------------------+
Bom Feliz mais codificação e negociação