....
Você pode consultar a documentação referente ao que deseja.
Para desenhar o objeto desejado:
Objetos de Linhas - Objetos gráficos - Biblioteca Padrão - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
Obter informações de preços:
Séries Temporais e Acesso a Indicadores - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
Você pode consultar a documentação referente ao que deseja.
Para desenhar o objeto desejado:
Objetos de Linhas - Objetos gráficos - Biblioteca Padrão - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
Obter informações de preços:
Séries Temporais e Acesso a Indicadores - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
Jonathan, boa noite.
Muito obrigado pelo envio do material, dei uma estudada e realizei o código com base alguns modelos, porém as linhas aparecem somente na barra atual.
Ou seja não é guardado no gráfico as linhas anteriores. Realizei alguns teste manualmente e acredito que tem haver com nome do objeto LinhaAbertura (como sempre é o mesmo nome ele considera a última informação).
Teste realizado: Alterei o nome LinhaAbertura para LinhaAbertura1 e compilei ai no grafico ficou guardado as duas linhas horizontais (LinhaAbertura e LinhaAbertura1).
Nota: Não sei se existe uma string variavel que vai mudando LinhaAbertura1, LinhaAbertura2, LinhaAbertura3, 4, 5,6,7,8......
Agradeço se alguém poder me ajudar, sou leigo no assunto, minha cabeça fritou!!!
#property indicator_chart_window #property indicator_buffers 3 double op[],cl[]; double Abertura; int OnInit() { SetIndexBuffer(0,op,INDICATOR_DATA); SetIndexBuffer(1,cl,INDICATOR_DATA); return(INIT_SUCCEEDED); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &Time[], const double &Open[], const double &High[], const double &Low[], const double &Close[], const long &TickVolume[], const long &Volume[], const int &Spread[]) { int i = 0; if(prev_calculated == 0) i = 1; else i = prev_calculated-1; while(i < rates_total){ op[i] = Open[i]; cl[i] = Close[i]; Abertura= op[i]; if (op[i]>cl[i] && op[i]<cl[i-1]) //Abertura da primeira barra menor que o Fechamento da segunda barra (gap de baixa linha laranja) { CriarLinhaH(0,0,"LinhaAbertura",Abertura,clrOrange,STYLE_DOT,1,true,false,true,"Candle de abertura"); } else if (op[i]<cl[i] && op[i]>cl[i-1]) //Abertura da primeira barra maior que o Fechamento da segunda barra (gap de alta linha azul) { CriarLinhaH(0,0,"LinhaAbertura",Abertura,clrBlue,STYLE_DOT,1,true,false,true,"Candle de abertura"); } else { CriarLinhaH(0,0,"LinhaAbertura",Abertura,clrWhite,STYLE_DOT,1,true,false,true,"Candle de abertura"); // demais linha branca } i++; } return(rates_total-1); } //CÓDIGO PARA A CRIAÇÃO DE LINHAS HORIZONTAIS: void CriarLinhaH(const long janela, const int subjanela, const string nome, double preco, color cor, const ENUM_LINE_STYLE estilo, const int tamanho, const bool oculto, const bool fundo, bool selecionavel, string dica_=NULL) { if (ObjectFind(janela,nome)==-1) //{ObjectCreate(janela,nome,OBJ_HLINE,subjanela,0,preco);} ObjectCreate(janela,nome,OBJ_HLINE,subjanela,0,preco); ObjectSetDouble(janela,nome,OBJPROP_PRICE,preco); ObjectSetInteger(janela,nome,OBJPROP_COLOR,cor); ObjectSetInteger(janela,nome,OBJPROP_STYLE,estilo); ObjectSetInteger(janela,nome,OBJPROP_WIDTH,tamanho); ObjectSetInteger(janela,nome,OBJPROP_HIDDEN,oculto); ObjectSetInteger(janela,nome,OBJPROP_BACK,fundo); ObjectSetInteger(janela,nome,OBJPROP_SELECTABLE,selecionavel); ObjectSetString(janela,nome,OBJPROP_TOOLTIP,dica_); }
Jonathan, boa noite.
Muito obrigado pelo envio do material, dei uma estudada e realizei o código com base alguns modelos, porém as linhas aparecem somente na barra atual.
Ou seja não é guardado no gráfico as linhas anteriores. Realizei alguns teste manualmente e acredito que tem haver com nome do objeto LinhaAbertura (como sempre é o mesmo nome ele considera a última informação).
Teste realizado: Alterei o nome LinhaAbertura para LinhaAbertura1 e compilei ai no grafico ficou guardado as duas linhas horizontais (LinhaAbertura e LinhaAbertura1).
Nota: Não sei se existe uma string variavel que vai mudando LinhaAbertura1, LinhaAbertura2, LinhaAbertura3, 4, 5,6,7,8......
Agradeço se alguém poder me ajudar, sou leigo no assunto, minha cabeça fritou!!!
Realizei alteração no código e as linhas estão sendo criadas, porém preciso alterar a logica do int linha pois esta sendo criada varias linhas no mesmo preço, pois o contador esta por tick.
Exemplo se no periodo de um minuto tem 20 ticks e criado 20 linhas no memo preço.
Alguem tem uma solução para que só altere o número do contador a cada nova vela?
Segue novo código.
Parte a ser corrigida:
int Linha = 0;
Linha +=1;
#property indicator_chart_window
double Open1,Open2,Close1,Close2;
int Linha = 0;
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
Open1 =iOpen(_Symbol,PERIOD_M1,1);
Open2 =iOpen(_Symbol,PERIOD_M1,2);
Close1=iClose(_Symbol,PERIOD_M1,1);
Close1=iClose(_Symbol,PERIOD_M1,2);
Linha +=1;
Comment(Linha);
if (Open1>Close1 && Open1>Close2) //Abertura da primeira barra maior que o Fechamento da segunda barra (gap invertido/linha amarela)
{
CriarLinhaH(0,0,IntegerToString(Linha),Open1,clrRed,STYLE_DOT,1,true,false,true,"Fechamento do dia");
}
else
CriarLinhaH(0,0,IntegerToString(Linha),Open1,clrWhite,STYLE_DOT,1,true,false,true,"Fechamento do dia");
return(rates_total);
}
//CÓDIGO PARA A CRIAÇÃO DE LINHAS HORIZONTAIS:
void CriarLinhaH(const long janela,
const int subjanela,
const string nome,
double preco,
color cor,
const ENUM_LINE_STYLE estilo,
const int tamanho,
const bool oculto,
const bool fundo,
bool selecionavel,
string dica_=NULL)
{
if (ObjectFind(janela,nome)==-1)
//{ObjectCreate(janela,nome,OBJ_HLINE,subjanela,0,preco);}
ObjectCreate(janela,nome,OBJ_HLINE,subjanela,0,preco);
ObjectSetDouble(janela,nome,OBJPROP_PRICE,preco);
ObjectSetInteger(janela,nome,OBJPROP_COLOR,cor);
ObjectSetInteger(janela,nome,OBJPROP_STYLE,estilo);
ObjectSetInteger(janela,nome,OBJPROP_WIDTH,tamanho);
ObjectSetInteger(janela,nome,OBJPROP_HIDDEN,oculto);
ObjectSetInteger(janela,nome,OBJPROP_BACK,fundo);
ObjectSetInteger(janela,nome,OBJPROP_SELECTABLE,selecionavel);
ObjectSetString(janela,nome,OBJPROP_TOOLTIP,dica_);
}
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Boa tarde.
Por favor alguma alma caridosa poderia me passar um scrip para mql5 com seguintes condições:
1 - Cria duas linhas horizontais, sendo uma para maxima e outra para minima;
2 - Começa a traçar as linhas de hoje em diante;
3- Tem que ser editavel onde poderei deletar ou movimentar as linhas criadas.
Agradeço de coração, muito obrigado.