Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 72
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
Se você comparar com o equilíbrio, é assim que é:
Obrigado.
OK, então, como eu entendo, temos três funções personalizadas diferentes com o retorno da função certa (se procurarmos três parâmetros diferentes)
ArraySort
então
ArrayBsearch pelo número certo
e então como lidar com isso?
Exatamente a transição de uma matriz para um elemento de estruturaVocê não entende.
Você precisa fazer uma única função que irá povoar e classificar a matriz declarada globalmente. A matriz terá que ser passada para a função por referência.
E você precisa de funções adicionais que retirarão os dados de que precisa desta matriz.
Você não entende.
Você precisa fazer uma única função que preencha e ordene uma matriz declarada globalmente. A matriz terá que ser passada para a função por referência.
E você precisa de funções adicionais que tirem os dados de que precisa desta matriz.
ok, você pode demonstrar como tirar algo de uma série de estruturas? digamos preenchidas e classificadas
como transferir por referência e escrever.
Favor informar como deve ser a condição. Se um stop loss é acionado, então o lote é multiplicado por 2, e se a próxima ordem aciona um take profit, o lote retornaria ao lote original, que era antes do stop loss.
Eu entendo assim, mas não sei como continuar...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
outra pergunta, o que eu escrevi errado no bloco de ordens de exclusão? nem sempre as ordens de exclusão, no registro diz
market order #1 cannot be deleted
{
for(int n=OrdersTotal()-1;n>=0;n--)
{
if(OrderSelect(n,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
bool del=OrderDelete(OrderTicket());
if (del==true)
{
otl_b=0; otl_s=0; //обнуляем переменные отложек
}
}
}
}
}
Outra pergunta, o que escrevi errado no bloco para apagar ordens? Nem sempre as ordens são apagadas, no registro diz
market order #1 cannot be deleted
{
for(int n=OrdersTotal()-1;n>=0;n--)
{
if(OrderSelect(n,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
bool del=OrderDelete(OrderTicket());
if (del==true)
{
otl_b=0; otl_s=0; //обнуляем переменные отложек
}
}
}
}
}
Você está tentando excluir uma ordem de mercado, eles não são excluídos, são fechados usando a função OrderClose(). Para que o laço seja apagado ou fechado corretamente, temos que distinguir o pedido por seu tipo.
if(OrderType()<=OP_SELL) - para ordens de mercado, if(OrderType()>OP_SELL) - para ordens pendentes.
Há uma coisa chamadaCHARTEVENT_MOUSE_MOVE
Pergunta: isto funciona em dispositivos móveis onde não há mouse?
Favor informar como deve ser a condição. Se um stop loss é acionado, então o lote é multiplicado por 2, e se a próxima ordem aciona um take profit, o lote retornaria ao lote original, que era antes do stop loss.
Eu entendo assim, mas não sei como continuar...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
Favor informar como deve ser a condição. Se um stop loss é acionado, então o lote é multiplicado por 2, e se a próxima ordem aciona um take profit, o lote retornaria ao lote original, que era antes do stop loss.
Eu entendo assim, mas não sei como continuar...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
A solução para este problema depende da lógica completa do Expert Advisor, você pode rastrear o acionamento do stoploss ou takeprofit através de seu comentário.
if(StringFind(OrderComment(),"tp")>=0)// сработал тейкпрофит
...
Você não entende.
Você precisa fazer uma única função que preencha e classifique o conjunto declarado a nível global. A matriz terá que ser passada para a função por referência.
E você precisa de funções adicionais que retirarão os dados de que precisa desta matriz.