Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 1149
- Avaliação:
- Publicado:
- 2018.06.08 13:44
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Desenvolvimento da segunda versão da biblioteca SignalMAAboveBelow 2.
Novo na versão 3
- Parâmetro CurrentBarSize - tamanho da barra atual (calcula-se como Close-Open);
- Parâmetro PreviousBarSize - tamanho da barra anterior (calcula-se como Close-Open).
Nesse caso, se o preço na barra atual estiver SOBRE o indicador, as duas barras devem ser altistas. Se o preço na barra atual estiver SOB o indicador, as duas barras devem ser baixistas. Assim, ambos os parâmetros (CurrentBarSize e PreviousBarSize) atuam como filtros de proteção ao abrir uma posição.
No módulo de sinais, conectamos timeseries no construtor:
//+------------------------------------------------------------------+ //| Constructor | //+------------------------------------------------------------------+ CSignalMA::CSignalMA(void) : m_reverse(false), m_ma_period(12), m_ma_shift(0), m_ma_method(MODE_SMA), m_ma_applied(PRICE_CLOSE), m_pattern_0(80), m_size_current_bar(40), m_size_previous_bar(20) { //--- initialization of protected data m_used_series=USE_SERIES_OPEN+USE_SERIES_HIGH+USE_SERIES_LOW+USE_SERIES_CLOSE; }
Após a conexão das TimeSeries, você pode usar os objetos m_close e m_open das classes CiClose e CiOpen, respectivamente (esses objetos são declarados em um nível mais alto - no nível do pai ExpertBase.mqh).
Trabalhamos com esses objeto em CSignalMA::LongCondition
//+------------------------------------------------------------------+ //| "Voting" that price will grow. | //+------------------------------------------------------------------+ int CSignalMA::LongCondition(void) { if(m_type_trade==1) // m_type_trade: enum type of trade: 0 -> BUY, 1 -> SELL, 2 -> BUY and SELL return(0); int result=0; int idx =StartIndex(); //--- if(m_close.GetData(idx+1)-m_open.GetData(idx+1)<m_previous_bar_size*PriceLevelUnit()) return(0); if(m_close.GetData(idx)-m_open.GetData(idx)<m_current_bar_size*PriceLevelUnit()) return(0); //--- analyze positional relationship of the close price and the indicator at the first analyzed bar
e em CSignalMA::ShortCondition
//+------------------------------------------------------------------+ //| "Voting" that price will fall. | //+------------------------------------------------------------------+ int CSignalMA::ShortCondition(void) { //--- m_type_trade: enum type of trade: 0 -> BUY, 1 -> SELL, 2 -> BUY and SELL if(m_type_trade==0) return(0); int result=0; int idx=StartIndex(); //--- if(m_open.GetData(idx+1)-m_close.GetData(idx+1)<m_previous_bar_size*PriceLevelUnit()) return(0); if(m_open.GetData(idx)-m_close.GetData(idx)<m_current_bar_size*PriceLevelUnit()) return(0); //--- analyze positional relationship of the close price and the indicator at the first analyzed bar
Exemplo de abertura de posições com o parâmetro Reverse == false:
Fig. 1. SignalMAAboveBelow 3 - abertura de posição BUY
Fig. 2. SignalMAAboveBelow 3 - abertura de posição SELL
Parâmetros do módulo de sinal
- Reverse - sinalizador do reverso dos sinais;
- PeriodMA - período do indicador de média Moving Average;
- Shift - deslocamento horizontal do indicador Moving Average;
- Method - tipo de suavização do indicador Moving Average;
- Applied - tipo de preço com base no qual é calculado o indicador Moving Average;
- TypeOfTrade - tipo de sinais de negociação: 0 → BUY, 1 → SELL, 2 → BUY and SELL;
- CurrentBarSize - tamanho da barra atual (calcula-se como Close-Open);
- PreviousBarSize - tamanho da barra anterior (calcua-se como Close-Open).
Parâmetros do EA de teste TestSignalMAAboveBelow3.mq5 são definidos por padrão, sem nenhuma otimização.
Aliás, se no EA TestSignalMAAboveBelow3.mq5 gerado no Assistente MQL5
//+------------------------------------------------------------------+ //| Inputs | //+------------------------------------------------------------------+ //--- inputs for expert input string Expert_Title ="TestSignalMAAboveBelow3"; // Document name ulong Expert_MagicNumber =20884; // bool Expert_EveryTick =false; // //--- inputs for main signal
for permitido o trabalho em CADA TICK (mudar este "false" - definido por padrão - para "true"), você pode obter resultados mais interessantes, uma vez que o EA começa a processar a condição quando a barra atual (que será a barra com índice #0) vira igual ou maior do que o parâmetro CurrentBarSize definido.
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/20164

VSI (Volatility Switch Indicator) - indicador de mudança de volatilidade.

Indicador-oscilador (Intraday Intensity Index) - índice de intensidade intradiária.

Abertura simultânea de duas posições opostas. Trailing de posições.

Esta é uma versão normalizada que mostra o volume em porcentagem em comparação com o volume médio do período selecionado.