[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 176

 
eddy:
Como você define a última ordem? Por tempo. Bem, olhe no código para ver qual ordem é a mais recente por tempo.


Eu já descobri por conta própria. Mas eu ainda não entendo sua última dica. É possível puxar todos os pedidos e ver qual deles foi o mais recente no tempo? Então, você quer puxar todos os pedidos e comparar os horários de fechamento de todos os pedidos? Mostre-me o código de como fazer isso.

Eu resolvi desta maneira:

int z;
int _bar;

int start()

{

z=OrdersHistoryTotal()-1;
OrderSelect(z,SELECT_BY_POS,MODE_HISTORY);
if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)
{
if(OrderProfit()> 0)
PlaySound("profit.wav");
if(OrderProfit()== 0)
PlaySound("zero.wav");
if(OrderProfit()< 0)
PlaySound("loss.wav");
}

Acontece que se 1 for substituído por z, será selecionada a ordem mais antiga, que é logicamente a mais recente, então eu tomei OrderHistoryTotal() (ele retorna o número de ordens na história) e a substituí ao invés do índice. Entretanto, acontece que a OrderHistoryTotal() retorna 1 a mais do que realmente é. Minha história teve 6 ordens, mas a OrderHistoryTotal() devolve 7 ordens. Portanto, escrevi z=OrdensHistóriaTotal()-1;. Mas eu não sabia antes o que usar no índice para selecionar o último. Eu mesmo tive que descobrir porque ninguém me disse nada.

 
Reaktiv:

if(TimeCurrent() - OrderCloseTime() > 1& TimeCurrent() - OrderCloseTime() < 7)

Isto é fundamentalmente errado e nem sempre funcionará, mesmo no testador.
 
sergeev:
é fundamentalmente errado e nem sempre funcionará mesmo em um testador.

Portanto, por favor, mostre-me como fazê-lo corretamente. Há muitos exemplos no livro didático que não existem.
 
Reaktiv:

Portanto, mostre-me como fazê-lo corretamente, pois você sabe que o livro didático não contém muitos exemplos.

qualquer solução depende das metas estabelecidas.

Se você quer encontrar a última ordem na história é uma coisa, mas se você quer determinar como a última ordem de sua EA fechou, isso é outra coisa.

 
sergeev:

qualquer solução depende dos objetivos que você estabelecer.

Se você quiser encontrar a última ordem na história, isso é uma coisa, mas se você simplesmente der como a última ordem de sua EA fechou, isso é outra.


Quero que a música comece a tocar depois que o pedido for fechado e, dependendo do lucro, a música será tocada. No meu exemplo, eu queria que ele tocasse se passassem de 1 a 7 segundos desde que o pedido foi fechado.
 

então o esquema deve ser o seguinte

1. No momento de um pedido bem sucedido, você deve se lembrar do bilhete de pedido(GlobalVariableSet)

2. Em cada tick, verifique o ticket deste pedido lembrado(GlobalVariableGet) para fechamento(OrderCloseTime)

Se o pedido for fechado, então dê um som apropriado para lucro e apague o Ticket memorizado(GlobalVariableDel)

4. Se você ainda quiser verificar por 1-7 segundos, então esta verificação pode ser incluída na análise, mas você deve lembrar que os carrapatos podem vir com um atraso de 10 segundos ou mais, e você perderá o sinal.

 
sergeev:

então o esquema deve ser o seguinte

1. No momento de um pedido bem sucedido, você deve se lembrar do bilhete de pedido(GlobalVariableSet)

2. Em cada tick, verifique o ticket deste pedido lembrado(GlobalVariableGet) para fechamento(OrderCloseTime)

Se o pedido for fechado, então dê um som apropriado para lucro e apague o Ticket memorizado(GlobalVariableDel)

4. Se você ainda quiser verificar por 1-7 segundos, então esta verificação pode ser incluída na análise, mas você deve lembrar que os carrapatos podem vir com um atraso de 10 segundos ou mais, e você perderá o sinal.



A OrderSend tem que ser enviada pelo Expert Advisor ou não faz diferença? O sistema se baseia no fato de que eu mesmo abro negócios manualmente. O Expert Advisor modifica a ordem após ser aberta (coloca paradas) e depois toca música quando fecha uma posição. Quanto ao fato de que os carrapatos podem estar 10 segundos atrasados, eu entendo isso. Não vou usar a EA no momento como agora. Uso minha EA na EUROBAX das 9h às 18h onde tal atraso é improvável.
 
Reaktiv:

E o próprio conselheiro modifica a ordem (coloca paradas) quando o comércio é aberto

Então, no seu caso, este será o ponto onde o bilhete de pedido é levado.
 
sergeev:
então, no seu caso, este é o ponto em que a passagem de pedido é tomada.

obrigado
 
Reaktiv:
Eu queria que a música tocasse se passassem de 1 a 7 segundos desde que o pedido foi fechado.
Por quê? Você pode simplesmente tocar música uma vez que o pedido tenha sido fechado