Consegui - obrigado - os erros quase desapareceram, mas ainda resta um:
'OrderCloseBy' - função não definida cPoza13-1.mqh 1885 8
//+------------------------------------------------------------------------------------------------------------------------------------+ //| Возвращает TRUE, если один ордер закрылся другим //+------------------------------------------------------------------------------------------------------------------------------------+ bool cPoza::closeBy(int ticketB, int ticketA) { if(ticketB > 0 && ticketA > 0) { if(OrderCloseBy(ticketB, ticketA)) return true; else Print("Magic=", mMagic, " ",__FUNCTION__, " Встречное закрытие не вышло ticketB=", ticketB, " ticketA=", ticketA, " вызвало ошибку-", _LastError); } else return false;
return false; }
// O que não é realizado: // Momentos CloseBy - ainda não tive tempo de fazer isso. Talvez no futuro, quando necessário. // Determinar TP e SL de posições fechadas - atualmente (build 1368) a MQL5 não sabe como fazer isso.
Eu escrevi a biblioteca para mim e não uso CloseBy. É por isso que não a implementei. Talvez eu o adicione com rapidez.
Como uma solução temporária, adicione estas linhas antes de incluir sua biblioteca
Também tenho que trabalhar ativamente com o histórico ao criar grades com média, o fato é que o DC limita o número máximo de ordens, e se a conta tiver 15-20 Expert Advisors com grades, a solução é minimizar algumas das grades no momento em que se aproxima o limite de ordens, respectivamente, temos que vasculhar o histórico para entender o resultado financeiro real da posição.
// O que não é realizado: // Momentos CloseBy - ainda não tive tempo de fazer isso. Talvez no futuro, quando necessário. // Determinar TP e SL de posições fechadas - atualmente (build 1368) a MQL5 não sabe como fazer isso.
Eu escrevi a biblioteca para mim e não uso o CloseBy. É por isso que não o implementei. Talvez com a aceleração eu adicione isso também.
Seria muito bom, obrigado. O CloseBy é útil para fixar uma parte de uma posição em um ponto calculado.
Também precisamos trabalhar ativamente com o histórico ao criar grades com cálculo de média. O fato é que o DC limita o número máximo de ordens e, se a conta tiver de 15 a 20 Expert Advisors com grades, a solução é vista como o colapso de parte das grades no momento em que o limite de ordens se aproxima, respectivamente, temos que nos aprofundar no histórico para entender o resultado financeiro real da posição.
Adicionarei CloseBy e aceleração do histórico na próxima compilação. Só não entendo se isso está sendo exigido (a biblioteca é usada) ou se é uma recomendação por precaução.
// O que não é realizado: // Momentos CloseBy - ainda não tive tempo de fazer isso. Talvez no futuro, quando necessário. // Determinar TP e SL de posições fechadas - atualmente (build 1368) a MQL5 não sabe como fazer isso.
Eu escrevi a biblioteca para mim e não uso o CloseBy. É por isso que não o implementei. Talvez eu o adicione assim que estiver pronto.
Como uma solução temporária, adicione estas linhas antes de ativar sua biblioteca
Obrigado - a compilação foi bem-sucedida na parte de trabalho com pedidos! Agora vou resolver o restante dos erros, causados por incompatibilidade de idioma...
fxsaber: Adicionarei CloseBy e aceleração de histórico na próxima compilação. Só não entendo se isso está sendo solicitado (a biblioteca é usada) ou se é apenas uma recomendação.
Eu a utilizo, há resultados muito interessantes, mas ainda não a utilizei (a função) em uma conta real - em breve.
fxsaber: Vai funcionar! Eu faço tudo no mercado de ações por meio do MT4Orders. Não me limito ao número de posições abertas.
Mas não recomendo trabalhar com histórico na bolsa de valores por meio do MT4Orders. Ou seja, MODE_TRADE - sem problemas, MODE_HISTORY - sem necessidade na bolsa.
// O caso em que uma ordem e uma posição com o mesmo tíquete estão presentes é levado em consideração bool Res = ((Ticket != MT4ORDERS::Order.Ticket) || (MT4ORDERS::Order.Ticket <= OP_SELL)) ? (MT4ORDERS::ModifyPosition(Ticket, Request) ? true : MT4ORDERS::ModifyOrder(Ticket, Price, Expiration, Request)) : (MT4ORDERS::ModifyOrder(Ticket, Price, Expiration, Request) ? true : MT4ORDERS::ModifyPosition(Ticket, Request));
if (Res) { Request.tp = TP; Request.sl = SL; if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(Request.symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE) Request.type_filling = ORDER_FILLING_RETURN;
Request.position = Ticket; Request.symbol = ::PositionGetString(POSITION_SYMBOL); // especificar um tíquete não é suficiente! }
return(Res); }
Tudo está correto aqui.
Sim, funciona assim, obrigado... e a separação de pedidos está ficando mais lenta, sim... mas não notei nenhum outro bug até agora.... É uma boa biblioteca, na verdade, faz sentido acelerar a coleta de pedidos, eu acho.
Consegui - obrigado - os erros quase desapareceram, mas ainda resta um:
'OrderCloseBy' - função não definida cPoza13-1.mqh 1885 8
//+------------------------------------------------------------------------------------------------------------------------------------+
//| Возвращает TRUE, если один ордер закрылся другим
//+------------------------------------------------------------------------------------------------------------------------------------+
bool cPoza::closeBy(int ticketB, int ticketA)
{
if(ticketB > 0 && ticketA > 0)
{
if(OrderCloseBy(ticketB, ticketA)) return true;
else Print("Magic=", mMagic, " ",__FUNCTION__, " Встречное закрытие не вышло ticketB=", ticketB, " ticketA=", ticketA, " вызвало ошибку-", _LastError);
}
else return false;
return false;
}
// Momentos CloseBy - ainda não tive tempo de fazer isso. Talvez no futuro, quando necessário.
// Determinar TP e SL de posições fechadas - atualmente (build 1368) a MQL5 não sabe como fazer isso.
Eu escrevi a biblioteca para mim e não uso CloseBy. É por isso que não a implementei. Talvez eu o adicione com rapidez.
Como uma solução temporária, adicione estas linhas antes de incluir sua biblioteca
bool OrderCloseBy( const int Ticket, const int Opposite, const color Arrow_Color = clrNONE )
{
return(false);
}
#endif
É possível, é claro. Eu não vi a necessidade.
Aparentemente, isso deve ser feito.Também tenho que trabalhar ativamente com o histórico ao criar grades com média, o fato é que o DC limita o número máximo de ordens, e se a conta tiver 15-20 Expert Advisors com grades, a solução é minimizar algumas das grades no momento em que se aproxima o limite de ordens, respectivamente, temos que vasculhar o histórico para entender o resultado financeiro real da posição.
// Momentos CloseBy - ainda não tive tempo de fazer isso. Talvez no futuro, quando necessário.
// Determinar TP e SL de posições fechadas - atualmente (build 1368) a MQL5 não sabe como fazer isso.
Seria muito bom, obrigado. O CloseBy é útil para fixar uma parte de uma posição em um ponto calculado.
Também precisamos trabalhar ativamente com o histórico ao criar grades com cálculo de média. O fato é que o DC limita o número máximo de ordens e, se a conta tiver de 15 a 20 Expert Advisors com grades, a solução é vista como o colapso de parte das grades no momento em que o limite de ordens se aproxima, respectivamente, temos que nos aprofundar no histórico para entender o resultado financeiro real da posição.
// Momentos CloseBy - ainda não tive tempo de fazer isso. Talvez no futuro, quando necessário.
// Determinar TP e SL de posições fechadas - atualmente (build 1368) a MQL5 não sabe como fazer isso.
Eu escrevi a biblioteca para mim e não uso o CloseBy. É por isso que não o implementei. Talvez eu o adicione assim que estiver pronto.
Como uma solução temporária, adicione estas linhas antes de ativar sua biblioteca
bool OrderCloseBy( const int Ticket, const int Opposite, const color Arrow_Color = clrNONE )
{
return(false);
}
#endif
Obrigado - a compilação foi bem-sucedida na parte de trabalho com pedidos! Agora vou resolver o restante dos erros, causados por incompatibilidade de idioma...
Adicionarei CloseBy e aceleração de histórico na próxima compilação. Só não entendo se isso está sendo solicitado (a biblioteca é usada) ou se é apenas uma recomendação.
Eu a utilizo, há resultados muito interessantes, mas ainda não a utilizei (a função) em uma conta real - em breve.
Vai funcionar! Eu faço tudo no mercado de ações por meio do MT4Orders. Não me limito ao número de posições abertas.
não é possível definir um stop-loss na bolsa de valores, mas ele abre negociações.
E, em minha opinião, você não tem isso na biblioteca para modificação.
Request.type_filling = ORDER_FILLING_RETURN;
Entendo que você precisa adicioná-la aqui:
{
MqlTradeRequest Request = {0};
// O caso em que uma ordem e uma posição com o mesmo tíquete estão presentes é levado em consideração
bool Res = ((Ticket != MT4ORDERS::Order.Ticket) || (MT4ORDERS::Order.Ticket <= OP_SELL)) ?
(MT4ORDERS::ModifyPosition(Ticket, Request) ? true : MT4ORDERS::ModifyOrder(Ticket, Price, Expiration, Request)) :
(MT4ORDERS::ModifyOrder(Ticket, Price, Expiration, Request) ? true : MT4ORDERS::ModifyPosition(Ticket, Request));
if (Res)
{
Request.tp = TP;
Request.sl = SL;
if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(Request.symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE)
Request.type_filling = ORDER_FILLING_RETURN;
Res = MT4ORDERS::NewOrderSend(Request);
}
return(Res);
}
ele não pode definir um stop-loss na bolsa de valores, mas abre negociações.
Na verdade, isso é quase um bug dos desenvolvedores. Adicione esta linha
{
const bool Res = ::PositionSelectByTicket(Ticket);
if (Res)
{
Request.action = TRADE_ACTION_SLTP;
Request.position = Ticket;
Request.symbol = ::PositionGetString(POSITION_SYMBOL); // especificar um tíquete não é suficiente!
}
return(Res);
}
E, em minha opinião, na lib você não a especifica para modificação.
De fato, é quase um bug de desenvolvedor. Adicione esta linha
{
const bool Res = ::PositionSelectByTicket(Ticket);
if (Res)
{
Request.action = TRADE_ACTION_SLTP;
Request.position = Ticket;
Request.symbol = ::PositionGetString(POSITION_SYMBOL); // especificar um tíquete não é suficiente!
}
return(Res);
}