Discusión sobre el artículo "Experto comercial universal: Trabajando con trailing-stops personalizados (parte 6)"
Artículo publicado Asesor Experto de Universal Trading: Trabajando con Trailing Stops Personalizados (Parte 6):
Autor: Vasiliy Sokolov

- 2015.06.18
- Vasiliy Sokolov
- www.mql5.com
Hola. ¡Gran trabajo, muchas gracias! Dime, ¿estás planeando implementar en el motor de los enfoques para el comercio en MOEX, descrito por usted en el artículo https://www.mql5.com/es/articles/1683? Concretamente estoy interesado en analizar la liquidez del mercado y en base a ella entrar con una desviación determinada (deslizamiento máximo).
//+------------------------------------------------------------------+ //| Cierra la posición actual del mercado fijando el cierre | //| comentario igual a comentario| //+------------------------------------------------------------------+ 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); }
¿Puede decirme por qué m_trade.PositionModify(m_id, 0.0, 0.0) en esta función? Tengo Invalid Stops errores en el registro debido a esta operación.
¿Puede decirme por qué m_trade.PositionModify(m_id, 0.0, 0.0) en esta función? Tengo errores de Invalid Stops en el log debido a esta operación.
No he cambiado nada, pero al compilar cualquiera de los módulos de arrastre, incluida la clase base, obtengo errores:
'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; }
No estaría de más comprobar que el nuevo sl está por debajo del precio actual para una posición larga y por encima del precio actual para una posición corta.
Hola. Gracias por el artículo.
¿Cómo puedo ajustar el tamaño del lote para cada operación? Veo que sólo compra un lote
Gracias de antemano
Estimado Sr. Sokolov,
Muy interesante artículo, pero por desgracia no pude instalar uno solo de sus códigos sin toneladas de errores compiller. He intentado todas las 9 partes, pero en vano.
De ahí mi pregunta: ¿Existe algún método específico para instalar su código?
Gracias

- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Experto comercial universal: Trabajando con trailing-stops personalizados (parte 6):
La sexta parte del artículo sobre el experto comercial universal describe el funcionamiento de los trailing-stops. Después de leerlo, usted aprenderá cómo usar normas unificadas para crear su propio módulo de trailing-stop y conectarlo al motor comercial de tal forma que el control de la posición realizado por este suceda automáticamente.
Con frecuencia, la solución más efectiva es la más sencilla y comprobada. El trailing-stop no es una excepción. Si nos imaginamos el trailing stop como una clase especial que almacena parámetros para su trabajo, en particular, un algoritmo de desplazamiento de un trailing-stop concreto en forma de método, entonces todos los problemas anteriores con respecto a la ubicación de esta funcionalad desaparecerán. En realidad, si creamos el trailing-stop en forma de clase independiente, sus datos y métodos estarán entrelazados con los datos y métodos de la clase básica CStrategy y otros objetos de infraestructura del tipo CPosition.
Al desarrollar esta clase es necesario resolver dos cuestiones.
Autor: Vasiliy Sokolov