[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 49
Olá, você poderia me dar uma dica, por favor? No seguinte código, eu recebo o horário de fechamento do último pedido para uma determinada segurança:
for(j=0; j<OrdersHistoryTotal(); j++) if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)) if (OrderSymbol()==Symbol()) { datetime ctm=OrderCloseTime(); break; }
Eu gostaria que a próxima ordem nesta segurança fosse aberta somente após três barras, ou seja, na quarta barra, mas não antes. Como posso fazer um cheque?
Estou passando pela história, todas as ordens estão lá?
Aqui. A função lhe devolverá o número do bar do último bar fechado por esta EA:
int BarLastClosePose() {
datetime t;
for (int i=0; i<OrdersHistoryTotal(); i++) {
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
if (OrderMagicNumber()!=Magic) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()>1) continue;
if (t<OrderCloseTime()) t=OrderCloseTime();
}
}
return(iBarShift(Symbol(), Period(), t, True));
}
Você chama, por exemplo, int BarClose=BarLastClosePose();
A variável BarClose armazenará o número da barra da última posição fechada, ou -1 (se não houver barra). Magia - magia EA - escreva ali sua variável. Ou, apague esta linha se quiser verificar todos os pedidos (mesmo aqueles que foram feitos por outra EA ou que foram abertos manualmente por você mesmo) E então você pode verificar quando o próximo pedido pode ser aberto (depois de quantas barras).
Geralmente, o objetivo é abrir uma ordem somente após pelo menos três barras, ou seja, na quarta barra, mas não antes, após a última ordem fechada sobre a segurança. Para fazer isto, eu percorro a história e se eu vejo uma ordem para esta segurança da história, eu a considero fechada e última. Estou errado ao pensar que as ordens serão selecionadas em ordem cronológica?
first_may: Geralmente, o objetivo é abrir uma ordem somente após pelo menos três barras, ou seja, na quarta barra, mas não antes, após a última ordem fechada sobre a segurança. Para fazer isto, eu percorro a história e se eu vejo uma ordem sobre esta segurança da história, eu a considero fechada e última. Estou errado ao pensar que as ordens serão selecionadas em ordem cronológica?
Você está errado em não querer estudar o exemplo acima
Pessoal, ajudem-me com o código: Por que este EA não faz uma pausa em uma passagem de MA.
Só abrirá pedidos a partir do segundo. Nem mesmo a partir do segundo, mas a partir do terceiro.É isso que você tem em mente?
DhP, Roman, obrigado!!!!!!
A limpeza foi bem sucedida?
for(j=0; j<OrdersHistoryTotal(); j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
if (OrderSymbol()==Symbol())
{
datetime ctm=OrderCloseTime();
break;
}
Eu gostaria que a próxima ordem nesta segurança fosse aberta somente após três barras, ou seja, na quarta barra, mas não antes. Como posso fazer um cheque?
Olá, você poderia me dar uma dica? No código a seguir, recebo o horário de fechamento do último pedido para uma determinada segurança:
for(j=0; j<OrdersHistoryTotal(); j++)
se (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
se (OrderSymbol()==Symbol())
{
datetime ctm=OrderCloseTime();
pausa;
}
Quero abrir a próxima ordem para esta segurança após três barras, ou seja, na quarta barra, mas não antes. Como posso fazer um cheque?
Você tem certeza de que é o último a ser fechado? E se for o primeiro que você encontrar? Você está caindo fora do loop.
Você tem certeza de que é o último a ser fechado? E se for o primeiro que você encontrar? Você está caindo fora do circuito, não está?
Eu estou passando pela história, não estão todos os mandados lá?
Estou passando pela história, não estão lá todas as encomendas?
você percorre a história até a primeira ordem no símbolo, após a qual quebra - você desiste do laço.
Se você tivesse 100 pedidos, você verá apenas um
.
Estou passando pela história, todas as ordens estão lá?
Aqui. A função lhe devolverá o número do bar do último bar fechado por esta EA:
Você chama, por exemplo, int BarClose=BarLastClosePose();
A variável BarClose armazenará o número da barra da última posição fechada, ou -1 (se não houver barra). Magia - magia EA - escreva ali sua variável.
Ou, apague esta linha se quiser verificar todos os pedidos (mesmo aqueles que foram feitos por outra EA ou que foram abertos manualmente por você mesmo)
E então você pode verificar quando o próximo pedido pode ser aberto (depois de quantas barras).
Geralmente, o objetivo é abrir uma ordem somente após pelo menos três barras, ou seja, na quarta barra, mas não antes, após a última ordem fechada sobre a segurança. Para fazer isto, eu percorro a história e se eu vejo uma ordem sobre esta segurança da história, eu a considero fechada e última. Estou errado ao pensar que as ordens serão selecionadas em ordem cronológica?