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

 
Artyom Trishkin #:

Não poste a mesma pergunta em diferentes tópicos do fórum.

Eu respondi lá:


Já o lemos. Obrigado!

 
Posso apagar minha correspondência com uma pessoa? Quero encerrar uma conversa com um usuário
 
makssub #:

Boa tarde.

Ajuda com o código, talvez haja exemplos.
Tarefa:

Há várias ordens abertas, com lotes diferentes, em direções diferentes. Um deles está enterrado com lucro, vamos supor 20. Entretanto, há uma ordem em aberto com o lucro negativo, vamos supor -55 com 0,05 lotes. Quero fechar uma parte de uma ordem negativa pelo valor do lucro de uma ordem positivamente fechada para diminuir o saque.

Tentei escrever isto usando o operador, mas não correu bem.

Agradecemos antecipadamente.

Você não escreveu se isto está no mesmo instrumento ou em posições diferentes?
 

Por que o código MT5 funciona, mas o MT4 não? construir 1Z5Z

Salva o padrão mas não aplica o padrão

//+------------------------------------------------------------------+
//|                                              File Read Write.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string SYMBOL;
string ccname;
void OnStart()
  {

   SYMBOL = _Symbol;
   ccname = SYMBOL;
   SaveTemplate();
 
 DownloadTemplate();
     
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void SaveTemplate(void)
  {
   if(ChartSaveTemplate(0, ccname))
      Print("Template successfully saved!  " + SYMBOL);
   else
      Print("Template save Failed!  " + SYMBOL);
   return;
  }
//+------------------------------------------------------------------+
void DownloadTemplate(void)
  {

   if(ChartApplyTemplate(0,ccname))
      return;
   else
      Print("Template download Failed!  " + SYMBOL);
  }

 
Você pode me dizer como fazer o programa funcionar somente quando uma vela nova tiver começado e, depois de executar o código, ficar quieto e esperar que a próxima vela comece?
 
Ivan Butko uma nova vela tiver começado e depois de executar o código para espreitar e esperar o início da próxima vela?

é chamado de preços de abertura.
é elementar.

 
Pavel Malyshko #:

é chamado de preços de abertura.
é elementar.

Eu não entendo. Um tique entra, o cheque é passado. Chega o próximo tick e ele verifica novamente. O mesmo temporizador não cabe na abertura.

A única coisa que me ocorre é memorizar a hora da abertura, adicionar a hora da vela e verificar a hora atual em relação ao novo valor.

 
Ivan Butko #:

Eu não entendo. Um tique entra, é verificado. O próximo tick vem, é verificado novamente. O mesmo temporizador não cabe na abertura.

Só me lembro do tempo de abertura, acrescento o tempo da vela e comparo o tempo atual com o novo valor

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos.

Qualquer pergunta de iniciantes em MQL4 e MQL5, qualquer ajuda e discussão de algoritmos e códigos

Valeriy Yastremskiy, 2022.03.30 09:37

 
static datetime OldTime=0;
if(iTime(NULL,0,0)!=OldTime)
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol()); OldTime=iTime(NULL,0,0);
      }

Se você não conhece o algoritmo, receberá um alerta quando o preço chegar ao final do dia. Quando uma nova barra aparecer, oiTime(NULL,0,0) será alterado e a igualdade não será uma vez, então a igualdade e o se será falsa.

Você também pode fazê-lo desta maneira.

static bool FlagNewBar=false;
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }

Ou podemos conseguir um novo bar a qualquer momento.

bool FlagNewBarF(int prd, datetime &ArgBarTime,bool &FlagNbar)
  {
   FlagNbar=false;
   if(ArgBarTime!=iTime(NULL,prd,0))
     {
      ArgBarTime=iTime(NULL,prd,0);
      FlagNbar=true;
     }

   return(FlagNbar);
  }

A chamada seria a seguinte

 if(FlagNewBarF(1, BarTime1,FlagNewBar1))
     {
      Alert("FlagNbar1 ",FlagNewBar1,"BarTime1 ",TimeToStr(BarTime1,TIME_DATE|TIME_SECONDS));
      
     }

   if(FlagNewBarF(5, BarTime5,FlagNewBar5))
     {
      Alert("FlagNbar5 ",FlagNewBar5,"BarTime5 ",TimeToStr(BarTime5,TIME_DATE|TIME_SECONDS));
     
     }

 
Valeriy Yastremskiy #:
Você não escreveu se isto está no mesmo instrumento ou em posições diferentes?

Que tudo esteja dentro do mesmo par de moedas, EurUsd, por exemplo. Ambos estão abertos na Buy.

 
makssub #:

Que tudo esteja dentro do mesmo par de moedas, EurUsd, por exemplo. Ambos estão abertos na Buy.

Geralmente estas são tarefas diferentes, em pares diferentes e no mesmo. Em um par de moedas com o mesmo lote 2 ordens/posições têm opções diferentes: não cruzar e cruzar. Acima da abaixo que é perda ou lucro, dependendo da distância para as ordens. Para uma direção entre, um em lucro e outro em prejuízo, acima tanto em lucro quanto em prejuízo.

Deve ser definido de acordo com suas preferências. Se o volume for o mesmo, você deve fechar o mesmo volume. Se não for o mesmo, você deve calcular a quantidade de dinheiro em lucro, a quantidade de perda no dinheiro, calcular a relação entre lucro e perda, multiplicar esta relação pelo número de lotes de uma posição perdedora e fechar esta parte.