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 1132
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
Em algum lugar da ajuda, os desenvolvedores disseram que nenhuma classificação é garantida.
Há sempre um pedido no bilhete. O bilhete de um pedido posterior nunca será menor que o de um pedido anterior (por ocasião da abertura).
E se procurarmos entre as ordens pendentes, então apenas em ordem - a ordem com número 0 - é a ordem mais antiga, e a ordem com número OrdersTotal()-1 será a ordem mais recente (novamente, por tempo aberto), sem levar em conta o tipo.
No histórico das ordens fechadas, ainda depende da classificação na guia de histórico da janela do terminal.
Tive que pesquisar. Não o encontrei na Referência MQL5, mas o encontrei na Referência OrderSelect para MQL4:
"Ao utilizar o parâmetro SELECT_BY_POS, a informação é devolvida na ordem em que foi recebida do servidor comercial. Não é garantida a classificação da lista de pedidos recebidos".
Na verdade, eu verifico sistematicamente se as listas que utilizo têm ordenação por número de bilhete. Não houve casos de sua ausência. Mas também não se pode discutir com a referência, não há argumentos. Ainda bem que é assim...
Tive que pesquisar. Não o encontrei na Referência MQL5, mas o encontrei na Referência OrderSelect para MQL4:
"Ao utilizar o parâmetro SELECT_BY_POS, a informação é devolvida na ordem em que foi recebida do servidor comercial. Não é garantida a classificação da lista de pedidos recebidos".
Na verdade, eu verifico sistematicamente se as listas que utilizo têm ordenação por número de bilhete. Não houve casos de sua ausência. Mas também não se pode discutir com a referência, não há argumentos. Ainda bem que é assim...
O que você quer dizer com "sem classificação"? Ordenar por bilhete - sempre haverá ordem e não há contradição com a documentação, diz sobre ordenação por número de bilhete, não por bilhete, estas são coisas diferentes.
Execute este código, e leia o log
void OnTick()
{
//--
if(flag)
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
Print(i," = ",OrderOpenTime());
}
}
flag=false;
}
//-
}
Outro problema que eu encontrei! Não julgue, estou estudando o idioma há 2-3 semanas, talvez eu seja apenas burro!
A tarefa no Expert Advisor é notificar o trader via e-mail a cada 4 horas, se a margem livre na conta tiver acrescentado um certo valor.
No assunto da mensagem você tem que escrever o nome do corretor e do par negociado, e no corpo da mensagem "Perigo! O saque está acima do limite. Tomar as medidas necessárias".
O compilador está com defeito de funcionamento, não sou bom em inglês e não consigo descobrir qual é o erro!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Talvez em geral haja uma solução mais fácil para este tipo de problema, mas até agora só vejo desta maneira)
Outro problema que eu encontrei! Não julgue, estou estudando o idioma há 2-3 semanas, talvez eu seja apenas burro!
A tarefa no Expert Advisor é notificar o trader via e-mail a cada 4 horas, se a margem livre na conta tiver acrescentado um certo valor.
No assunto da mensagem você tem que escrever o nome do corretor e do par negociado, e no corpo da mensagem "Perigo! O saque está acima do limite. Tomar as medidas necessárias".
O compilador está reclamando, eu não sou bom em inglês e não consigo descobrir qual é o erro!
double Sag;
void OnTick()
{
Sag = NormalizeDouble(100-100*(AccountInfoDouble(ACCOUNT_FREEMARGIN)/AccountInfoDouble(ACCOUNT_BALANCE)), 1); //находим процент просадки и округляем до 1 знака
if(Sag > MessageMail && iVolume(NULL,PERIOD_H4,0)<3) //если просадка больше заданного и начата новая свеча на 4ч таймфрейме
{
Alert(Symbol(), ": Просадка = ", Sag, " % ", " > ", MessageMail, " % "); //вывести предупреждение в терминале
//Сюда нужно вставить команду SendMail для отправки сообщения, а что и как не понятно
// пробовал bool SendMail( AccountInfoString(ACCOUNT_COMPANY)|Symbol, "Опасность! Просадка привысила допустимое значение. Примите необходимые меры")
//что то не выходит
}
}
PS: Talvez em geral exista uma solução mais simples para tal problema, mas até agora só vejo isso desta forma)
Eu não sei do que se trata.
Quais são os erros do compilador
prıvet.podjalujte pojalusta pozwala why on demo schete ne mogu otkrıt zdelkı