Símbolos personalizados. Erros, bugs, perguntas, sugestões. - página 2

 
fxsaber:
Os símbolos personalizados no real são apenas para informação, não para negociação. Eles só podem ser usados para o comércio no testador.

Símbolos personalizados em real podem ser usados como um indicador para abertura ou fechamento em instrumentos reais.

 
Aidas Geguzis:

Os símbolos personalizados podem ser usados como um indicador para abertura ou fechamento em instrumentos reais.

Você e ofxsaber :obrigado, e nem uma palavra sobre isso na documentação. A razão disso, como sempre, é que as informações devem ser coletadas no fórum e de boca em boca. Quando olhei para o desenho, pensei que eles tinham implementado algum tipo de duplicação ou troca de ferramentas por meio do terminal e também me perguntei como eles tinham fixado a multiplicidade do lote. Agora vejo que provavelmente é inútil para mim.

 

Bug 05.

Bug CustomTicksAdd.

template <typename T>
T MyPrint( const T Value, const string Str, const bool DebugFlag = false ) { Print(Str + " = " + (string)Value); return(Value); }
#define _P(A) MyPrint(A, __FUNCSIG__ ", Line = " + (string)__LINE__ + ": " + #A)                    // Макрос для удобного и наглядного вывода значений

void OnStart()
{
  const string Name = "TEMP9";                                                                      // Имя кастомного символа
  const string SymbOrig = "EURUSD";                                                                 // Имя оригинального символа

  MqlTick Ticks[];
  const int Size = _P(CopyTicksRange(SymbOrig, Ticks, COPY_TICKS_ALL, (long)D'2019.01.01' * 1000)); // Считали EURUSD-тики за 2019 год.
    
  if ((Size > 0) && _P(CustomSymbolCreate(Name, NULL, SymbOrig)) && _P(SymbolSelect(Name, true)))   // Создали символ на основе EURUSD.
  {            
    _P(CustomTicksAdd(Name, Ticks));                                                                // Поместили в него историю EURUSD через CustomTicksAdd
  
    MqlTick AddTicks[1];
    AddTicks[0] = Ticks[Size - 1];                                                                  // Взяли последний тик
       
    AddTicks[0].time += 3600;                                                                       // И к его времени добавили час
    AddTicks[0].time_msc = (long)AddTicks[0].time * 1000;                                           
    
    _P(CustomTicksDelete(Name, (ulong)D'2019.02.01 00:00' * 1000, LONG_MAX));                       // Удалили все тики, оставив только данные за январь 2019.
    _P(CopyTicksRange(Name, Ticks));                                                                // Посмотрели, сколько тиков осталось.
    
    _P(CustomTicksAdd(Name, AddTicks));                                                             // Пробросили один тик.
    
    _P(CopyTicksRange(Name, Ticks));                                                                // Увидели, что добавился не один тик, а 129.
    _P(CustomTicksDelete(Name, (ulong)D'2019.02.01 00:00' * 1000, LONG_MAX));                       // Делаем повторное удаление - да, 129!

    _P(SymbolSelect(Name, false));                                                                  // Удалили символ из Обзора рынка.
    _P(CustomSymbolDelete(Name));                                                                   // Удалили символ.         
  }
}


Resultado

void OnStart(), Line = 11: CopyTicksRange(SymbOrig,Ticks,COPY_TICKS_ALL,(long)D'2019.01.01'*1000) = 3316638
void OnStart(), Line = 13: CustomSymbolCreate(Name,NULL,SymbOrig) = true
void OnStart(), Line = 13: SymbolSelect(Name,true) = true
void OnStart(), Line = 15: CustomTicksAdd(Name,Ticks) = 3316638
void OnStart(), Line = 23: CustomTicksDelete(Name,(ulong)D'2019.02.01 00:00'*1000,LONG_MAX) = 1158959
void OnStart(), Line = 24: CopyTicksRange(Name,Ticks) = 2157552
void OnStart(), Line = 26: CustomTicksAdd(Name,AddTicks) = 1
void OnStart(), Line = 28: CopyTicksRange(Name,Ticks) = 2157681
void OnStart(), Line = 29: CustomTicksDelete(Name,(ulong)D'2019.02.01 00:00'*1000,LONG_MAX) = 129
void OnStart(), Line = 31: SymbolSelect(Name,false) = true
void OnStart(), Line = 32: CustomSymbolDelete(Name) = true


