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

 
Yevhenii Levchenko:
Entendo corretamente que no mt5, ao invés de fechar, POSITION_TIME_UPDATE deve ser vigiado?
Não. Você precisa de uma negociação de fechamento.
 
Valerius:

O TakeProfit é calculado em pips e o Trailing TakeProfit é calculado na moeda do depósito. Trailing TakeProfit é o lucro na moeda do depósito de uma ou mais ordens, e coloca paradas de ordens no valor especificado nas configurações, ou seja, a uma distância calculada.

Por exemplo, o Trailing Take Profit em $100 é especificado nas configurações. Uma vez que o preço atinge o lucro de 100$ e vai além, o programa calcula a distância de 100$ e coloca todos os pedidos de parada no local calculado, se permitir. Assim que o preço voltar às paradas, todos os pedidos serão fechados. Em princípio, isto é o mesmo que Trailing Stop, somente é calculado em moeda depo e lucro de trilhas. Eu posso ter cometido um erro em algum lugar, mas este é o princípio. Espero tê-lo explicado.

Rastreamento - movimento. Trailing Stop - movemos a parada de acordo com o algoritmo. Trailing TakeProfit - movemos o nível conforme ele é aproximado de acordo com algum algoritmo.

 
Artyom Trishkin:
Não. Você precisa de uma negociação de fechamento.

Obrigado!

Aqui está uma função para a martin que verifica o último comércio em busca de lucro. Se não for rentável, devolve o volume do comércio. Como é correto fazer desta maneira:

