Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 86

 
smart_man:

Como fazer para que os dados de todas as variáveis globais sejam salvos mesmo após o fechamento do terminal em modo normal e anormal?

A questão diz respeito a variáveis declaradas no início do código como esta:

#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

extern double  VAR1 = 1;

double VAR2[1000];

Não preciso perder valores de VAR1 e VAR2 (a matriz é preenchida com dados durante a operação do Expert Advisor). Até agora, a única idéia é escrever os dados em um arquivo (global.txt) a cada tick e depois, quando o terminal é lançado, ler do arquivo (global.txt) e recriar as variáveis e depois escrevê-las novamente a cada tick. Que outras opções existem?

Seja para o terminal global, ou para um recurso.
 
Arseniy Barudkin:

Obrigado pela ajuda! Deixei assim por enquanto, agora decidi mudar um pouco as condições sob as quais a função é chamada. E em geral, você tem me ajudado muito))

Você está certo em não obter uma resposta. Você tem que definir o problema, caso contrário ele não pode ser resolvido.

Vamos dar uma olhada no ToR original:

"Arseniy Barudkin2017.05.23 19:56 RU

Saudações Cavalheiros! Não quero levá-lo para inundações, mas não posso prescindir deste recurso. Assim, qualquer pessoa pode me ajudar com uma função que passa por todas as ordens e remove duas ordens simultaneamente, uma com o menor lote e lucro negativo da existente no gráfico, e a segunda com o maior lote e lucro positivo também da existente. "

O que vemos no código que você nos mostrou?

1. Todos os pedidos foram abertos pelo Expert Advisor e têm uma magia única.

2. O lucro total dos pedidos que estamos procurando é positivo.

3. as ordens são opostas.

4. O tamanho do lote com um lucro positivo é estritamente maior do que o tamanho do lote com um negativo.

Onde isso aparece no TOR apresentado?

Além disso: podemos ver pelo código que você não sabe como fechar ordens opostas, perdendo pelo menos o spread.

 
fxtz:

Pergunta Posso escrever um programa no Metatrader 4 para abrir de 2 a 250 posições de minha escolha com um conjunto de perdas e lucro definido em um clique? Assim, não tenho que abrir um de cada vez manualmente

Se as restrições de seu corretor são tão íngremes, a linguagem de programação é projetada para escrever scripts automaticamente.
 
Mislaid:

Você está certo em não obter uma resposta. Você tem que definir o problema, caso contrário ele não pode ser resolvido.

Vamos dar uma olhada no ToR original:

"Arseniy Barudkin2017.05.23 19:56 RU

Saudações Cavalheiros! Não quero levá-lo para inundações, mas não posso prescindir deste recurso. Assim, qualquer pessoa pode me ajudar com uma função que passa por todas as ordens e remove duas ordens simultaneamente, uma com o menor lote e lucro negativo da existente no gráfico, e a segunda com o maior lote e lucro positivo também da existente. "

O que vemos no código que você nos mostrou?

1. Todos os pedidos foram abertos pelo Expert Advisor e têm uma magia única.

2. O lucro total dos pedidos que estamos procurando é positivo.

3. as ordens são opostas.

4. O tamanho do lote com um lucro positivo é estritamente maior do que o tamanho do lote com um negativo.

Onde isso aparece no TOR apresentado?

Além disso: o código mostra que você não sabe como fechar as ordens do contador, perdendo pelo menos o spread.


Eu não estou argumentando muitas falhas! Estou entrando agora neste tipo de atividade. Estou escrevendo para este tópico para obter alguma ajuda ou para apontar os erros! Acho que é para isto que serve. Agora o código. 1) Talvez eu não entenda algo, mas o que há de errado com o fato de todos os pedidos no Expert Advisor terem uma magia única? 2) Esta condição e, em geral, toda esta função é projetada para fechar pelo menos duas ordens opostas no caso de uma pesada carga de margem e não para ir no vermelho, o 3º e 4º pontos se referem à mesma coisa. E eu realmente não sei como fechar corretamente os pedidos do contador.
 
Arseniy Barudkin:

