262 行
23 KiB
MQL5
262 行
23 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| HorarioBovespaLibs.mqh |
|
|
//| Copyright 2024, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2024, MetaQuotes Ltd."
|
|
#property link "https://www.mql5.com"
|
|
//+------------------------------------------------------------------+
|
|
//| defines |
|
|
//+------------------------------------------------------------------+
|
|
// #define MacrosHello "Hello, world!"
|
|
// #define MacrosYear 2010
|
|
//+------------------------------------------------------------------+
|
|
//| DLL imports |
|
|
//+------------------------------------------------------------------+
|
|
// #import "user32.dll"
|
|
// int SendMessageA(int hWnd,int Msg,int wParam,int lParam);
|
|
// #import "my_expert.dll"
|
|
// int ExpertRecalculate(int wParam,int lParam);
|
|
// #import
|
|
//+------------------------------------------------------------------+
|
|
//| EX5 imports |
|
|
//+------------------------------------------------------------------+
|
|
// #import "stdlib.ex5"
|
|
// string ErrorDescription(int error_code);
|
|
// #import
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
|
|
|
//#######################################################################
|
|
//functions para horarios Bovespa #
|
|
//#######################################################################
|
|
string getTimestampChart() {
|
|
return (string) TimeCurrent();
|
|
}
|
|
|
|
string getTimeDate(string data) {
|
|
datetime time = (datetime) data;
|
|
return TimeToString(time, TIME_DATE);
|
|
}
|
|
|
|
string getTime(string data) {
|
|
datetime time = (datetime) data;
|
|
return TimeToString(time, TIME_MINUTES|TIME_SECONDS);
|
|
}
|
|
|
|
|
|
|
|
/************************************************************************
|
|
* 1)leilao abertura BMF *
|
|
* neste horario eh representado pela abertura de futuros da BMF, *
|
|
* um bom horario para operar abertura eh das: *
|
|
* 09:00 ~ 09:25 *
|
|
* porque as 09:30 sempre tem noticias que podem bater em nosso stop; *
|
|
*************************************************************************/
|
|
bool winLeilaoAberturaBMF() {
|
|
return (bool) ((getTime(getTimestampChart()) > "09:05:00") && (getTime(getTimestampChart()) < "09:25:00"));
|
|
}
|
|
|
|
|
|
/*************************************************************************
|
|
* Horario operacao USD/BRL corretora FBS * *
|
|
* horario especifico de operacao da corretora FBS para o par exotic BRL*
|
|
* 09:30 ~ 17:00 *
|
|
**************************************************************************/
|
|
bool horarioBovespaBMFFBS() {
|
|
return (bool) ((getTime(getTimestampChart()) > "09:30:00") && (getTime(getTimestampChart()) < "17:00:00"));
|
|
}
|
|
|
|
|
|
|
|
/************************************************************************
|
|
* 2)abertura Bovespa *
|
|
* a abertura do mercado a vista Bovespa eh as 10:00h em ponto porem *
|
|
* como se trata de acoes, na grande maioria das vezes, algumas delas *
|
|
* ficam um certo tempo em leilao de abertura entao pelo que agente ja *
|
|
* observou, o WIN nos primeiros 15m fica as vezes sem direção com *
|
|
* altissima volatilidade, pode bater no stop desnecessariamente, *
|
|
* entao melhor horario para operar Bovespa eh depois da abertura *
|
|
* apos o leilao as: *
|
|
* 10:15h *
|
|
*************************************************************************/
|
|
bool winLeilaoAberturaBovespa() {
|
|
return (bool) ((getTime(getTimestampChart()) > "10:15:00") && (getTime(getTimestampChart()) < "11:59:00"));
|
|
}
|
|
|
|
/*************************************************************************
|
|
* 3)horario do almoço *
|
|
* neste horario eh um periodo nulo, por conta que nas bolsas de valores*
|
|
* os operadores estao em horario de almoço, e tb eh fechamento da *
|
|
* bolsa da europa, entao geralmente eh um periodo que a volatilidade eh*
|
|
* baixa, raro os casos de noticias de ultima hora: *
|
|
* 12:00 ~ 14:00 *
|
|
**************************************************************************/
|
|
bool winAlmocoBovespa() {
|
|
return (bool) ((getTime(getTimestampChart()) > "12:00:00") && (getTime(getTimestampChart()) < "13:59:00"));
|
|
}
|
|
|
|
/*************************************************************************
|
|
* 4)periodo da tarde *
|
|
* eh o periodo em que volta com um volume de negociacao mais forte e *
|
|
* pode fazer o mercado ficar mais direcional: *
|
|
* 14:00 ~ 17:00 *
|
|
**************************************************************************/
|
|
bool winTardeBovespa() {
|
|
return (bool) ((getTime(getTimestampChart()) > "14:00:00") && (getTime(getTimestampChart()) < "17:00:00"));
|
|
}
|
|
|
|
/**************************************************************************
|
|
* 5)leilao fechamento BMF *
|
|
* neste periodo apos as 17:00h o mercado de balcao Bovespa esta fechado *
|
|
* é permitido operar o WIN porem precisa estar atento porque o volume *
|
|
* de negociacao geralmente eh muito baixo, unica vantagem eh q *
|
|
* geralmente ele obedece a mesma direcao de quando foi fechado o mercado*
|
|
* Bovespa as 17h: *
|
|
* 17:00 ~ 18:15 *
|
|
* *
|
|
* *obs: *
|
|
* nesta function precisa ter uma funcionalidade de quando o horario *
|
|
* passar das 17:55h ele precisa stopar todas as boletas nos status: *
|
|
* ->em aberto *
|
|
* ->em execucao *
|
|
* ->pendentes *
|
|
***************************************************************************/
|
|
bool winLeilaoFechamentoBMF() {
|
|
return (bool) ((getTime(getTimestampChart()) > "17:00:00") && (getTime(getTimestampChart()) < "17:55:00"));
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
* primeiro precisamos pegar a data atual do chart
|
|
* a variavel dataIntraday inicializa NULL
|
|
* precisamos verificar se a data se hoje eh igual a variavel dataIntraday
|
|
* se nao for primeiro agente atribui a data chart para a variavel
|
|
* depois precisamos verificar se existem boletas em aberto sem estar em execucao
|
|
* se houver cancela todas
|
|
* agora se houver boletas em execucao agente precisa pesquisar alguma funcao
|
|
* pra ver se agente consegue fechar ela a mercado;
|
|
*
|
|
* se tratando de bovespa agente percebeu/aprendeu que existem mais horarios de corte
|
|
* por conta de algumas noticias que podem ocorrer no intraday, entao
|
|
* vamos colocar os horarios que sao disponiveis para negociacao que
|
|
* devem estar contempladas no nosso codigo:
|
|
*
|
|
* 1)abertura BMF
|
|
* neste horario eh representado pela abertura de futuros da BMF,
|
|
* um bom horario para operar abertura eh das:
|
|
* 09:00 ~ 09:25
|
|
* porque as 09:30 sempre tem noticias que podem bater em nosso stop;
|
|
*
|
|
* 2)abertura Bovespa
|
|
* a abertura do mercado a vista Bovespa eh as 10:00h em ponto porem
|
|
* como se trata de acoes, na grande maioria das vezes, algumas delas ficam
|
|
* um certo tempo em leilao de abertura entao pelo que agente ja observou,
|
|
* o WIN nos primeiros 15m fica as vezes sem direção com altissima volatilidade,
|
|
* pode bater no stop desnecessariamente, entao melhor horario para operar Bovespa eh depois
|
|
* da abertura apos o leilao as:
|
|
* 10:15h
|
|
*
|
|
* 3)horario do almoço
|
|
* neste horario eh um periodo nulo, por conta que nas bolsas de valores os operadores
|
|
* estao em horario de almoço, e tb eh fechamento da bolsa da europa, entao geralmente
|
|
* eh um periodo que a volatilidade eh baixa, raro os casos de noticias de ultima hora:
|
|
* 12:00 ~ 14:00
|
|
*
|
|
* 4)periodo da tarde
|
|
* eh o periodo em que volta com um volume de negociacao mais forte e pode fazer o mercado
|
|
* ficar mais direcional:
|
|
* 14:00 ~ 17:00
|
|
*
|
|
* 5)leilao fechamento BMF
|
|
* neste periodo apos as 17:00h o mercado de balcao Bovespa esta fechado, é permitido
|
|
* operar o WIN porem precisa estar atento porque o volume de negociacao
|
|
* geralmente eh muito baixo, unica vantagem eh q geralmente ele obedece a mesma
|
|
* direcao de quando foi fechado o mercado Bovespa as 17h:
|
|
* 17:00 ~ 18:15
|
|
*
|
|
*/
|
|
|
|
bool validaBoletasIntraday() {
|
|
return (
|
|
winLeilaoAberturaBMF()
|
|
|| winLeilaoAberturaBovespa()
|
|
|| winAlmocoBovespa()
|
|
|| winTardeBovespa()
|
|
|| winLeilaoFechamentoBMF()
|
|
);
|
|
}
|
|
|
|
|
|
bool validaBoletasIntradayForexBRL() {
|
|
return horarioBovespaBMFFBS();
|
|
}
|
|
|
|
|
|
/*********************
|
|
*function deprecated *
|
|
**********************/
|
|
void validaBoletasIntradayDeprecated() {
|
|
Alert("\n get data timestamp string => " + getTimeDate(getTimestampChart()));
|
|
|
|
//se a variavel esta diferente significa ou q esta nula
|
|
//ou o dia do chart virou mercado fechou
|
|
if(dataIntraday != getTimeDate(getTimestampChart())) {
|
|
dataIntraday = getTimeDate(getTimestampChart());
|
|
|
|
//agora precisamos ver como fecha boletas em aberto
|
|
//depois ver como fechar a mercado boletas em execucao
|
|
//trade.SellStop(tamanhoLote, entrada, Symbol(), maxAtual, takeProfit, 0, 0, NULL);
|
|
|
|
//sera q este fecha boleta?
|
|
//parametro eh o TicketID
|
|
trade.PositionClose(1234);
|
|
|
|
//modifica a boleta
|
|
//parametros:
|
|
//symbol, double sl, double tp
|
|
//trade.PositionModify();
|
|
|
|
//testar resultados abaixo
|
|
trade.CheckResultBalance();
|
|
trade.CheckResultComment();
|
|
trade.CheckResultEquity();
|
|
trade.CheckResultMargin();
|
|
trade.CheckResultMarginFree();
|
|
trade.CheckResultMarginLevel();
|
|
trade.CheckResultProfit();
|
|
trade.RequestVolume();
|
|
trade.RequestActionDescription();
|
|
trade.RequestComment();
|
|
trade.RequestDeviation();
|
|
trade.RequestExpiration();
|
|
trade.RequestMagic();
|
|
trade.RequestOrder();
|
|
trade.RequestPosition();
|
|
trade.RequestPositionBy();
|
|
trade.RequestPrice();
|
|
trade.RequestSL();
|
|
trade.RequestStopLimit();
|
|
trade.RequestSymbol();
|
|
trade.RequestTP();
|
|
trade.RequestTypeDescription();
|
|
trade.RequestTypeFillingDescription();
|
|
trade.RequestTypeTimeDescription();
|
|
trade.RequestVolume();
|
|
trade.ResultAsk();
|
|
trade.ResultBid();
|
|
trade.ResultComment();
|
|
trade.ResultDeal();
|
|
trade.ResultOrder();
|
|
trade.ResultPrice();
|
|
trade.ResultRetcode();
|
|
trade.ResultRetcodeDescription();
|
|
trade.ResultRetcodeExternal();
|
|
trade.ResultVolume();
|
|
}
|
|
}
|
|
|
|
|