São acrescentados mais carrapatos do que os especificados.

 

Algo sobre os sintéticos está consumindo a memória e atrasando a partida do terminal. Eu fiz dois sintéticos ontem, abri um gráfico para cada um deles. Hoje o terminal começou três minutos(!!!), o consumo de RAM pelo Task Manager foi de 1,88 Gb. Removidos estes gráficos, ocultos sintéticos, inicialização 20 seg. como antes, consumo de RAM 490 MB. Bild 2006, Max bars in window - Ilimitado.

No primeiro sintético tinha fórmula de ajuda:

1

No segundo, uma fórmula simples:

0,5 * (perguntar(EURUSD) + perguntar(USDCAD))

Запуск платформы - Для продвинутых пользователей - MetaTrader 5
Запуск платформы - Для продвинутых пользователей - MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 
Alexey Volchanskiy:

Algo sobre os sintéticos está consumindo a memória e atrasando a partida do terminal. Eu fiz dois sintéticos ontem, abri um gráfico para cada um deles. Hoje o terminal começou três minutos(!!!), o consumo de RAM pelo Task Manager foi de 1,88 Gb. Removidos estes gráficos, ocultos sintéticos, inicialização 20 seg. como antes, consumo de RAM 490 MB. Bild 2006, Max bars in window - Ilimitada.

No primeiro sintético tinha fórmula de ajuda:

No segundo, uma fórmula simples:

0,5 * (perguntar(EURUSD) + perguntar(USDCAD))

Ao rodar sintético, ele come uma grande quantidade de recursos de disco SSD. Se o disco SSD for lento, a partida do terminal pode levar 10 minutos se houver vários sintéticos.

Não estou nem mesmo falando em usar o HDD para terminal com sintéticos.

Quando instalei o acionamento rápido (Samsung 970 Pro), todos os problemas com a partida do terminal e as sínteses pararam.

A RAM é de cerca de 12 Gb quando o terminal inicia, o processador i7-6700K é usado.

 
fxsaber:

Bug 05.

Bug CustomTicksAdd.

São acrescentados mais carrapatos do que os especificados.

2007 - ficou ainda pior. CustomTicksAdd adiciona 63969 ticks em vez de um.

void OnStart(), Line = 24: CopyTicksRange(Name,Ticks) = 2157552
void OnStart(), Line = 26: CustomTicksAdd(Name,AddTicks) = 1
void OnStart(), Line = 28: CopyTicksRange(Name,Ticks) = 2221521
void OnStart(), Line = 29: CustomTicksDelete(Name,(ulong)D'2019.02.01 00:00'*1000,LONG_MAX) = 63969


SZY 2007 - todos os bugs são reais.

 
fxsaber:

Bug 02.

mesmo ChartRedraw não dá um efeito visual.

Somente se você rolar a tabela com o mouse, ela volta ao normal. Você poderia consertar a visualização por ChartRedraw?

Recomendar uma forma de atualizar a tabela após CustomRatesUpdate, para que ela desenhe com força as barras atualizadas, e não apenas quando ela própria decidir fazê-lo.

 
Por algum motivo, um símbolo personalizado pode ser removido do Market Watch mesmo quando seu gráfico estiver aberto.
 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Nova versão do MetaTrader 5 build 2007: Calendário Econômico, Serviços MQL5 e API para R

fxsaber, 2019.02.22 12:40

É correto que após a atualização das tarifas na OnCalculate, ela sempre é recalculada preventivamente para zero?

Afinal, se eu atualizar uma barra nova, por exemplo, não preciso recalcular o indicador inteiro.

 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Nova versão do MetaTrader 5 build 2007: Calendário Econômico, Serviços MQL5 e API para R

fxsaber, 2019.02.22 12:14

Um grande pedido, se não houver nenhum símbolo, mas houver seus arquivos tkc, exclua-os.

Diante de uma situação que, anormalmente, o Terminal caiu.

Eu entro e vejo que meu símbolo não está lá. Basta criar um símbolo com o mesmo nome e mostrá-lo com a história da tkc. Parece ser um erro.

Razão: