Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 342
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Aqui está o arquivo .cpp do projeto, dê uma olhada nele e depois de algumas pesquisas no Google e Yandex, não encontrei nada de inteligente, é geralmente compreensível. Parece até simples.
Mas como funciona? Não sei bem como me referir a este ddl - a partir do código da EA? Como? Primeiro, parece que isto #inclui <GetIntValue>.
2. Ao chamar a dll, você não precisa manter o estúdio ligado, certo? como ele é executado?
Por favor, mostre o exemplo mais simples de como chamar esta dll a partir do código mql.
Não entendo isso aqui...
O tamanho do lote deve aumentar exponencialmente (com multiplicador 2) se uma segunda ordem unidirecional for aberta.
Este é o resultado.
então assim
você obtém um resultado como este
Então é isso.
Obrigado, entendi a idéia... Já percebi.
para que serve essa linha?
datetime o;
Aqui está outra pergunta. Tenho uma ordem de fuga. Quando 1 ordem unidirecional está aberta, tudo funciona bem, se mais, não funciona por alguma razão. Por quê?
{
for(int i = 0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY)
{
if(Bid - OrderOpenPrice() > TrailingStop*Point)
{
if (OrderStopLoss() < Bid - (TrailingStop + TrailingStep)*Point)
{
SL = NormalizeDouble(Bid - TrailingStop*Point,Digits);
if (OrderStopLoss() !=SL)
OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0);
}
}
}
if (OrderType() == OP_SELL)
{
if(OrderOpenPrice() - Ask > TrailingStop*Point)
{
if (OrderStopLoss() > Ask + (TrailingStop+ TrailingStep)*Point)
{
SL = NormalizeDouble (Ask+TrailingStop*Point,Digits);
if (OrderStopLoss() !=SL)
OrderModify (OrderTicket(), OrderOpenPrice(), SL,0,0);
}
}
}
}
}
}
}
Aqui está o arquivo .cpp do projeto, dê uma olhada nele e depois de algumas pesquisas no Google e Yandex, não encontrei nada de inteligente, é geralmente compreensível. Parece até simples.
Mas como funciona? Não sei bem como me referir a este ddl - a partir do código da EA? Como? Primeiro, parece que isto #inclui <GetIntValue>.
É mais ou menos assim. Para que funcione, você precisa compilar a dll e colocá-la na pasta experts/libraries (leia a ajuda e o tutorial, está detalhado lá).
2. Ao chamar a dll, você não precisa manter o estúdio ligado, certo? Então como ele é executado?
Aqui está outra pergunta. Tenho uma ordem de fuga. Quando 1 ordem unidirecional está aberta, tudo funciona bem, se mais, não funciona por alguma razão. Por quê?
{
for(int i = 0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY)
{
if(Bid - OrderOpenPrice() > TrailingStop*Point)
{
if (OrderStopLoss() < Bid - (TrailingStop + TrailingStep)*Point)
{
SL = NormalizeDouble(Bid - TrailingStop*Point,Digits);
if (OrderStopLoss() !=SL)
OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0);
}
}
}
if (OrderType() == OP_SELL)
{
if(OrderOpenPrice() - Ask > TrailingStop*Point)
{
if (OrderStopLoss() > Ask + (TrailingStop+ TrailingStep)*Point)
{
SL = NormalizeDouble (Ask+TrailingStop*Point,Digits);
if (OrderStopLoss() !=SL)
OrderModify (OrderTicket(), OrderOpenPrice(), SL,0,0);
}
}
}
}
}
}
}
Porque você precisa passar parâmetros para a função, tente isto
bool IfProfTrail=falso; // Utilização apenas para posições rentáveis - modo breakeven
int TrailingStop=0; // Distância de trilha = 0 - mínimo permitido
int TrailingStep=1; // Passo de distância de trilha
Muito obrigado!
Agora eu entendo qual é o problema.
Para a compra que utilizei:
Tanto quanto sei, comprar é pedir, mas iClose(Symbol(),Period(),0) aceita preços de licitação. Esta pode ser a razão do erro.
Mas aqui surge a questão, porque a EA não é uma EA baseada em Pips, o preço esteve na zona de compra por um longo tempo e atualizado a cada tic tac.Agora eu uso a seguinte combinação:
Por que o comércio não é aberto? Acontece que a EA pára com o erro e não vê mais movimento de preços?
Eu peguei o modelo para meu consultor especializado em https://c.mql5.com/mql4/book/mq4/experts/tradingexpert.mq4
Na sua opinião, devo acrescentar à função de tratamento de erros nesta EA uma verificação de 129 e 138 erros?
Se sim, como fazer isso?
No mínimo, você deve ter sua própria função para abrir posições/definir ordens que irão lidar com todos os erros. É aqui que você precisa obter os preços mais recentes.
Eu não olhei nenhum espaço em branco. Mas eu direi: a EA precisa lidar com todos os erros devolvidos pelo servidor. E isso não é suficiente. Ele deve ser capaz de retomar suas posições após qualquer situação inesperada sem perda de funcionalidade e sem a falha do algoritmo, e continuar seu trabalho como se nada de extraordinário tivesse acontecido.
No mínimo, você deve ter sua própria função para abrir posições/definir ordens que lidem com todos os erros. É onde você precisa obter os preços mais recentes.
Eu não olhei nenhum projeto. Mas eu direi: você precisa lidar com todos os erros devolvidos pelo servidor em sua EA. E isto não é suficiente. Deve ser capaz de retomar suas posições após qualquer situação imprevista, sem perder a funcionalidade, sem qualquer falha de seu algoritmo, e continuar seu trabalho como se nada de extraordinário tivesse acontecido.
O modelo é retirado de um livro didático. Eu não sou realmente bom em funções de manuseio de erros.
Na abertura do pedido, há RefreshRates(); (Eu substituo Licitações e Pede através de Informações de Mercado como sugerido).
E função de tratamento de erros:
Eu queria perguntar. Quero perguntar: Posso acrescentar outra linha de 129 erros a ela?