Artigo publicado Universal Trading Expert Advisor: Trabalhando com Trailing Stops personalizados (Parte 6):
Autor: Vasiliy Sokolov
- 2015.06.18
- Vasiliy Sokolov
- www.mql5.com
Olá. Excelente trabalho, muito obrigado! Diga-me, você está planejando implementar no mecanismo as abordagens para negociação no MOEX, descritas por você no artigo https://www.mql5.com/pt/articles/1683? Estou especificamente interessado em analisar a liquidez do mercado e, com base nela, entrar com um desvio especificado (slippage máximo).
//+------------------------------------------------------------------+ //| Fecha a posição atual do mercado, definindo o fechamento. //| comentário igual a comentário| //+------------------------------------------------------------------+ bool CPosition::CloseAtMarket(string comment="") { if(!IsActive()) return false; m_trade.PositionModify(m_id, 0.0, 0.0); ENUM_ACCOUNT_MARGIN_MODE mode=(ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE); if(mode != ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) return m_trade.PositionClose(m_symbol); return m_trade.PositionClose(m_id); }
Você pode me dizer por que m_trade.PositionModify(m_id, 0.0, 0.0) nessa função? Tenho erros de Invalid Stops no registro por causa dessa operação.
Você pode me dizer por que m_trade.PositionModify(m_id, 0.0, 0.0) nessa função? Tenho erros de Invalid Stops no registro por causa dessa operação.
Não alterei nada, mas ao compilar qualquer um dos módulos de rastreamento, inclusive a classe base, recebo erros:
'CTrailing' - declaration without type PositionMT5.mqh 48 4 'Trailing' - undeclared identifier PositionMT5.mqh 73 20 'Trailing' - object pointer expected PositionMT5.mqh 73 20 'Trailing' - object pointer expected PositionMT5.mqh 74 14
bool CTrailingClassic::Modify(void) { if(CheckPointer(m_position)==POINTER_INVALID) { string text="Invalid position for current trailing-stop. Set position with 'SetPosition' method"; CMessage *msg=new CMessage(MESSAGE_WARNING,__FUNCTION__,text); Log.AddMessage(msg); return false; } if(m_diff_extremum<=0.0) { string text="Set points trailing-stop with 'SetDiffExtremum' method"; CMessage *msg=new CMessage(MESSAGE_WARNING,__FUNCTION__,text); Log.AddMessage(msg); return false; } double extremum=FindExtremum(m_position); if(extremum == 0.0)return false; double n_sl = 0.0; if(m_position.Direction()==POSITION_TYPE_BUY) n_sl=extremum-m_diff_extremum; else n_sl=extremum+m_diff_extremum; if(n_sl!=m_position.StopLossValue()) return m_position.StopLossValue(n_sl); return false; }
Não faria mal verificar se o novo sl está abaixo do preço atual para uma posição comprada e acima do preço atual para uma posição vendida.
Olá. Obrigado pelo artigo.
Como posso ajustar o tamanho do lote para cada negociação? Vejo que ele compra apenas um lote
Desde já, obrigado
Prezado Sr. Sokolov,
Artigo muito interessante, mas, infelizmente, não consegui instalar um único de seus códigos sem muitos erros de compilação. Tentei todas as 9 partes, mas em vão.
Por isso, minha pergunta: existe uma abordagem específica para instalar seu código?
Muito obrigado
- 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
Novo artigo Expert Advisor Universal: Um Trailing Stop Customizado (Parte 6) foi publicado:
A sexta parte do artigo sobre o Expert Advisor universal descreve o uso do recurso "Trailing Stop". O artigo irá guiá-lo através de como criar um módulo "Trailing Stop" personalizado com regras unificadas, bem como adicioná-lo ao motor de negociação para gerir automaticamente as posições.
New functions have been added to the trading engine in the sixth part of the article. Now the trading engine supports trailing stops. Each trailing stop is a special class that contains the standardized Modify method that modifies the stop-loss level. It also contains specific data and parameters that configure the trailing moving algorithm. Trailing stop can be used in two ways.
Autor: Vasiliy Sokolov