¡ayudar a ajustar el indicador - no puede conseguir una manija en la última barra!
El indicador considera una serie de ganancias continuas para las opciones binarias, teniendo en cuenta que la apuesta se hará cada 2 barras (es decir, después de una - ganancia / pérdida, esperar a que la barra actual), la variable externa es un análisis de precios de la barra anterior en un precio al alza o a la baja
Tengo la sensación de que funciona, pero en línea la última barra no se considera correctamente, y como consecuencia si coloco el indicador en M1 los datos del historial serán correctos, pero todo en línea no se calcula correctamente, el código:
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Ошибки, баги, вопросы Ошибка после команды CopyClose...
yur4ik: Hola! Por favor, ayúdenme con el módulo de señales para cerrar posiciones. ¿Qué estoy haciendo mal?
Su archivo es el módulo SIGNAL. En el sistema Expert Advisor, se integra de la misma manera que el módulo de SEÑALES del indicador USER. En otras palabras, las señales generadas por su módulo tienen un PESO, y puede ocurrir que este peso no sea suficiente para activar la señal.
Tiene que pensar en la mejor manera de hacer el cierre en su caso. Tal vez no deba hacerlo en el módulo de señales
Su archivo es el módulo SIGNAL. En el sistema Expert Advisor, se integra de la misma manera que el módulo de SEÑALES del indicador USER. En otras palabras, las señales generadas por su módulo tienen un PESO, y puede ocurrir que este peso no sea suficiente para activar la señal.
Tiene que pensar en la mejor manera de hacer el cierre en su caso. Es posible que no quieras hacerlo en un módulo de señales.
Me gustaría que se hiciera como un módulo de señales que pudiera ser recogido por un generador de Asesores Expertos. En el momento en que el módulo se va a activar, LongCondition() y ShortCondition() en el segundo módulo de EA devuelven valores cero - es decir, peso=0, ¿lo he entendido bien? En consecuencia, el peso de este módulo debe superar la señal, pero no funciona. En CheckCloseLong() y CheckCloseShort(), he insertado el Print("-------------"); y Print(time_GMT_DST()); que, durante el funcionamiento normal del módulo, deberían hacer las entradas apropiadas en el registro al recibir cada tick. Las entradas no se realizan; no se llama a CheckCloseLong() ni a CheckCloseShort(). ¿Cuál es la trampa?
Me gustaría que fuera en forma de módulo de señales, para que fuera posible montarlo a través del generador de EA. En el momento en que el módulo se va a activar, LongCondition() y ShortCondition() en el segundo módulo del EA devuelven valores cero - es decir, peso=0, ¿lo he entendido bien? En consecuencia, el peso de este módulo debe superar la señal, pero no funciona. En CheckCloseLong() y CheckCloseShort(), he insertado el Print("-------------"); y Print(time_GMT_DST()); que, durante el funcionamiento normal del módulo, deberían hacer las entradas apropiadas en el registro al recibir cada tick. Las entradas no se realizan; no se llama a CheckCloseLong() ni a CheckCloseShort(). ¿Cuál es la trampa?
Ciertamente soy una explicación torpe, pero estoy aprendiendo
Utilizar métodos
//--- methods of checking if the market models are formedvirtualint LongCondition(void);
virtualint ShortCondition(void);
Hola, ¿me pueden decir cómo hacer un contador para las operaciones perdedoras? El Asesor Experto analiza la última operación en el historial - si no es rentable, entonces añade +1 a la variable, que será el número de operaciones perdedoras consecutivas.
En cuanto se produce una operación rentable, la variable debe ponerse a cero.
Hola, ¿podríais aconsejarme cómo hacer un contador de operaciones perdedoras? El Asesor Experto analiza la última operación en el historial - si es perdedora, entonces añade +1 a la variable, que será el número de operaciones perdedoras consecutivas.
En cuanto llega una operación rentable, la variable debe ponerse a cero.
Podemos negarnos a trabajar con el historial de operaciones y trabajar sólo con OnTradeTransaction() - allí cogeremos una operación de tipo "OUT" - es decir, será el cierre de la posición. Una vez encontrada esta operación, determinamos si fue rentable o no. Respectivamente, las"pérdidas" del contador deben restablecerse o incrementarse.
//+------------------------------------------------------------------+//| TradeTransaction function |//+------------------------------------------------------------------+voidOnTradeTransaction(constMqlTradeTransaction &trans,
constMqlTradeRequest &request,
constMqlTradeResult &result)
{
//--- get transaction type as enumeration value ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in historyif(type==TRADE_TRANSACTION_DEAL_ADD)
{
long deal_ticket =0;
long deal_order =0;
long deal_time =0;
long deal_time_msc =0;
long deal_type =-1;
long deal_entry =-1;
long deal_magic =0;
long deal_reason =-1;
long deal_position_id =0;
double deal_volume =0.0;
double deal_price =0.0;
double deal_commission =0.0;
double deal_swap =0.0;
double deal_profit =0.0;
string deal_symbol ="";
string deal_comment ="";
string deal_external_id ="";
if(HistoryDealSelect(trans.deal))
{
deal_ticket =HistoryDealGetInteger(trans.deal,DEAL_TICKET);
deal_order =HistoryDealGetInteger(trans.deal,DEAL_ORDER);
deal_time =HistoryDealGetInteger(trans.deal,DEAL_TIME);
deal_time_msc =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC);
deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
deal_reason =HistoryDealGetInteger(trans.deal,DEAL_REASON);
deal_position_id =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID);
deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
deal_price =HistoryDealGetDouble(trans.deal,DEAL_PRICE);
deal_commission =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION);
deal_swap =HistoryDealGetDouble(trans.deal,DEAL_SWAP);
deal_profit =HistoryDealGetDouble(trans.deal,DEAL_PROFIT);
deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL);
deal_comment =HistoryDealGetString(trans.deal,DEAL_COMMENT);
deal_external_id =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID);
}
elsereturn;
if(deal_symbol==Symbol() && deal_magic==m_magic)
if(deal_entry==DEAL_ENTRY_OUT)
{
if(deal_commission+deal_swap+deal_profit>0)
{
losses=0;
}
else
{
losses++;
}
}
}
}
Y la comprobación en el historial de operaciones debe hacerse en OnInit() - una vez al inicio del Asesor Experto.
¡ayudar a ajustar el indicador - no puede conseguir una manija en la última barra!
El indicador considera una serie de ganancias continuas para las opciones binarias, teniendo en cuenta que la apuesta se hará cada 2 barras (es decir, después de una - ganancia / pérdida, esperar a que la barra actual), la variable externa es un análisis de precios de la barra anterior en un precio al alza o a la baja
Tengo la sensación de que funciona, pero en línea la última barra no se considera correctamente, y como consecuencia si coloco el indicador en M1 los datos del historial serán correctos, pero todo en línea no se calcula correctamente, el código:
Gracias por adelantado.
Hola! Por favor, ayúdenme con el módulo de señales para cerrar posiciones. ¿Qué estoy haciendo mal?
Su archivo es el módulo SIGNAL. En el sistema Expert Advisor, se integra de la misma manera que el módulo de SEÑALES del indicador USER. En otras palabras, las señales generadas por su módulo tienen un PESO, y puede ocurrir que este peso no sea suficiente para activar la señal.
Tiene que pensar en la mejor manera de hacer el cierre en su caso. Tal vez no deba hacerlo en el módulo de señales
Su archivo es el módulo SIGNAL. En el sistema Expert Advisor, se integra de la misma manera que el módulo de SEÑALES del indicador USER. En otras palabras, las señales generadas por su módulo tienen un PESO, y puede ocurrir que este peso no sea suficiente para activar la señal.
Tiene que pensar en la mejor manera de hacer el cierre en su caso. Es posible que no quieras hacerlo en un módulo de señales.
Me gustaría que se hiciera como un módulo de señales que pudiera ser recogido por un generador de Asesores Expertos. En el momento en que el módulo se va a activar, LongCondition() y ShortCondition() en el segundo módulo de EA devuelven valores cero - es decir, peso=0, ¿lo he entendido bien? En consecuencia, el peso de este módulo debe superar la señal, pero no funciona. En CheckCloseLong() y CheckCloseShort(), he insertado el Print("-------------"); y Print(time_GMT_DST()); que, durante el funcionamiento normal del módulo, deberían hacer las entradas apropiadas en el registro al recibir cada tick. Las entradas no se realizan; no se llama a CheckCloseLong() ni a CheckCloseShort(). ¿Cuál es la trampa?
Soy torpe, por supuesto, pero estoy aprendiendo.Me gustaría que fuera en forma de módulo de señales, para que fuera posible montarlo a través del generador de EA. En el momento en que el módulo se va a activar, LongCondition() y ShortCondition() en el segundo módulo del EA devuelven valores cero - es decir, peso=0, ¿lo he entendido bien? En consecuencia, el peso de este módulo debe superar la señal, pero no funciona. En CheckCloseLong() y CheckCloseShort(), he insertado el Print("-------------"); y Print(time_GMT_DST()); que, durante el funcionamiento normal del módulo, deberían hacer las entradas apropiadas en el registro al recibir cada tick. Las entradas no se realizan; no se llama a CheckCloseLong() ni a CheckCloseShort(). ¿Cuál es la trampa?
Ciertamente soy una explicación torpe, pero estoy aprendiendoUtilizar métodos
En lugar de su CheckCloseLong y CheckCloseShort.
Gracias.
Hola, ¿me pueden decir cómo hacer un contador para las operaciones perdedoras?
El Asesor Experto analiza la última operación en el historial - si no es rentable, entonces añade +1 a la variable, que será el número de operaciones perdedoras consecutivas.
En cuanto se produce una operación rentable, la variable debe ponerse a cero.
Hola, ¿podríais aconsejarme cómo hacer un contador de operaciones perdedoras?
El Asesor Experto analiza la última operación en el historial - si es perdedora, entonces añade +1 a la variable, que será el número de operaciones perdedoras consecutivas.
En cuanto llega una operación rentable, la variable debe ponerse a cero.
Podemos negarnos a trabajar con el historial de operaciones y trabajar sólo con OnTradeTransaction() - allí cogeremos una operación de tipo "OUT" - es decir, será el cierre de la posición. Una vez encontrada esta operación, determinamos si fue rentable o no. Respectivamente, las"pérdidas" del contador deben restablecerse o incrementarse.
Y la comprobación en el historial de operaciones debe hacerse en OnInit() - una vez al inicio del Asesor Experto.Hola a todos,
¿Puede decirme cómo puedo borrar programáticamente el registro del EA antes de mostrar la información en él :?
¿Sólo a través de Win API?
Gracias.
Hola a todos,
¿Puede decirme cómo puedo borrar programáticamente el registro del EA antes de mostrar la información en él :?
¿Sólo a través de Win API?
Gracias.