template <typename T>
T MyPrint( const T Value, conststring Str, constbool DebugFlag = false ) { Print(Str + " = " + (string)Value); return(Value); }
#define _P(A) MyPrint(A, __FUNCSIG__", Line = " + (string)__LINE__ + ": " + #A) // Макрос для удобного и наглядного вывода значенийvoidOnStart()
{
conststring Name = "TEMP9"; // Имя кастомного символаconststring SymbOrig = "EURUSD"; // Имя оригинального символаMqlTick Ticks[];
constint 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 через CustomTicksAddMqlTick 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)); // Удалили символ.
}
}
結果
voidOnStart(), Line = 11: CopyTicksRange(SymbOrig,Ticks,COPY_TICKS_ALL,(long)D'2019.01.01'*1000) = 3316638voidOnStart(), Line = 13: CustomSymbolCreate(Name,NULL,SymbOrig) = truevoidOnStart(), Line = 13: SymbolSelect(Name,true) = truevoidOnStart(), Line = 15: CustomTicksAdd(Name,Ticks) = 3316638voidOnStart(), Line = 23: CustomTicksDelete(Name,(ulong)D'2019.02.01 00:00'*1000,LONG_MAX) = 1158959voidOnStart(), Line = 24: CopyTicksRange(Name,Ticks) = 2157552voidOnStart(), Line = 26: CustomTicksAdd(Name,AddTicks) = 1voidOnStart(), Line = 28: CopyTicksRange(Name,Ticks) = 2157681voidOnStart(), Line = 29: CustomTicksDelete(Name,(ulong)D'2019.02.01 00:00'*1000,LONG_MAX) = 129voidOnStart(), Line = 31: SymbolSelect(Name,false) = truevoidOnStart(), Line = 32: CustomSymbolDelete(Name) = true
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
リアルでのカスタムシンボルは情報提供のみを目的としており、取引には使用できません。テスターでの取引にのみ使用することができます。
実機上のカスタムシンボルは、実機のオープニングやクロージングの指標として使用することができます。
カスタムシンボルは、実際の商品でオープニングやクロージングの指標として使用することができます。
あなたとfxsaber :ありがとうございます、ドキュメントには一言も書いてありません。その理由は、いつも通り、掲示板や口コミで情報を集めることです。図面を見て、端末で倍々やnツール取引を実装しているのかと思いきや、ロット倍率をどうやって固定したのだろうと疑問に思いました。今見ると、私にとっては無駄なことかもしれません。
バグ05。
バグCustomTicksAdd。
結果
指定された数よりも多くのティックが追加されています。
なんか合成樹脂がメモリ食って端末の起動が 遅くなってる。昨日、2つの合成樹脂を作り、それぞれのチャートを開きました。今日の端末は3分(!!)起動、タスクマネージャによるRAM消費量は1.88Gbでした。これらのチャートを削除し、合成物を非表示にしたところ、起動は以前と同じく20秒、RAM消費量490MB。Bild 2006、ウィンドウ内の最大バー数 - 無制限。
最初の合成では、ヘルプから粉ミルクをもらっていました。
2つ目は、シンプルな数式。
0.5 * (アスク(EURUSD) + アスク(USDCAD))
なんか合成樹脂がメモリ食って端末の起動が 遅くなってる。昨日、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を使用。
バグ05。
バグCustomTicksAdd。
指定された数よりも多くのティックが追加されています。
2007年 - さらに悪化した。CustomTicksAddは、1つのティックの代わりに63969のティックを追加します。
SZY 2007 - すべてのバグは実際です。
バグ 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から履歴を表示させればいい。エラーのようです。