カスタムシンボル。エラー、バグ、質問、提案。 - ページ 2

 
fxsaber:
リアルでのカスタムシンボルは情報提供のみを目的としており、取引には使用できません。テスターでの取引にのみ使用することができます。

実機上のカスタムシンボルは、実機のオープニングやクロージングの指標として使用することができます。

 
Aidas Geguzis:

カスタムシンボルは、実際の商品でオープニングやクロージングの指標として使用することができます。

あなたとfxsaber :ありがとうございます、ドキュメントには一言も書いてありませんその理由は、いつも通り、掲示板や口コミで情報を集めることです。図面を見て、端末で倍々やnツール取引を実装しているのかと思いきや、ロット倍率をどうやって固定したのだろうと疑問に思いました。今見ると、私にとっては無駄なことかもしれません。

 

バグ05。

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


結果

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


指定された数よりも多くのティックが追加されています。

 

なんか合成樹脂がメモリ食って端末の起動が 遅くなってる。昨日、2つの合成樹脂を作り、それぞれのチャートを開きました。今日の端末は3分(!!)起動、タスクマネージャによるRAM消費量は1.88Gbでした。これらのチャートを削除し、合成物を非表示にしたところ、起動は以前と同じく20秒、RAM消費量490MB。Bild 2006、ウィンドウ内の最大バー数 - 無制限。

最初の合成では、ヘルプから粉ミルクをもらっていました。

1

2つ目は、シンプルな数式。

0.5 * (アスク(EURUSD) + アスク(USDCAD))

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

なんか合成樹脂がメモリ食って端末の起動が 遅くなってる。昨日、2つの合成樹脂を作り、それぞれのチャートを開きました。今日の端末は3分(!!)起動、タスクマネージャによるRAM消費量は1.88Gbでした。これらのチャートを削除し、合成物を非表示にしたところ、起動は以前と同じく20秒、RAM消費量490MB。Bild 2006、ウィンドウ内の最大バー数 - 無制限。

最初の合成では、ヘルプから粉ミルクをもらっていました。

2つ目は、シンプルな数式。

0.5 * (アスク(EURUSD) + アスク(USDCAD))

シンセティック実行時には、SSDのディスクリソースを大量に消費します。SSDディスクの速度が遅い場合、ターミナル起動に複数のシンテックスがある場合、10分ほどかかることがあります。

合成樹脂を使った端末にHDDを使うという話でもない。

高速ドライブ(Samsung 970 Pro)を入れたら、ターミナル起動や合成の問題が全てなくなりました。

RAMは端末起動時で約12Gb、プロセッサはi7-6700Kを使用。

 
fxsaber:

バグ05。

バグCustomTicksAdd。

指定された数よりも多くのティックが追加されています。

2007年 - さらに悪化した。CustomTicksAddは、1つのティックの代わりに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:

バグ 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

大きなお願いですが、シンボルがない場合でも、そのtkcファイルがあれば削除してください。

異常な事態に直面し、端末がクラッシュしてしまった。

中に入ってみると、私のシンボルがない。同じ名前のシンボルを作って、tkcから履歴を表示させればいい。エラーのようです。