[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 227
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
Olá, eis o problema: a EA estabelece ordens de limite pendentes, depois o preço se move e as ordens se tornam ordens de mercado. Tudo funciona, mas em algumas ordens há uma falha absolutamente obscura, já que todas as ordens são definidas através de uma certa constante fixa "K", a distância entre elas deve ser sempre uma constante (Rn+1 = Rn + "K"). Entretanto, não temos sorte; a ordem está aberta, o preço é indicado e tudo é verificado, mas a distância da ordem anterior à seguinte não é igual a "K". Se verificarmos os resultados das operações aritméticas com os preços, ou seja, se apenas subtrairmos e verificarmos o resultado, ele é igual a "K"; entretanto a comparação lógica === ainda mostra falso e isso leva a EA a abrir constantemente ordens a esse preço e assim "pensar" que não há ordem ali. Desculpe se é muito longo, só queria explicar com mais detalhes. Honestamente, eu realmente não entendo o que fazer :(
Muito obrigado! Mas há este TestGenerator 2011.09.30 21:26:49: erro de dados incomparável (limite de volume 13634 em 2011.07.19 20:00 excedido)
Tanto quanto entendi, esta mensagem não diz respeito ao Conselheiro Especialista, mas ainda gostaria de saber como entendê-la?
Ajude a corrigir a função
Estou tentando escrever uma função que determina o preço de fechamento do último pedido (no horário mais próximo ao atual)
Eu o escrevo assim:
Mas
do
uble PriceCloseLastPos(string smb = "", int cmd = -1, int mMin = -1, int mMax = -1) {
int ticketDateTime=0;
int orderTicket=-1;
duplo fechamentoPreço = 0;
int ordTotal = OrdersTotal();
se (smb == "0") smb = Symbol();
para (int i = 0; i < ordTotal; i++) {
se (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol() == smb || smb == "") {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
if (cmd < OP_BUY || OrderType() == cmd) {
if (mMin < 0 ||| (OrderMagicNumber() >= mMin && OrderMagicNumber() <= mMax)) {
se (ticketDateTime < OrderCloseTime()) {
ticketDateTime = OrderCloseTime();
orderTicket = OrderTicket();
closePrice = OrderClosePrice();
}
}
}
}
}
}
}
if(orderTicket > -1) OrderSelect(orderTicket, SELECT_BY_TICKET, MODE_HISTORY );
retorno(fecharPreço);
}
Mas por alguma razão, a função retorna os dados da primeira encomenda que foi aberta no testador.
Na verdade, este é meu objetivo intermediário. Eu queria escrever uma função que desse o último preço de fechamento de um pedido parcial (não para o volume total do lote). Mas não sei como me incomodar...
Em vez disso...
... Próximo ...
Aqui, eu vejo que seu conhecimento não é muito bom. Ao selecionar um pedido por bilhete, o parâmetro do pool é ignorado. Ou seja, é inútil escrever MODE_HISTORY - este parâmetro se refere apenas à seleção por índice.
Se um pedido foi selecionado por bilhete, você precisa verificar o horário de fechamento para garantir que ele foi selecionado a partir da lista de pedidos fechados. Deve ser maior que zero - somente as posições fechadas têm este parâmetro >0.
No período de 5 minutos no terminal comercial MT4, o histórico não é exibido. Isto pode ser resolvido?
Peço desculpas pela pergunta grosseira. Eu quis dizer que a história antes de novembro de 2010 não é exibida :)
Portanto, não está lá. Você também pode esclarecer. Tente fazer mais barras na tabela em configurações MT4.
Resolve-se baixando ou comprando um histórico mais longo.
Então ela não existe. Você também pode esclarecer. Tente fazer mais barras na tabela em configurações MT4.
Isto pode ser resolvido baixando ou comprando um histórico mais longo.
Qual é o número máximo de barras na história? Talvez a história já tenha sido aparada.