Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1475

 
Aleksandr Slavskii #:

Como posso saber o horário de fechamento de uma posição no testador?

Eu abro as posições 1, 2, 3

Fecho as posições 3, 2, 1

Nem no relatório do testador nem no próprio testador, não descobri como descobrir o horário de fechamento de uma determinada posição.

O mesmo se aplica ao relatório escrito pelo testador, não há como descobrir o horário de fechamento de uma posição.


Preciso descobrir o horário de abertura e fechamento de uma posição. Como?

fxsaber em uma de suas bibliotecas escreve: "Obrigado aos desenvolvedores por criarem os caches do Tester e ajudarem a abrir seus formatos.

Só consegui encontrar o formato dos arquivos opt.

Se alguém souber onde no fórum eles divulgam os arquivos tst - formato de passagem única, forneça um link, talvez eu possa encontrar o position_ID neles.

fxsaber, se você estiver lendo, por favor, responda.

Procure uma negociação de saída do mercado

DEAL_ENTRY_IN

Entrada no mercado

DEAL_ENTRY_OUT

Sair do mercado

DEAL_ENTRY_INOUT

reversão

DEAL_ENTRY_OUT_BY

Fechamento com uma posição contrária

e procure o ID da posição no bilhete dessa negociação

DEAL_TICKET

Bilhete da negociação. Um número exclusivo que é atribuído a cada negociação

longo

DEAL_ORDER

Ordem, com base na qual a negociação foi executada.

long

DEAL_TIME

Hora da execução da transação

datetime

DEAL_TIME_MSC

Hora da transação em milissegundos desde 01.01.1970

long

DEAL_TYPE

Tipo de transação

ENUM_DEAL_TYPE

DEAL_ENTRY

Direção da negociação - entrada no mercado, saída do mercado ou reversão

ENUM_DEAL_ENTRY

DEAL_MAGIC

Número mágico para a negociação (consulteORDER_MAGIC)

long

DEAL_REASON

Motivo ou origem da transação

ENUM_DEAL_REASON

DEAL_POSITION_ID

Identificador da posição, na abertura, modificação ou fechamento da qual essa transação participou. Cada posição tem um identificador exclusivo, que é atribuído a todas as transações executadas no instrumento durante a vida da posição.

longo


De modo geral, o momento em que uma transação sai do mercado é o momento do fechamento da posição.

 
Alexey Viktorov #:

Procure por ...

Obrigado. Mas não é isso que estou procurando.

Aparentemente, mais uma vez não consegui formular a pergunta corretamente :(

Estou interessado em saber como extrair informações de posição de um arquivo ReportTester.xlsx ou .tst .

O que você sugeriu não está no relatório.

 
MrBrooklin #:

   //лот = процент риска от баланса / (размер стоплосса * Размер минимального изменения цены в валюте депозита / Минимальный шаг изменения цены в пунктах)
   eLot=AccountInfoDouble(ACCOUNT_BALANCE)*eRisk/100/(MathAbs(ePrice-eStopLoss)*SymbolInfoDouble(eSymbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(eSymbol,SYMBOL_TRADE_TICK_SIZE));
 
Aleksei Stepanenko #:

Obrigado, Alexey, pelo código! Amanhã analisarei sua fórmula com mais detalhes.

Saudações, Vladimir.

 
De nada)
Aqui, preço e perda são preços. Se sua perda for em pips, use o ponto.
 
Aleksei Stepanenko #:
De nada)
Aqui, preço e perda são preços. Se sua perda for em pips, use o ponto.

Alexey, se eu converter o stop loss em pontos, não haverá sentido. O fato é que, no script, usei uma fórmula encontrada na Internet. Não me lembro onde, foi há muito tempo. Criei uma tabela no Excel usando essa fórmula e a utilizei quando necessário. Esta é a aparência dela:

Por isso, recorri à comunidade para esclarecer o quanto ela é verdadeira. A fórmula em si na tabela do Excel tem a seguinte aparência:

лот = (баланс * риск (в %) * 0,01) / (стоп-лосс (в пунктах) * курс валюты (в моем случае в руб.))

Atenciosamente, Vladimir.

 

Vladimir, tudo funciona

input int eLoss=2000;
input double eRisk=5.0;

double eLot=AccountInfoDouble(ACCOUNT_BALANCE)*eRisk/100/(eLoss*SymbolInfoDouble(eSymbol,SYMBOL_POINT)*SymbolInfoDouble(eSymbol,SYMBOL_TRADE_TICK_VALUE)/SymbolInfoDouble(eSymbol,SYMBOL_TRADE_TICK_SIZE));
 
Aleksei Stepanenko #:

Vladimir, tudo funciona

Alexey, desculpe, mas nós não nos entendemos. O mal-entendido foi mais da minha parte. Achei que você estava recomendando a aplicação de um ponto na minha função. ))

Saudações, Vladimir.

 
Ah, entendi)
 
Aleksei Stepanenko #:

Vladimir, tudo funciona

Muitas divisões sem verificar se o divisor está zerado. Explosivo.

Razão: