自定义符号。误差、错误、问题、建议。 - 页 2

 
fxsaber:
真实的自定义符号只供参考,不用于交易。它们只能用于测试器中的交易。

真实上的自定义符号 可以作为真实工具上的开盘或收盘的一个指标。

 
Aidas Geguzis:

自定义符号可以作为真实工具上的开盘或收盘指标。

你和fxsaber 谢谢,而且文档中没有一个字提到它像往常一样,其原因是应该在论坛上和通过口碑收集信息。当我看着图纸时,我以为他们通过终端实现了某种翻倍或N个工具的交易,我也想知道他们是如何固定手数的。现在我明白了,这对我来说可能没有用。

 

Bug 05.

BugCustomTicksAdd.

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));                                                                   // Удалили символ.         
  }
}


结果

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


增加的点数比指定的多。

 

关于合成物的东西正在吞噬内存,并拖慢了终端 的启动速度。我昨天做了两个合成物,为它们各开了一个图。今天终端启动了三分钟(!!!),任务管理器的内存消耗为1.88Gb。删除了这些图表,隐藏了合成物,启动20秒,和以前一样,内存消耗490MB。2006年的图片,窗口中的最大条数 - 无限。

在第一次合成时,有来自帮助的配方。

1

关于第二个简单的公式。

0.5 * (ask(EURUSD) + ask(USDCAD))

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

关于合成物的东西正在吞噬内存,并拖慢了终端 的启动速度。我昨天做了两个合成物,为它们各开了一个图。今天终端启动了三分钟(!!!),任务管理器的内存消耗为1.88Gb。删除了这些图表,隐藏了合成物,启动20秒,和以前一样,内存消耗490MB。2006年的图片,窗口中的最大条数 - 无限。

在第一次合成时,有来自帮助的配方。

关于第二个简单的公式。

0.5 * (ask(EURUSD) + ask(USDCAD))

当运行合成时,它占用了大量的SSD磁盘资源。如果SSD磁盘很慢,如果有几个合成器,终端启动可能需要10分钟。

我甚至不是在谈论用合成材料的终端使用HDD。

当我放上快速驱动器(三星970 Pro)时,所有终端启动和合成的问题都停止了。

终端启动时内存约为12Gb,使用的是i7-6700K处理器。

 
fxsaber:

Bug 05.

Bug CustomTicksAdd.

增加的点数比指定的多。

2007年--情况变得更加糟糕。CustomTicksAdd增加 了63969个刻度,而不是一个。

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 - 所有的错误都是实际的。

 
fxsaber:

Bug 02.

即使是ChartRedraw也不会产生视觉效果。

只有当你用鼠标滚动图表时,它才会恢复正常。你能通过ChartRedraw修复可视化吗?

推荐一种方法,在CustomRatesUpdate 之后刷新图表,这样它就会强制绘制更新的条形图,而不是只在它自己决定这样做的时候才刷新。

 
由于某些原因,一个自定义符号 可以从市场观察中删除,即使其图表是开放的。
 

关于交易、自动交易系统和交易策略测试的论坛

新版本的MetaTrader 5 build 2007:经济日历、MQL5服务和R的API

fxsaber, 2019.02.22 12:40

在OnCalculate中RatesUpdate之后,它总是将prev_calculated重置为零,这是否正确?

毕竟,如果我更新一个新的条形图,比如说,我不需要重新计算整个指标。

 

关于交易、自动交易系统和交易策略测试的论坛

新版本的MetaTrader 5 build 2007:经济日历、MQL5服务和R的API

fxsaber, 2019.02.22 12:14

一个很大的要求,如果没有符号,但有其kc文件,请删除它们。

面对异常的情况,终端机崩溃了。

我走进去,看到我的符号不在那里。只要创建一个同名的符号,并将其与kc的历史记录一起显示出来。它看起来像一个错误。