OrderModify() pergunta

 

Olá Fórum MQL4,

{OrderModify(ticket,0,Ask-500*Point,0,0,Blue);}}}}

O código acima funciona, mas move a barra para cima ou para baixo à medida que o preço pedido se move para cima ou para baixo.

Eu tentei isto, como uma solução.

{OrderModify(ticket,0,OrderOpenPrice()-500*Point,0,0,Blue);}}}}

(a ordem sendo selecionada é uma ordem de compra)

Verifiquei o diário quanto ao erro que estava sendo recebido e ele dizia 4051. Há erro múltiplo 4051. Basicamente não funciona, e estou curioso se alguém mais já resolveu este problema antes e tem uma explicação.

Não vejo porque esta solução não funcionaria (sim, acredito que estou selecionando corretamente a ordem porque a primeira solução incorreta da OrderModify está funcionando).

Obrigado.

 
WhooDoo22:


Verifiquei o diário quanto ao erro que estava sendo recebido e ele dizia 4051. Há erro múltiplo 4051. Basicamente não funciona, e estou curioso se alguém mais já resolveu este problema antes e tem uma explicação.

Quando você tiver um problema com uma função leia a documentação sobre essa função . . . . OrderModify()<----- Clique ME ! ! !

Você não pode modificar o Preço Aberto do Pedido para 0,0 . . . assumindo que você tenha executado corretamente um OrderSelect(), use OrderOpenPrice() para o 2º parâmetro que você está passando para OrderModify()

 

Simon, eu li a documentação para a função OrderModify() e notei que o exemplo utilizado é um trailing stop. Não desejo usar um trailing stop para a EA. Isto porque se eu usasse uma parada móvel, (de acordo com o exemplo) a EA precisaria que o mercado viajasse x pontos acima da sl atual para modificar a sl para um preço especificado. Basicamente, isto é muito complicado. Eu só quero acrescentar uma parada de perda à ordem DEPOIS que a ordem tenha sido submetida ao mercado.

De qualquer forma, também estou tentando novas soluções atualmente.

Obrigado.

 
WhooDoo22:

Simon, eu li a documentação para a função OrderModify() e notei que o exemplo utilizado é um trailing stop. Não desejo usar um trailing stop para a EA. Isto porque se eu usasse uma parada móvel, (de acordo com o exemplo) a EA precisaria que o mercado viajasse x pontos acima da sl atual para modificar a sl para o preço especificado. Basicamente, isto é muito complicado. Eu só quero acrescentar uma parada de perda à ordem DEPOIS que a ordem tenha sido submetida ao mercado.

De qualquer forma, também estou tentando novas soluções atualmente.

Obrigado.

Então por que você está tentando mudar o Preço Aberto para 0,0 ? você precisa deixar o Preço Aberto inalterado, ou seja, OrderOpenPrice() experimente-o . .
 

Simon,

Testador de estratégia:

1. Modo visual

2. Velocidade 31

3. 2010.12.29

4. EURUSD

5. M15

executar"Somente preços abertos", não cada carrapato.


MetaEditor: Edit -> Find... -> "// escolha 1".


escolha 1. = sem erros, mas obviamente eu não quero isto.

escolha 2. = guia Diário -> Diário lido: "error 4051".

Obrigado.

Arquivos anexados:
test1.mq4  12 kb
 

Evidentemente, usando a função OrderOpenPrice() dentro dos parâmetros OrderModify() é considerado um "parâmetro de função inválido" de acordo com o erro 4051. Eu estou pensando "?" :) Eu poderia salvar o valor OrderOpenPrice() e incluir isto na função OrderModify() para fazer o que eu desejo fazer, mas realmente? Certamente existe uma maneira mais simples! Para mim, é de volta ao velho moinho ;)

Obrigado.

 
WhooDoo22:
Evidentemente, usando a função OrderOpenPrice() dentro dos parâmetros OrderModify() é considerado um "parâmetro de função inválido" de acordo com o erro 4051.
Evidentemente, seu código está errado. OrderOpenPrice() está bem. Coloque o código incluindo seu pedidoSelect.
 

William,

Evidentemente, coloquei o EA em um link para você baixar e visualizar no MetaEditor se desejar fornecer seu apoio. A função OrderSelect() não é atualmente um problema. Sabe de uma coisa? Vou postar isto só para você, William.

//***************************************************
// EMERGENCY BUY ORDER STOP LOSS PROTECTION SECTION ;
//***************************************************

   OrderSelect(0,SELECT_BY_TICKET,MODE_TRADES); // was ticket.
   if(OrdersTotal()>0)                                                                         {
   if(OrderType()==OP_BUY)                                                                     {
   if(OrderSend1==true)                                                                        {
//   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<=OrderOpenPrice()-500*Point)                     {
     
// choice 1.     
//     {OrderModify(ticket,OrderOpenPrice(),Ask-500*Point,0,0,Blue);}}}}
// choice 2.
     {OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice()-500*Point,0,0,Blue);}}}}

Como você solicitou.

Obrigado.

 
WhooDoo22:

William,

Evidentemente, coloquei o EA em um link para você baixar e visualizar no MetaEditor se desejar fornecer seu apoio. A função OrderSelect() não é atualmente um problema. Sabe de uma coisa? Vou postar isto só para você, William.

Como você solicitou.

Obrigado.

0 NÃO é um número de bilhete válido, nem mesmo no Strategy Tester, teste seu OrderSelect() e você verá por si mesmo ...
 

Simon, vou fazer testes para descobrir.

Obrigado.

 

Ah-ha! troquei o bilhete número 0 para 1, depois 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 tíquete. Se o número do bilhete for 0, qual bilhete a EA selecionará? :O "?". Obrigado a ambos por sua assistência.

Obrigado a ambos.

Razão: