[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

 
vovan-gogan:
Pessoal, ajudem-me com o código: Por que este EA não faz uma pausa em uma passagem de MA.


É isso que você tem em mente?

if (OrdersTotal()<= 1)
   return;
Só abrirá pedidos a partir do segundo. Nem mesmo a partir do segundo, mas a partir do terceiro.
 
DhP, Roman, obrigado!!!!!!
 
Dimka-novitsek:
DhP, Roman, obrigado!!!!!!

A limpeza foi bem sucedida?
 
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?
 
first_may:
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.

 
artmedia70:

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á?
 
first_may:

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
.

 
first_may:

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