mql5言語の特徴、微妙なニュアンスとテクニック - ページ 55 1...484950515253545556575859606162...247 新しいコメント fxsaber 2017.09.14 08:40 #541 アレクセイ・ナヴォイコフもう一つの便利な方法は、protected inheritanceで、ベースクラスがすべてのメソッドを持ち、継承したクラスではGetだけを表示する。そして必要なときにベースクラスにもって くる。保護された継承を使用したが、選択されたもので台無しにした。ありがとうございました。しかし、Metaeditorは、これらのメソッドが利用できない場合でも、リストにダンプされるというバグをまだ修正していません。今は確認していませんが、実験していたときは、メモリに保存されていたので、落ちませんでした。 fxsaber 2017.09.15 07:00 #542 注文を変更または削除する前に、チェックする必要があります。OrderGetInteger(ORDER_STATE) == ORDER_STATE_PLACED SBにはこれがないので、自分でやるしかない。テスターでこのチェックを行う意味はありません - 現在のすべての注文は常にこのステータスになっています。 fxsaber 2017.09.22 07:47 #543 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム マーケットクローズ fxsaber さん 2017.09.22 09:45 // Время последнего тика символа long GetSymbolTime( const string Symb ) { MqlTick Tick; return(SymbolInfoTick(Symb, Tick) ? Tick.time_msc : 0); } // Время последнего тика Обзора рынка long GetMarketWatchTime( void ) { long Res = 0; for (int i = SymbolsTotal(true) - 1; i >= 0; i--) { const long TmpTime = GetSymbolTime(SymbolName(i, true)); if (TmpTime > Res) Res = TmpTime; } return(Res); } // Текущее время на торговом сервере без учета пинга long GetCurrenTime( void ) { static ulong StartTime = GetMicrosecondCount(); static long PrevTime = 0; const long TmpTime = GetMarketWatchTime(); if (TmpTime > PrevTime) { PrevTime = TmpTime; StartTime = GetMicrosecondCount(); } return(PrevTime + (long)((GetMicrosecondCount() - StartTime) / 1000)); } void OnInit() { MarketBookAdd(_Symbol); } void OnDeinit( const int ) { MarketBookRelease(_Symbol); } string TimeToString( const long Value ) { return((string)(datetime)(Value / 1000) + "." + (string)IntegerToString(Value % 1000, 3, '0')); } void OnBookEvent( const string& ) { Comment(TimeToString(GetCurrenTime())); } fxsaber 2017.09.22 18:43 #544 POSITION_TIME_UPDATE は、ポジションロットの変更にのみ関連する。例えば、任意の口座タイプにおけるポジションの部分的な決済や、ポジションのネッティングなどです。SL/TP レベルの変更は POSITION_TIME_UPDATE に影響を与えない。言い換えると、POSITION_TIME_UPDATEは、取引履歴-取引に反映された修正にのみ影響されます。SL/TP-levelはこのような修正には適用されないので、影響はない。 fxsaber 2017.09.26 09:36 #545 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム EAを再スタートさせる fxsaber さん 2017.09.26 11:35 // Перезапуск себя bool ExpertReopen() { return(ChartSaveTemplate(0, __FILE__) && ChartApplyTemplate(0, __FILE__)); } fxsaber 2017.09.27 13:21 #546 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム バグ、バグ、質問 fxsaber さん 2017.09.08 11:11struct A { int i; }; struct B : public A {}; void OnStart() { A a = {0}; B b; b = (B)a; // cannot cast 'A' to 'B' b = a; // так без проблем } BODよりすべてここにある。前者ではキャスト、後者ではアサインメントです。親から子孫への派生は認めない オブジェクトへの代入は、対応するコピー演算子の呼び出しであり、この場合、暗黙のA::operator=(const A &)ありがとうございます。では、親コピー演算子は、公開継承の場合のみ、外部で利用可能なままなのですね。確認しました、その通りです。struct A { int i; }; struct B : protected A {}; void OnStart() { A a = {0}; B b; b = a; // 'A::operator=' - cannot access protected member function }おいしいですか?この構成では、追加のコピーコンストラクタ B::operator=(const A&) を宣言し、その中で A::operator= の呼び出しを "throw" する必要があります。 fxsaber 2017.09.27 13:31 #547 カスタムデータで標準指標の計算を実装するためのオプション(追加の指標を作成することなく)。 Базовые индикаторы, применяемые к кастомному инструменту 2017.09.27www.mql5.com Здравствуйте. Задавал этот вопрос на английском форуме... fxsaber 2017.10.04 10:19 #548 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム マーケットクローズ fxsaber さん 2017.09.22 09:45 // Время последнего тика символа long GetSymbolTime( const string Symb ) { MqlTick Tick; return(SymbolInfoTick(Symb, Tick) ? Tick.time_msc : 0); } // Время последнего тика Обзора рынка long GetMarketWatchTime( void ) { long Res = 0; for (int i = SymbolsTotal(true) - 1; i >= 0; i--) { const long TmpTime = GetSymbolTime(SymbolName(i, true)); if (TmpTime > Res) Res = TmpTime; } return(Res); }カスタムシンボルは、Market Watchでは3000年単位で自由に設定できるため、ループから除外する必要があります。 fxsaber 2017.10.05 07:04 #549 MQL5では、次のように書くことが可能です。void OnTick() { double Buffer[]; CopyBuffer(iMA(NULL, PERIOD_CURRENT, 1, 0, MODE_SMA, PRICE_CLOSE), 0, 0, 1, Buffer); }つまり、各ティックで ハンドルを「作成」します。新しいインディケータは作成されず、iMAの入力パラメータと以前のティックで実行されたインディケータとの比較にのみ時間が費やされます。つまり、MT4で行っていることと全く同じです。 Andrey Khatimlianskii 2017.10.05 07:06 #550 fxsaber MQL5では、このように書いても全く問題ありません。つまり、各ティックで ハンドルを「作成」します。新しいインディケータは作成されず、iMAの入力パラメータと以前のティックで開始されたインディケータとの比較にのみ時間が費やされます。すなわち、MT4で行っていることと全く同じです。性能測定は行いましたか?どれくらい性能が落ちるのか気になるところ。特にカスタムインジケーターの場合。 1...484950515253545556575859606162...247 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
もう一つの便利な方法は、protected inheritanceで、ベースクラスがすべてのメソッドを持ち、継承したクラスではGetだけを表示する。そして必要なときにベースクラスにもって くる。
保護された継承を使用したが、選択されたもので台無しにした。ありがとうございました。
しかし、Metaeditorは、これらのメソッドが利用できない場合でも、リストにダンプされるというバグをまだ修正していません。
今は確認していませんが、実験していたときは、メモリに保存されていたので、落ちませんでした。
注文を変更または削除する前に、チェックする必要があります。
SBにはこれがないので、自分でやるしかない。
テスターでこのチェックを行う意味はありません - 現在のすべての注文は常にこのステータスになっています。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
マーケットクローズ
fxsaber さん 2017.09.22 09:45
POSITION_TIME_UPDATE は、ポジションロットの変更にのみ関連する。例えば、任意の口座タイプにおけるポジションの部分的な決済や、ポジションのネッティングなどです。
SL/TP レベルの変更は POSITION_TIME_UPDATE に影響を与えない。
言い換えると、POSITION_TIME_UPDATEは、取引履歴-取引に反映された修正にのみ影響されます。SL/TP-levelはこのような修正には適用されないので、影響はない。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
EAを再スタートさせる
fxsaber さん 2017.09.26 11:35
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
fxsaber さん 2017.09.08 11:11
すべてここにある。
前者ではキャスト、後者ではアサインメントです。
親から子孫への派生は認めない
オブジェクトへの代入は、対応するコピー演算子の呼び出しであり、この場合、暗黙のA::operator=(const A &)
ありがとうございます。では、親コピー演算子は、公開継承の場合のみ、外部で利用可能なままなのですね。確認しました、その通りです。
おいしいですか?
この構成では、追加のコピーコンストラクタ B::operator=(const A&) を宣言し、その中で A::operator= の呼び出しを "throw" する必要があります。
カスタムデータで標準指標の計算を実装するためのオプション(追加の指標を作成することなく)。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
マーケットクローズ
fxsaber さん 2017.09.22 09:45
カスタムシンボルは、Market Watchでは3000年単位で自由に設定できるため、ループから除外する必要があります。
つまり、各ティックで ハンドルを「作成」します。新しいインディケータは作成されず、iMAの入力パラメータと以前のティックで実行されたインディケータとの比較にのみ時間が費やされます。つまり、MT4で行っていることと全く同じです。
MQL5では、このように書いても全く問題ありません。
つまり、各ティックで ハンドルを「作成」します。新しいインディケータは作成されず、iMAの入力パラメータと以前のティックで開始されたインディケータとの比較にのみ時間が費やされます。すなわち、MT4で行っていることと全く同じです。
性能測定は行いましたか?どれくらい性能が落ちるのか気になるところ。特にカスタムインジケーターの場合。