Pergunta do assessor multimoedas - página 12

 

Boa tarde. Função MiniMaxOrderPrice(Símbolo(), -1, OP_BUYSTOP, 1 )

exibe corretamente uma ordem de registro que está atualmente mais distante do preço atual do que outras ordens.

Tenho que apagar esta ordem "distante" se o número de ordens colocadas exceder o valor especificado.

Eu o faço assim:

//--------Удаление лишних ордеров--------------

if ( NumberOfOrders(NULL,OP_BUYSTOP,-1)> Количество_ордеров_  ){
//если число ордеров больше заданного

 for (int v=0; v<OrdersTotal(); v++)                                   {       
  if (OrderSelect( v, SELECT_BY_TICKET, MODE_TRADES))                    {
// перебираем по тикету
           
   if (OrderSymbol()==Symbol())                                        {                  
    if (OrderType() == OP_BUYSTOP)     { выбираем байстопы 


if (OrderTicket()== MiniMaxOrderPrice(Symbol(), -1,OP_BUYSTOP,1) )
//если тикет равен тикету самого дальнего ордера, - удаляем его

{     OrderDelete(OrderTicket(),Yellow);     return(0);    }
             }}}}} 


Mas infelizmente não é a ordem mais distante que é eliminada (se for eliminada) de forma alguma.

No entanto, posso ver no comentário e no gráfico que a função

MiniMaxOrderPrice(Symbol(), -1,OP_BUYSTOP,1)
é o bilhete mais longínquo que é devolvido.

Mas é a ordem mais distante que é removida. E então, após várias exclusões, começamos a receber 4108 erros de eliminação de pedidos (bilhete errado/ bilhete desconhecido).

Aparentemente há um erro no código nas últimas 2-3 linhas.... !

Por favor, informe onde pode haver um erro ...? ??


 
rid писал(а) >>

Boa tarde. Função MiniMaxOrderPrice(Símbolo(), -1, OP_BUYSTOP, 1 )

exibe corretamente uma ordem de registro que está atualmente mais distante do preço atual do que outras ordens.

Tenho que apagar esta ordem "distante" se o número de ordens colocadas exceder o valor especificado.

Eu o faço assim:


Mas infelizmente não é a ordem mais distante que é eliminada (se for eliminada).

Embora, no comentário e visualmente no gráfico, eu veja que a função

devolve o bilhete exatamente o mais distante possível.

Mas ele elimina o fechamento por alguma razão. E então, após várias exclusões, os erros de exclusão do pedido 4108 começam a acontecer (bilhete errado/ bilhete desconhecido).

Aparentemente há um erro no código nas últimas 2-3 linhas.... !

Por favor, informe onde pode haver um erro ...? ??

int DeleteTicket= MiniMaxOrderPrice(Symbol(), -1,OP_BUYSTOP,1);
OrderSelect( DeleteTicket, SELECT_BY_TICKET);
OrderDelete(OrderTicket(),Yellow);  
Você poderia fazer algo assim, embora eu não tenha certeza de que seja a melhor opção
 
Obrigado. Vou tentar.
 

Sim...

Parece que a classificação por bilhete nesta situação é um negócio complicado e não muito correto.

O programa fica confuso nos ingressos! Está ficando atrasado na saída. Elimina pedidos fora de ordem...

Tentarei estabelecer pedidos com diferentes feitiços. E depois ordenar por mágico com todas as implicações...

 

Se você não se importa, posso dar uma olhada em todo o código, verifique. vinin@mail.ru

 

OK! Obrigado. Vou limpar o ranho no código, escová-lo e mandá-lo para cá.

 

Pode me dizer algo, por favor? Se eu abrir um monte de gráficos e colocar um EA em cada gráfico, cada um deles vai funcionar ou apenas o da janela ativa do gráfico?

 

Sim - é provável que seja este o caso. Todos os EAs funcionarão, em todas as janelas.

Além disso, dê uma olhada nos parâmetros da EA.

Deve haver uma opção mágica ou algo semelhante. SIMILAR.

Ou seja, este é o parâmetro pelo qual a EA distingue as ordens e posições "alienígenas" das suas próprias!

Como disse o poeta! -

Se um homem é fiel a mim - ele é meu irmão,
Um irmão infiel é meu inimigo, amaldiçoe-o cem vezes.
A medicina às vezes é mais perigosa do que o veneno,
A doença às vezes cura o veneno. (O.H.)

Em outras palavras, os mandados emitidos por outro especialista, com outro mágico, cada especialista em particular não presta atenção. E expõe e "pega para modificação" ou fecha apenas o seu próprio, com o mágico especificamente definido por ele!

É isso aí...

 

Será que cada um tem seu próprio feiticeiro e apenas uma posição permitida de cada vez, a EA abrirá uma posição se já houver uma posição aberta?

por outro EA?

 

A pergunta é formulada de forma vaga, mas eu a entendi.

A resposta é - Sim! - claro que vai! Pois é o que se diz:

Quem na taça da vida deve brilhar uma gota?
Você ou eu? Ele brilhará e desaparecerá.
E o portador de copos da vida, - milhões
Salpicos e respingos radiantes e derramamentos (0,X.)

//-------------------------------------------------------------

Independentemente da existência de posições abertas no terminal para um determinado instrumento. Aberto manualmente ou por outro Expert Advisor.

Mas se o magik dessas posições abertas não corresponder ao magik da EA específica em questão, então esta EA abrirá sua própria posição com seu próprio magik! Apesar da presença de outras posições (com um Mago diferente) para este instrumento.