Eu não estou argumentando muitas falhas! Estou apenas entrando nesta linha de trabalho. E estou escrevendo neste tópico para obter ajuda ou para apontar erros! Na minha opinião, é para isto que serve. Agora, o código. 1) Talvez eu não entenda algo, mas o que há de errado com o fato de todos os pedidos no Expert Advisor terem uma magia única? 2) Esta condição e, em geral, toda esta função é projetada para fechar pelo menos duas ordens opostas no caso de uma pesada carga de margem e não para ir no vermelho, o 3º e 4º pontos se referem à mesma coisa. Não sei como fechar corretamente as encomendas opostas.
Se você fosse meu aluno, eu lhe daria um "bem" para enviar o código. E, se no processo de comunicação, você puder mostrar que é capaz de gerar idéias, então "excelente" A partir de sua resposta, vejo que você está pensando corretamente
 

Olá ... EA escrito em MQL4, negocia ordens de mercado Comprar, Vender comRastreamento... Decidi adicionar BuyStop pendente, SellStop ... e encontrou um problema inesperado = assim que qualquerordem pendente aparece na janela MT4,Trailing pára de funcionar(SL não está definido,Modify não está lá)... Eu não entendo qual é o problema, a função derastreamento é padrão com retrocesso da biblioteca, duas pp selecionadas.... ou não se trata da função? Talvez alguém tenha encontrado algo parecido com isto?

int TralFunck(int Ticket)

 {   double TralPrice=0,Punkt=0;

   chk=OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);

for(Ticket=OrdersTotal()-1; Ticket>=0; Ticket--)  

  { if (OrderProfit()<=0)       continue;

    if (OrderType()==4)		 continue;

    if (OrderType()==5) 	 continue;

   if (OrderType()==0)  {   Punkt=(Bid-OrderOpenPrice())/Point;TralPrice=NormalizeDouble((Bid-Tral*D*Point),Digits);  }

   if (OrderType()==1)  {   Punkt=(OrderOpenPrice()-Ask)/Point;TralPrice=NormalizeDouble((Ask+Tral*D*Point),Digits);   }

   if (Punkt<MarketInfo(Symbol(),MODE_STOPLEVEL))       continue;

   if(Punkt<(Tral+TP)*D)        continue;

   if(OrderType()==0 && TralPrice<=NormalizeDouble(OrderStopLoss(),Digits))     continue;

   if(OrderType()==1 && TralPrice>=NormalizeDouble(OrderStopLoss(),Digits) && OrderStopLoss()!=0)       continue;

   ModifyOrder(OrderTicket(),OrderOpenPrice(),TralPrice,OrderTakeProfit());     continue;

   }   return(0);

 }


 
Yaroslav Nykula:

Olá ... EA escrito em MQL4, negocia ordens de mercado Comprar, Vender comRastreamento... Decidiu adicionar BuyStop pendente, SellStop ... e encontrou um problema inesperado = assim que qualquerordem pendente aparece na janela MT4,Trailing pára de funcionar(SL não está definido,Modify não está lá)... Eu não entendo qual é o problema, a função derastreamento é padrão com retrocesso da biblioteca, duas páginas selecionadas foram adicionadas . ... ou não se trata da função? Talvez alguém tenha encontrado algo parecido com isto?



Substituir o retorno(0); por continuar; para não sair do laço. No final da função, deixá-la como está.

Use o botão SRC no editor para inserir o código

 
Victor Nikolaev:


Substituir retorno(0); por continuar; de modo a não sair do loop. No final da função, deixe-a como está.

Use o botão SRC no editor para inserir o código


Obrigado ... consertou-o ... Vou levar em conta o botão SRC no editor, desculpe ... Mas o problema continua o mesmo,Trailing andModify não quer trabalhar comordens pendentes.
 
Recentemente comecei a negociar no mt4. Decidi testar minha estratégia, mas no testador de estratégia eu não tenho a função de visualização ou o botão de pausa.
 
vsmutew7:
Recentemente comecei a negociar no mt4. Decidi testar minha estratégia, mas meu testador de estratégia não tem uma função de visualização ou um botão de pausa.

Provavelmente precisa de uma janela mais ampla, especialmente aquela com o botão "Iniciar".