Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 963

 

simatztek, peço desculpas pela imprecisão na descrição:

1. Porque antes do cruzamento com o MA, estas eram ordens de compra e Ur1 Ur2 Ur3 são identificadas somente após o preço cruzar o MA.

2. e, respectivamente, as buscas por ciclo acima mencionadas entre todos os pedidos de compra (já que há mais 3 pedidos de parada de venda e eles rastejam em um MA diferente a cada candelabro)

 
vadimvborisov:


simatztek, peço desculpas pela imprecisão na descrição:

1. Porque antes do cruzamento com o MA, estas eram ordens de compra e Ur1 Ur2 Ur3 são identificadas somente após o preço cruzar o MA.

2. e, respectivamente, as buscas por ciclo acima mencionadas entre todos os pedidos de compra (já que há mais 3 pedidos de parada de venda e eles rastejam em um MA diferente a cada candelabro)

1. Você disse:
Советник открывает (на основании пересечения с MA ) несколько (3) рыночных ордеров

As ordens de parada se tornam comercializáveis no momento em que são cruzadas pelo preço, MA não tem nada a ver com isso.
Ok, cabe a você decidir como funciona sua EA.

2. Qual é a finalidade - ?
 bool mod_Buy1 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur1,0,clrNONE);
 bool mod_Buy2 = OrderModify ( OrderTicket(???),OrderOpenPrice (), NULL,Ur2,0,clrNONE);
 bool mod_Buy3 = OrderModify (OrderTicket(???),OrderOpenPrice (), NULL,Ur3,0,clrNONE);

Isto é, para cada ciclo no "para" você vê uma ordem, e não todas as três ao mesmo tempo.
 

atztek, 1. eu já corrigi meu primeiro posto.

2. Atribuição debool mod_Buy1 = Modificar pedido (OrderTicket (o primeiro pedido de compra dos anteriores), não alterar o preço de abertura, não alterar o StopLoss, TakeProfit é retirado de Ur1,0,clrNONE);

"Em outras palavras, em cada laço do "para" você vê uma ordem, mas não todas as três ao mesmo tempo.

É isso mesmo, não consigo descobrir como passar por esses 3 pedidos por bilhete e estabelecer níveis de Takeprofit apropriados para cada um deles(Ur1 Ur2 Ur3).

 
vadimvborisov:

atztek, 1. eu já corrigi meu primeiro posto.

2. Atribuição debool mod_Buy1 = Modificar pedido (OrderTicket (o primeiro pedido de compra dos anteriores), não alterar o preço de abertura, não alterar o StopLoss, TakeProfit é retirado de Ur1,0,clrNONE);

"Em outras palavras, em cada laço do "para" você vê uma ordem, mas não todas as três ao mesmo tempo.

É isso mesmo, não consigo descobrir como passar por esses 3 pedidos por bilhete e estabelecer níveis de Takeprofit apropriados para cada um deles(Ur1 Ur2 Ur3).


1. ou eu não entendo você, ou você não sabe o que você quer fazer (ou como funciona).
Você mesmo depois de corrigir você fala em ter ordens de parada e depois "depois de cruzar o MA" elas se tornaram ordens de mercado.
- Você abre ordens de mercado imediatamente (por exemplo, "após atravessar o MA") ou abre ordens stop que se tornam automaticamente ordens de mercado no momento em que o preço as atravessa.

2. Vejo que isto não é uma questão de correção, mas a lógica de sua EA
(há muitas perguntas, por exemplo, se você tem outros pedidos abertos neste momento, por que os pedidos são selecionados com base no bilhete, e não nas posições, etc.)
Não comece com 3 pedidos ao mesmo tempo, comece com um simples exemplo com um pedido, e certifique-se de que o Expert Advisor trabalhe sem erros. Em seguida, complicar adicionando 3 pedidos.
 

1) sim exatamente -"você abre ordens stop que se tornam automaticamente ordens de mercado no momento em que o preço as atravessa". "

2) Não há outras ordens (de mercado) no momento em que as ordens limitadas são convertidas em ordens de mercado, apenas ordens limitadas. Talvez você também possa selecionar por posição e não por bilhete - eu não me importo. Ok. vamos considerar a situação com Dois pedidos. porque eu mesmo posso lidar com Um....

 
vadimvborisov:

1) sim exatamente -"você abre ordens stop que se tornam automaticamente ordens de mercado no momento em que o preço as atravessa". "

2) Não há outras ordens (de mercado) no momento em que as ordens limitadas são convertidas em ordens de mercado, apenas ordens limitadas. Talvez você também possa selecionar por posição e não por bilhete - eu não me importo. Ok. vamos considerar a situação com Dois pedidos. porque eu mesmo posso lidar com Um....

Os limites já entraram?
Muito bem, vamos fazer isso. Quando você tiver um, o resto ficará claro.
 
vadimvborisov:

1) sim exatamente -"você abre ordens stop que se tornam automaticamente ordens de mercado no momento em que o preço as atravessa". "

2) Não há outras ordens (de mercado) no momento em que as ordens limitadas são convertidas em ordens de mercado, apenas ordens limitadas. Talvez você também possa selecionar por posição e não por bilhete - eu não me importo. Ok. vamos considerar a situação com Dois pedidos. porque eu mesmo posso lidar com Um....

É exatamente o que precisamos.

int i, total = OrdersTotal();
for(i = 0; i < total; i++)
{
 if(OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY)
  {
   bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
  }
}
 

1. desculpe, eu quis dizer parar as ordens.

2. com 1 tudo funciona. mas com dois ou mais não consigo entender....

 

Saudações,AlexeyVik

bool mod_Buy1 = Modificar Pedido ( OrderTicket(a i-ésima compra dos buscados)

e para outros dois como comprar? Da mesma forma?

////////////////////////////
 int i, total = OrdersTotal();
for(i = 0; i < total; i++)
{
 if(OrderSelect(i, SELECT_BY_POS) && OrderType() == OP_BUY)
  {
   bool mod_Buy1 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
   bool mod_Buy2 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
   bool mod_Buy3 = Модифицировать ордер ( OrderTicket(i-тый BUY из перебранных )
  }
}
 
vadimvborisov:

Saudações,AlexeyVik

bool mod_Buy1 = Modificar Pedido ( OrderTicket(a i-ésima compra dos buscados)

e para outros dois como comprar? Da mesma forma?

Observe o laço no meu exemplo. No loop, todos os pedidos são verificados por tipo, também são verificados por símbolos e magia e seria bom verificar OrderStopLoss == 0 ou OrderTakeProfit == 0 dependendo do que é importante, seja o pedido sem parada ou sem ordem de retirada, para não tentar modificar o pedido desnecessariamente e não obter erro 1.

Neste loop, a ordem é selecionada uma após a outra, e se todas as condições forem cumpridas, ela é enviada para ser modificada. Isto modificará todas as ordens necessárias.

A segunda variante: Se apenas 3 pedidos foram fornecidos, podemos declarar, por exemplo, int tick_buy_1, tick_buy_2, tick_buy_3 no nível das variáveis globais e registrar os ticks nestas variáveis ao abrir o pedido. Então podemos selecionar o pedido por bilhete, verificar seu tipo, se o pedido está fechado ou não, e só então, sem o laço.

   bool mod_Buy1 = Модифицировать ордер ( tick_buy_1 );
   bool mod_Buy2 = Модифицировать ордер ( tick_buy_2 );
   bool mod_Buy3 = Модифицировать ордер ( tick_buy_3 );