Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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);
}