OrderModify() pergunta - página 2

 
WhooDoo22:

Ah-ha! troquei o bilhete número 0 para 1 e tudo funcionou como um relógio. Sim, eu estava errado, William... A função OrderSelect() foi um problema. Obviamente, a função OrderSelect() deve selecionar um bilhete. Se o número do bilhete for 0, qual bilhete a EA selecionará? :O "?". Obrigado a ambos por sua assistência.

Obrigado a ambos.

O número do bilhete NUNCA será 0 . . . não é um número de bilhete válido.


Por favor, consulte este tópico:https://www.mql5.com/en/forum/142545
 

Simon, entendo que 0 não é um número válido de bilhete BECAUSE 0 significa que não há bilhetes para selecionar. 1 representa um bilhete E o número específico do bilhete que a função OrderSelect() está tentando selecionar.

Vou ler o tópico. Obrigado por publicá-lo.

Obrigado.

 
WhooDoo22:

Entendo que 0 não é um número de bilhete válido BECAUSE 0 significa que não há bilhetes para selecionar. 1 representa um bilhete E o número de bilhete específico que a função OrderSelect() está atualmente selecionando.

Não, isso não é correto. zero como número de bilhete não significa nada, é INVÁLIDO. OrdensTotal() == 0 significa que não há ordens . . . é óbvio que você está misturando os resultados de diferentes funções e números de bilhete vs posições de ordem


Não faça exatamente o que você fez antes ... . . a menos que você queira exatamente o mesmo resultado. Você não pode assumir que tem o número correto do bilhete ... . . você precisa encontrá-lo no Order Pool e depois selecioná-lo . .

Se você quiser aprender, faça este exercício:

  • abrir uma nova conta Demo com qualquer Corretor
  • colocar uma ordem de mercado para 0,1 lotes sem TP ou SL
  • escreva algum código que encontre o número correto do bilhete para este pedido, depois use o número do bilhete para selecionar o pedido, depois o modifique para que tenha um TP & SL e finalmente o feche.

 
RaptorUK:

Não, isso não é correto. zero como número de bilhete não significa nada, é INVÁLIDO. OrdensTotal() == 0 significa que não há ordens . . . é óbvio que você está misturando os resultados de diferentes funções e números de bilhetes

Se você quiser aprender, faça este exercício:

  • abrir uma nova conta Demo com qualquer Corretor
  • colocar uma ordem de mercado para 0,1 lotes sem TP ou SL
  • escreva algum código que encontre o número correto do bilhete para este pedido, depois use o número do bilhete para selecionar o pedido, depois o modifique para que tenha um TP & SL e finalmente o feche.


Você tentou o exercício? mostre seu código quando o tiver feito...
 

Simon,

Eu vou codificar este projeto. Deve ser uma peça a' bolo. Eu já fiz a maior parte do trabalho ;)

Sim, não me importo de fazer este exercício, vendo que você tem dado seu apoio consistente.

Obrigado.

 

Simon,

Feito. Eu assumi que você queria o arquivo em formato de script, então você poderia simplesmente arrastá-lo e soltá-lo em um gráfico, esperar que a EA esmagasse alguns números, depois vê-lo puxar uma ordem para fora do mercado.

As diferenças entre o que eu estou construindo atualmente e este projeto são...

atualmente em construção:

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)){

Este projeto:

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)){

A razão pela qual usei "if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)){", é porque estou lidando com um pool de pedidos e não com uma variável específica pré-definida do bilhete.

Minha construção atual para o volume II usa variáveis predefinidas porque devo selecionar bilhetes específicos para executar a estratégia do volume II. Este projeto foi projetado para simplesmente fechar um pedido num piscar de olhos.

Na verdade, eu tinha alguns pontos de interrogação acima de minha cabeça enquanto codificava a execução da função contendo o preço de compra/venda. Isto porque, normalmente ao enviar/fechar ordens, eu geralmente apenas digito "Ask"/"Bid", mas percebi que precisava definir uma variável que poderia ser o preço Ask ou Bid baseado na condição se a ordem no mercado fosse uma ordem de venda OU de compra. Em seguida, eu apenas apareci no habitual "se o total de ordens for maior que zero", n' estava tudo definido. Isso deve cobrir bastante o assunto.

Obrigado.

Arquivos anexados:
 

OK, não é o que eu pretendia, mas eu deveria ter sido mais claro com minhas exigências. . seu código não define um SL & TP . . . mas de qualquer forma, deixe-me revisar minha exigência . . .

Usando a mesma conta Demo . .

  • colocar uma ordem de mercado para 0,1 lotes sem TP ou SL em GBPUSD, uma em USDJPY e outra em EURUSD ... esquecer a ordem em que você colocou estas ordens
  • sem qualquer consideração da ordem em que as negociações foram feitas e assumindo que não há conhecimento prévio do número de ordens feitas escreva algum código que irá encontrar o número correto do ticket para a ordem feita em USDJPY
  • imprimir o número do bilhete para o log no formulário "Número do bilhete para USDJPY =".
  • depois usar o número do bilhete para selecionar o pedido, depois modificá-lo para que tenha um TP & SL e finalmente fechá-lo.

então, quando terminar, mostre seu código e a linha do registro mostrando o número do bilhete

 

Simon,

Ah, desculpe, eu não li completamente suas primeiras instruções, e não codifiquei o que você pediu. Ah, bem, você adicionou uma nova lista de requisitos, então vou me ocupar.

Antes de fazê-lo, direi o que estou prestes a fazer...

1. Encontre o número do bilhete de encomenda colocado em USDJPY.

2. Imprima o número do bilhete para o log no formulário "Número do bilhete para USDJPY =".

3. Use o número do bilhete para selecionar o pedido E modificar o pedido para que tenha um TP & SL e fechá-lo.

4. Mostre o código e uma linha do registro mostrando o número do ingresso.


Com isto dito, quero deixar claro que estamos na mesma página.

Sim, eu posso fazer 1. (obviamente não posso usar as "funções de moeda" para isolar os bilhetes, certo?)

Sim, eu posso fazer 2.

3. Você não quer dizer, usar a função OrderSelect() para selecionar a ordem E modificá-la para que tenha um TP & SL e fechá-la?

4. Obvioiusly, vou mostrar o código ;)... uma linha do log mostrando o número do ticket ( o que você poderia ter pedido era uma "foto visual" do log mostrando o número do ticket. Não há nada)

Favor enviar uma resposta antes de começar a tarefa.


Obrigado.

 
WhooDoo22:


Dito isto, quero ser claro que estamos na mesma página.

Sim, eu posso fazer 1. (obviamente eu não posso usar as "funções de moeda" para isolar os bilhetes, certo?)

Sim, eu posso fazer 2.

3. Você não quer dizer, usar a função OrderSelect() para selecionar a ordem E modificá-la para que ela tenha um TP & SL e fechá-la?

4. Obvioiusly, vou mostrar o código ;)... uma linha do registro mostrando o número do bilhete ( o que você poderia ter pedido era uma "foto visual" do registro mostrando o número do bilhete. Não há nada)

Você pode usar as funções que quiser, desde que o que você codificar atenda à exigência . . e ao fazer isso você não quebra o que é dado como condição, por exemplo,"sem nenhuma consideração da ordem em que as negociações foram colocadas e assumindo nenhum conhecimento prévio do número de ordens colocadas" . :-)
 
Como está indo ? precisa de algum esclarecimento ou dicas ?