Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 457

 

Eu não entendo nada disso. Minha pergunta foi movida pelo moderador de MKL5 para MKL4. Siga o link - sim, minha pergunta está pendurada ali, mas a última resposta é 5.02.2018. Veio aqui - também MKL4 e a vida está fervendo... Então por que o moderador está jogando em um fio morto? Muito bem, vamos em frente. Agora ao ponto: jogando meu "problema" para cá.


Vladimir Karputov:

Para a condição 1, coloque o número mágico ID +1, para a condição 2 o número mágico +2 e assim por diante. Assim você pode então entender que esta posição foi aberta pela condição 1 ou pela condição 2 ...

Boa tarde. Só tive sucesso em uma posição BAY. O conjunto magik para venda não funciona por alguma razão. Tudo é absolutamente idêntico, exceto o mágico, é claro. O que eu fiz de errado?

int total=OrdersTotal();

      for(int i=OrdersTotal()-1;i>=0;i--)

      {

        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

         {

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && (MathAbs(WPR1)<5))

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); 

        

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && OrderMagicNumber==111 && MathAbs(WPR1)<20)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow);

      

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && OrderMagicNumber==222 && MathAbs(WPR1)>97.55)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow); 

           

         if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && MathAbs(WPR1)>96)

         rez =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,Yellow);               

         }

       continue;  

      } 
 
novichok2018:

Eu não entendo nada disso. Minha pergunta foi movida pelo moderador de MKL5 para MKL4. Siga o link - sim, minha pergunta está pendurada ali, mas a última resposta é 5.02.2018. Veio aqui - também MKL4 e a vida está fervendo... Então por que o moderador está jogando em um fio morto? Muito bem, vamos em frente. Agora ao ponto: jogando meu "problema" para cá.


Boa tarde. Funcionou apenas para uma posição BAY. O magik montado para a SELL não funciona por alguma razão. Tudo é absolutamente idêntico, exceto o próprio mágico, é claro. O que eu fiz de errado?

1. não conhece o mql4.

2. Para fechar um pedido com magia 222, ele deve ser aberto com magia 222 primeiro. Verificar qual assistente é usado para abrir pedidos de VENDA

3. Após o OrderMagicNumber, deve haver parênteses ().

if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_SELL && OrderMagicNumber==222 && MathAbs(WPR1)>97.55)

4. Por que a condição é destacada?

if(TimeCurrent()>OrderOpenTime()+100 && OrderTicket() && OrderType()==OP_BUY && (MathAbs(WPR1)<5))
 

Pessoal, aqui vai uma pergunta - como colocar valores variáveis em uma matriz unidimensional?

Não o envie para ajudar - não há exemplo para tal problema.


Digamos que existe uma variável a, que muda sob certas condições.

Quero um array para armazenar os 3 últimos valores desta variável. Como isto é implementado em mql4?


Estou escrevendo em massa[3];

mas[]=a; dentro do laço, após uma condição que muda a,

O compilador dá ']', mas nada funciona, embora logicamente deva funcionar. - Ele quer que eu coloque alguma expressão desconhecida dentro de parênteses em mas[]=a.

A MQL4 tem alguma função que preencha a matriz com um valor variável em cada iteração de loop?


 
John Smith:

Rapazes, eis uma pergunta - como colocar um valor variável em uma matriz unidimensional?

Não o envie para ajudar - não existe nenhum exemplo para tal problema.


Digamos que existe uma variável a, que muda sob certas condições.

Quero um array para armazenar os 3 últimos valores desta variável. Como isto é implementado em mql4?


Estou escrevendo em massa[3];

mas[]=a; dentro do laço, após uma condição que muda a,

O compilador dá ']', mas nada funciona, embora logicamente deva funcionar. - expressão esperada, ele quer que eu coloque alguma expressão desconhecida dentro de parênteses em mas[]=a.

A MQL4 tem alguma função que preenche a matriz com um valor variável a cada iteração do loop?


Em qual célula do array você acha que o valor da variável "a" é colocado, assim: mas[]=a; ?

Eu o enviaria para a ajuda, leia desde o início :)

 
John Smith:

Pessoal, aqui vai uma pergunta - como colocar valores variáveis em uma matriz unidimensional?

Não o envie para ajudar - não existe nenhum exemplo para tal problema.


Digamos que existe uma variável a, que muda sob certas condições.

Quero um array para armazenar os 3 últimos valores desta variável. Como isto é implementado em mql4?


Estou escrevendo em massa[3];

mas[]=a; dentro do laço, após uma condição que muda a,

O compilador dá ']', mas nada funciona, embora logicamente deva funcionar. - Ele quer que eu coloque alguma expressão desconhecida dentro de parênteses em mas[]=a.

A MQL4 tem alguma função que preenche a matriz com um valor variável a cada iteração de loop?


Talvez você devesse ler não apenas as amostras de código, mas também algumas outras letras.

Aqui está uma citação da documentação:

Grupo de funções para trabalhar com arrays

Não são permitidas mais do que matrizes tetradimensionais. Cada dimensão é indexada de 0 a dimension_size-1. Em um caso particular de um array unidimensional de 50 elementos, chamar o primeiro elemento é array[0], o último é array[49].

 
Alexey Viktorov:

1. ele não conhece o mql4.

2. Para fechar um pedido com magia 222, ele deve ser aberto primeiro com magia 222. Veja qual assistente abre ordens de venda

3. Após o OrderMagicNumber, deve haver parênteses ().

4. Por que ele está marcado no estado?

Obrigado por sua resposta. É claro que primeiro preciso abrir com um magik. E eu removi o bilhete de pedido e verifiquei a lógica com comentários. Acontece que o fechamento das posições é feito de acordo com as condições da primeira posição aberta. Isto é, se primeiro você abre uma posição de Compra ou Venda com a Condição 1 e depois uma segunda posição aberta com a mesma condição mas com a Condição 2, a condição de fechamento é ignorada e a segunda posição também é fechada com a Condição 1 apesar da outra Magia.

Apliquei uma pausa após o fechamento do pedido, mas a solução foi meio acirrada:somente se uma posição do mesmo tipo for aberta. Se, por exemplo, uma posição de Venda foi aberta primeiro e ainda não foi fechada, enquanto uma posição de Compra está sendo aberta e fechada, a posição de Venda não vê nenhuma condição para ser fechada até que outra posição de Venda seja aberta e fechada (de acordo com suas condições). E se a BAY abre e fecha novamente, ela novamente perde suas condições de fechamento. Então, o que fazer?

 
Boa tarde a todos. Caros programadores, ajudem-me a inserir uma linha com a capacidade de especificar um arquivo de som para cada Alert3.Lv1;2;3, para acionar um som diferente que vocês especificam. Eu mesmo não sou bom em codificação e programação.
Arquivos anexados:
 
Bom dia programadores e conhecedores de MQL! Tenho um Expert Advisor muito bom que interrompe o auto-trading com base nas notícias. Encontrei um na rede que ou não funciona ou funciona mal. Ou alguém pode escrever um baseado no indicador urdala?
 
Oi, pessoal. Você pode me dizer como se livrar do erro [O contexto comercial está ocupado]?
 
Rustam Bikbulatov:
Oi, pessoal. Você pode me dizer como se livrar do erro [O contexto comercial está ocupado]?
if(!IsTradeContextBusy())   //торговый поток свободен
  {
 // здесь оформляем запрос
 // на торговую операцию

  }