double lastDealVolume() {
   datetime lastDealTime = 0;
   double volume = 0;
   if(HistorySelect(TimeCurrent() - PeriodSeconds(PERIOD_D1) * 10, TimeCurrent())) {
      int historyDealsTotal = HistoryDealsTotal();
      for(int i = historyDealsTotal - 1; i >= 0; i--) {
         if(HistoryDealSelect(HistoryDealGetTicket(i))) {
            ulong dealTicket = HistoryDealGetTicket(i);
            ENUM_DEAL_TYPE dealType = (ENUM_DEAL_TYPE) HistoryDealGetInteger(dealTicket, DEAL_TYPE);
            if(HistoryDealGetString(dealTicket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(dealTicket, DEAL_MAGIC) == MagicNumber &&
                  (dealType == DEAL_TYPE_BUY || dealType == DEAL_TYPE_SELL) ) {
               if(HistoryDealGetInteger(dealTicket, DEAL_TIME) > lastDealTime) {
                  lastDealTime = (datetime) HistoryDealGetInteger(dealTicket, DEAL_TIME);
                  if(HistoryDealGetDouble(dealTicket, DEAL_PROFIT) < 0) {
                     volume = HistoryDealGetDouble(dealTicket, DEAL_VOLUME);
                  } else {
                     volume = 0;
                  }
               }
            }
         }
      }
   } else Print("HistorySelect() (lastOrderVolume) error! ");
   return volume;
}

Se quisermos saber o lucro de toda a posição:

-> Pesquise todas as negociações e obtenha o DEAL_POSITION_ID da última negociação;
-> Pesquise e obtenha novamente o lucro de toda a posição usando DEAL_POSITION_ID?

Ou há um caminho mais curto?

 
Yevhenii Levchenko:

Obrigado!

Aqui está uma função para a martin que verifica o último comércio em busca de lucro. Se não for rentável, devolve o volume do comércio. Como é correto fazer desta maneira:

Se quisermos saber o lucro de toda a posição:

-> Pesquise todas as negociações e obtenha o DEAL_POSITION_ID da última negociação;
-> Pesquise e obtenha novamente o lucro de toda a posição usando DEAL_POSITION_ID?

Ou há um caminho mais curto?

Veja o problema de outro ângulo. Por que devemos olhar a história, se podemos obter a identificação da posição no momento do fechamento da posição e selecionar ordens e negócios desta posição já sabendo tudo.

 
Alexey Viktorov:

Veja o problema de outro ângulo. Por que procurar no histórico se você pode obter a identificação da posição no momento de fechar a posição e selecionar ordens e negócios desta posição já sabendo tudo.

A questão é que você tem que verificar isto antes de abrir um negócio :(

Mas se você não tiver um curto, você pode sempre ir pelo caminho mais longo :)

 
Yevhenii Levchenko:

A questão é que tem de ser verificada antes de se abrir um comércio :(

Mas se não houver um curto, você pode sempre ir pelo caminho mais longo :)

É necessário apenas ao reiniciar o Expert Advisor no OnInit para procurá-lo dessa forma. E no processo de trabalho da EA, obtemos os dados necessários no momento de fechar a posição. Mas isso depende de todos. Algumas pessoas gostam de carregar o processador com ações desnecessárias.........

 
Alexey Viktorov:

Isto só deve ser procurado desta forma ao reiniciar o Expert Advisor no OnInit. E no processo de trabalho do Consultor Especialista para obter os dados necessários no momento do fechamento do cargo. Mas tudo isso é da conta de todos. Algumas pessoas gostam de carregar o processador com ações desnecessárias.........

Estou um pouco confuso, mas como rastrear o momento de fechar uma posição, a não ser solicitando o estado da posição a cada tique? Certamente não são todas as posições a serem interrogadas, mas tudo o mesmo em cada pedido de carrapato.

 
Valerius:

O TakeProfit é calculado em pips e o Trailing TakeProfit é calculado na moeda do depósito. Trailing TakeProfit é o lucro na moeda do depósito de uma ou mais ordens, e coloca paradas de ordens no valor especificado nas configurações, ou seja, a uma distância calculada.

Por exemplo, o Trailing Take Profit em $100 é especificado nas configurações. Uma vez que o preço atinge o lucro de 100$ e vai além, o programa calcula a distância de 100$ e coloca todos os pedidos de parada no local calculado, se permitir. Assim que o preço voltar às paradas, todos os pedidos serão fechados. Em princípio, isto é o mesmo que Trailing Stop, somente é calculado em moeda depo e lucro de trilhas. Eu posso ter cometido um erro em algum lugar, mas este é o princípio. Espero tê-lo explicado.

Valeriy Yastremskiy:

Rastreamento - movimento. Trailing Stop - movemos a parada de acordo com o algoritmo. Trailing TakeProfit - movemos o nível conforme ele é aproximado de acordo com algum algoritmo.

Não me chute, mas eu não entendo. Nas configurações do MetaEditor gerado pelo Expert Advisor, que inclui o módulo de rastreamento, o nível de rastreamento é especificado em pontos. Por exemplo, eu defino onível "Take Profittrailing (em pontos)" = 100. Como funcionará esta rolha de arrasto? Corrija-me se eu estiver enganado. Quando o preço atual atinge a distância de 100 pips antes do nível de Take Profit especificado, a ordem de arrasto é ativada. Quando o preço atinge e atravessa o TP, a posição não é fechada. A rede de arrasto simplesmente começa a seguir o preço a uma distância de 100 pips. Se o preço inverter e for contra a posição, a posição será fechada pela TP, ou pela SL se a rede de arrasto se mover mais além da TP. Certo?
Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
altec3:
Não me chute muito, mas eu não entendo. Nas configurações do Expert Advisor gerado no MetaEditor e que inclui o módulo de trilha, o nível de trilha é especificado em pontos. Por exemplo, eu defino onível "Take Profittrailing (em pontos)" = 100. Como funcionará esta rolha de arrasto? Corrija-me se eu estiver enganado. Quando o preço atual atinge a distância de 100 pips antes do nível de Take Profit especificado, a ordem de arrasto é ativada. Quando o preço atinge e atravessa o TP, a posição não é fechada. A rede de arrasto simplesmente começa a seguir o preço a uma distância de 100 pips. Se o preço inverter e for contra a posição, a posição será fechada por TP, ou por SL se a rede de arrasto se mover mais além de TP. Certo?

Sem o código, é difícil não responder.

 
Alexey Viktorov:

Isto só deve ser procurado desta forma ao reiniciar o Expert Advisor no OnInit. E no processo de trabalho do Consultor Especialista para obter os dados necessários no momento do fechamento do cargo. Mas tudo isso é da conta de todos. Algumas pessoas gostam de carregar o processador com ações desnecessárias.........

Não é verificado em cada carrapato. Se houver um sinal, ele começa a verificar e abre um comércio. Isso é tudo :)