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

 
Juer:

Que pasta partilhada? Não o utilizo de todo. Começo sempre no modo portátil. Tenho tudo na minha pasta de instalação.

ArtigoLifeHack for Trader: Relatório comparativo de vários testes.

*** Aqui está um exemplo de um simples scriptCheck_TerminalPaths.mq5:

//+------------------------------------------------------------------+
//|                                          Check_TerminalPaths.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   Print("TERMINAL_PATH = ",TerminalInfoString(TERMINAL_PATH));
   Print("TERMINAL_DATA_PATH = ",TerminalInfoString(TERMINAL_DATA_PATH));
   Print("TERMINAL_COMMONDATA_PATH = ",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
  }
//+------------------------------------------------------------------+

Este guião produz três parâmetros:

  • TERMINAL_PATH - pasta a partir da qual é lançado o terminal
  • TERMINAL_DATA_PATH - pasta onde são armazenados os dados do terminal
  • TERMINAL_COMMONDATA_PATH - a pasta comum de todos os terminais clientes instalados no computador

Exemplo para três terminais (um deles é iniciado com /Portable switch):

// Терминал запускается в основном режиме
TERMINAL_PATH 			= C:\Program Files\MetaTrader 5
TERMINAL_DATA_PATH 			= C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075
TERMINAL_COMMONDATA_PATH 			= C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\Common

// Терминал запускается в основном режиме
TERMINAL_PATH 			= D:\MetaTrader 5 3
TERMINAL_DATA_PATH 			= C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\0 C46DDCEB43080B0EC647E0C66170465
TERMINAL_COMMONDATA_PATH 			= C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\Common

// Терминал запускается в режиме Portable
TERMINAL_PATH 			= D:\MetaTrader 5 5
TERMINAL_DATA_PATH 			= D:\MetaTrader 5 5
TERMINAL_COMMONDATA_PATH 			= C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\Common

***

 
Vladimir Karputov:

Pasta partilhada:FILE_COMMON. Pesquisar, ler. Pensar.

Porque é que recebo um erro 5004 no testador com o mesmo ficheiro, mas quando se depura dados reais, tudo está bem?

 
Juer:

E porque é que recebo um erro 5004 no testador com o mesmo ficheiro, ao mesmo tempo que o depuro com dados reais está OK?

Não se dá a imagem completa. Tem de obter a informação de forma precisa.

Tente descrever a situação de forma inteligente. Fornecer um CÓDIGO que possa ser INICIADO.

 

Com FILE_COMMON passa sem erros tanto nos dados reais como no testador.

 

Pode por favor dizer-me como calcular o custo por lote sem utilizar OrderCalcMargin?

bool l=OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),Lts,SymbolInfoDouble(Symbol(),SYMBOL_ASK),Margin);

Alerta(l);

porque a minha função retorna falsa

 
Fast528:

Preciso do indicador para mostrar as posições de entrada/saída no gráfico e traçar uma linha entre elas, num período de hoje menos 1 dia, por exemplo, como é normalmente feito num indicador ou robô?

Não compreendo qual é a ligação entre a pergunta original e as linhas. Hoje menos 1 dia pode ser definido de várias maneiras. ou é uma questão diferente?
 
Alexey Viktorov:
Não compreendo a ligação entre a pergunta original e as linhas. Hoje menos 1 dia pode ser atribuído com várias opções. ou a questão é diferente?

perguntou para que serve a variável de tempo? eis como definir o cálculo da "Data do servidor" menos 1-2 dias

e por isso, claro, houve uma questão e qual é a diferença entre essas duas opções para completar a Estrutura,

MqlDateTime dt;
TimeTradeServer(dt);

и

MqlDateTime tm;
TimeToStruct(TimeTradeServer(),tm);
 
Fast528:

perguntou para que serve a variável de tempo? eis como definir o cálculo da "data do servidor" menos 1-2 dias

e por isso, é claro, havia uma questão e qual é a diferença entre essas duas opções para preencher a Estrutura,

Bem, se apenas encher a estrutura, é pouco provável que haja qualquer diferença.

E porquê determinar a hora do servidor através da hora do computador local? Porque não gosta do TimeCurrent() e utiliza-o?

 
Com oTimeTradeServer no fim-de-semana é mais conveniente fazer experiências com intervalos de negociação
 

Código

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   for(int i=0;i<=21;i++)
     {
      Print("Timeframe: "+EnumToString((ENUM_TIMEFRAMES)i));
     }
  }

Dá este resultado:

2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_CURRENT
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M1
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M2
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M3
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M4
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M5
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M6
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::7
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::8
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::9
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M10
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::11
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M12
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::13
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::14
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M15
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::16
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::17
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::18
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::19
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: PERIOD_M20
2018.09.17 00:59:59.716 CheckTF (EURUSD,H4)     Timeframe: ENUM_TIMEFRAMES::21
O que é que estou a fazer mal?