PROFIからSUPER PROFIへの質問-1. - ページ 42 1...3536373839404142434445 新しいコメント Taras Slobodyanik 2018.07.22 17:12 #411 swanhearts:こんにちは、私は私が必要とするすべてのレベルを持つMAインジケータを送りました。問題は、インジケータ(各MA)にマウスを合わせても、そのMAの周期が表示されないことです。どうすれば直るのか?IndicatorShortName("MASHKI =)") を変更すると、常にシンタックスエラーが発生します; 助けてください。 SetIndexLabelでインジケータバッファ 名を設定する。 Andrey Khatimlianskii 2020.03.05 22:46 #412 1.関数呼び出しが前の呼び出しと同じティックにあることを知るための最も安価な方法は何ですか? bool tick_already_processed() { return( ??? ); } void some_func() { if ( tick_already_processed() ) return; // recalculate only once on each tick } void OnTick() { if ( A ) some_func(); if ( B ) some_func(); if ( C ) some_func(); } 時間(TimeCurrent)は、理論的にはSymbolInfoTickからms単位の時間で、変わらないことがあります。 ビッドタイム、アスクタイム、msタイムを比較すると、かなり高額になります。 Expert Advisor 自体で制御を整理することは提案せず、普遍的な独立した機能を取得したい。 トレーディング業務に関しても 同じ疑問があります。注文/ポジションのリスト(オープンレベル、SL、TPを含む)に、前回実行時から何か変化があったことを知るにはどうしたらよいでしょうか。 OnTradeに何らかのフラグを設定する必要があります(終了したらリセット)、それが一番安上がりな方法です。 しかし、やはり、普遍的な解決策が欲しいところです。 誰かアイデアはありませんか? ... 2020.03.05 23:37 #413 Andrey Khatimlianskii: 例https://www.mql5.com/ru/code/16997 Resources.mqhファイルです。 IsNewPeriod関数 基本的な考え方は、内部にstaticを 持つ関数を使用することです。 ID = GetMicroSecondsCountに格納することで、記憶し、ティックを確認することができます。 注文と同じように - マジックチェック 下の擬似コードは確認していません :) bool IsNewTick(ulong newId) // GetMicrosecondCount() or magic { static ulong id = 0; if (id != newId) { id = newId; return true; } return false; } fxsaber 2020.03.06 00:31 #414 Andrey Khatimlianskii: 2.トレードについても 同様の質問がある。注文/ポジションのリスト(オープンレベル、SL、TPを含む)に、前回の実行時から何か変更があった場合、どのように確認すればよいですか? Aの場合、OnTradeに何らかのフラグを立てる(そして実行後にリセットする)必要があり、それが一番安上がりな方法です。 しかし、やはり、普遍的な解決策が欲しいところです。 誰かアイデアはありませんか? ここに条件(SL/TPなど)を追加してください。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム オーダオーバーフローサイクルの整理 fxsaber さん 2017.10.18 12:29 struct HISTORY_UNIT { long Ticket; int Type; double Lots; HISTORY_UNIT( void ) : Ticket(::OrderTicket()), Type(::OrderType()), Lots(::OrderLots()) { } bool operator !=( const HISTORY_UNIT &Unit ) const { return((this.Ticket != Unit.Ticket) || (this.Type != Unit.Type) || (this.Lots != Unit.Lots)); } bool IsChange( void ) { const HISTORY_UNIT Tmp; const bool Res = (this != Tmp); if (Res) this = Tmp; return(Res); } }; // Возвращает true только в случае, если с последнего вызова произошли торговые изменения bool IsChange( void ) { static HISTORY_UNIT History[]; const int Total = OrdersTotal(); bool Res = (ArraySize(History) != Total); for (int i = 0, j = Res ? ArrayResize(History, 0, Total) : 0; i < Total; i++) if (OrderSelect(i, SELECT_BY_POS)) { if (Res || (Res = History[j].IsChange())) ArrayResize(History, j + 1, Total); j++; } return(Res); } fxsaber 2020.03.06 00:58 #415 Andrey Khatimlianskii: 1.関数呼び出しが前の呼び出しと同じティックにあることを知るための最も安価な方法は何ですか? 時間(TimeCurrent)は、理論的にはSymbolInfoTickからms単位の時間で、変わらないことがあります。 ビッドタイム、アスクタイム、msタイムの比較は高すぎる。 EA自体に制御を整理することは提案しません、普遍的な独立した機能を得たいのです。 ここで問題になるのは、安さではなく、刻みの番号付けの信頼性です。私はEAで次のようなことを行っています。 #ifdef __MQL5__ #else // __MQL5__ // В false-режиме если засекли изменения, то последующие вызовы не делают проверку. static bool IsNotChange( const bool bInit = false ) { static bool IsChange = false; if (bInit) IsChange = false; #ifdef HISTORYTICKS_ISCHANGE if (bInit) HISTORYTICKS::IsChange(); else if (!IsChange) IsChange = HISTORYTICKS::IsChange(); #endif // HISTORYTICKS_ISCHANGE return(!IsChange); } #endif // __MQL5__ 本機能は、MT4用バージョンです。ナンバリング・スルー・スパイ・インジケータ。 MT5用の同機能のバージョンは、不要なものを削除すべきなので、載せていません。でも、この機能がベースになっているんです。 // Свежие тики с последнего вызова static int GetFreshTicks( MqlTick &Ticks[], const datetime dFrom = 0 ) { static long LastTime = 0; static int LastAmount = 0; if (dFrom) { ::Comment("Waiting Ticks from " + ::TimeToString(dFrom, TIME_DATE) + "..."); LastAmount = 0; } ::ArrayFree(Ticks); int Size = (dFrom || LastTime) ? ::CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, dFrom ? (long)dFrom * 1000 : LastTime) : 0; if (Size > LastAmount) { LastTime = Ticks[Size - 1].time_msc; int NewLastAmount = 1; for (int i = Size - 2; (i >= LastAmount) && (Ticks[i].time_msc == LastTime); i--) NewLastAmount++; if (::ArrayRemove(Ticks, 0, LastAmount)) Size -= LastAmount; LastAmount = NewLastAmount; } else Size = ::ArrayResize(Ticks, 0); return(Size); } 0以外を返した場合 - 新しいティック。 Andrey Khatimlianskii 2020.03.06 01:18 #416 ...:基本的な考え方は、内部にstaticを 持つ関数を使用することです。ID = GetMicroSecondsCount に格納することで、刻みを記憶し、照合することができます。 ありがとうございました。 問題は、このユニークなID(ティック番号)が存在しないことだけなのです。 GetMicroSecondsCountは呼び出しのたびに変化するので役に立ちません(そのために設計されています)。一方、GetTickCountは 理論上、隣接する2つのティックで変化しない可能性があります。 Andrey Khatimlianskii 2020.03.06 01:19 #417 fxsaber: ここで問題になるのは、安さではなく、刻み番号の信頼性です。戦闘用EAでは、私はこのようにします。 いいえ、bid/ask/msの比較より確実に遅くなります。 信頼性の問題とは?重要なのは、何かを変えるという事実だけです。 Andrey Khatimlianskii 2020.03.06 01:21 #418 fxsaber: ここに条件(SL/TPなど)を追加してください。 すぐにこのコードを思い出した。 ただ、ポイントは、すべてのオーダーを不必要に列挙しないことです。 このループをEA全体で1つのループにすれば良いことは明らかです。しかし、この場合、関数に変更のサインを渡す必要があります(呼び出さないほうがいいかもしれません)。 fxsaber 2020.03.06 01:25 #419 Andrey Khatimlianskii: いいえ、bid/ask/msの比較より確実に遅くなります。 信頼性の問題とは?大切なのは、何かが変わるということです。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム PROFiからSUPER PROFiへの質問-1. アンドレイ・ハチムリアンスキー, 2020.03.05 23:46 時間(TimeCurrent)は、理論的にはSymbolInfoTickからのms単位の時間、も 変わらないかもしれません。 mscで bid、ask、timeを 比較すると高いです。 特にMT4でtime_mscのステップ変化が1000msの場合に関連します。 fxsaber 2020.03.06 01:29 #420 Andrey Khatimlianskii: しかし、目的はまさに、すべての注文が不必要に重ならないようにすることです。 このサイクルをEA全体で1つにすることができるのは明らかです。しかし、その場合、関数に変更のサインを渡さなければなりません(呼び出さないほうがいいかもしれません)。 理解できない。データベースで何かが変わった場合、それを知るには、以前のデータベースの状態と比較するしかない。 対応するデータベースの各要素を比較することができます。あるいは、それらからハッシュを計算し、ハッシュを比較することも可能です。 1...3536373839404142434445 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは、私は私が必要とするすべてのレベルを持つMAインジケータを送りました。問題は、インジケータ(各MA)にマウスを合わせても、そのMAの周期が表示されないことです。どうすれば直るのか?IndicatorShortName("MASHKI =)") を変更すると、常にシンタックスエラーが発生します; 助けてください。
SetIndexLabelでインジケータバッファ 名を設定する。
1.関数呼び出しが前の呼び出しと同じティックにあることを知るための最も安価な方法は何ですか?
時間(TimeCurrent)は、理論的にはSymbolInfoTickからms単位の時間で、変わらないことがあります。
ビッドタイム、アスクタイム、msタイムを比較すると、かなり高額になります。
Expert Advisor 自体で制御を整理することは提案せず、普遍的な独立した機能を取得したい。
トレーディング業務に関しても 同じ疑問があります。注文/ポジションのリスト(オープンレベル、SL、TPを含む)に、前回実行時から何か変化があったことを知るにはどうしたらよいでしょうか。
OnTradeに何らかのフラグを設定する必要があります(終了したらリセット)、それが一番安上がりな方法です。
しかし、やはり、普遍的な解決策が欲しいところです。
誰かアイデアはありませんか?
Andrey Khatimlianskii:
例https://www.mql5.com/ru/code/16997
Resources.mqhファイルです。
IsNewPeriod関数
基本的な考え方は、内部にstaticを 持つ関数を使用することです。
ID = GetMicroSecondsCountに格納することで、記憶し、ティックを確認することができます。
注文と同じように - マジックチェック
下の擬似コードは確認していません :)
2.トレードについても 同様の質問がある。注文/ポジションのリスト(オープンレベル、SL、TPを含む)に、前回の実行時から何か変更があった場合、どのように確認すればよいですか?
Aの場合、OnTradeに何らかのフラグを立てる(そして実行後にリセットする)必要があり、それが一番安上がりな方法です。
しかし、やはり、普遍的な解決策が欲しいところです。
誰かアイデアはありませんか?
ここに条件(SL/TPなど)を追加してください。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
オーダオーバーフローサイクルの整理
fxsaber さん 2017.10.18 12:29
1.関数呼び出しが前の呼び出しと同じティックにあることを知るための最も安価な方法は何ですか?
時間(TimeCurrent)は、理論的にはSymbolInfoTickからms単位の時間で、変わらないことがあります。
ビッドタイム、アスクタイム、msタイムの比較は高すぎる。
EA自体に制御を整理することは提案しません、普遍的な独立した機能を得たいのです。
ここで問題になるのは、安さではなく、刻みの番号付けの信頼性です。私はEAで次のようなことを行っています。
本機能は、MT4用バージョンです。ナンバリング・スルー・スパイ・インジケータ。
MT5用の同機能のバージョンは、不要なものを削除すべきなので、載せていません。でも、この機能がベースになっているんです。
0以外を返した場合 - 新しいティック。
基本的な考え方は、内部にstaticを 持つ関数を使用することです。
ID = GetMicroSecondsCount に格納することで、刻みを記憶し、照合することができます。
ありがとうございました。
問題は、このユニークなID(ティック番号)が存在しないことだけなのです。
GetMicroSecondsCountは呼び出しのたびに変化するので役に立ちません(そのために設計されています)。一方、GetTickCountは 理論上、隣接する2つのティックで変化しない可能性があります。
ここで問題になるのは、安さではなく、刻み番号の信頼性です。戦闘用EAでは、私はこのようにします。
いいえ、bid/ask/msの比較より確実に遅くなります。
信頼性の問題とは?重要なのは、何かを変えるという事実だけです。
ここに条件(SL/TPなど)を追加してください。
すぐにこのコードを思い出した。
ただ、ポイントは、すべてのオーダーを不必要に列挙しないことです。
このループをEA全体で1つのループにすれば良いことは明らかです。しかし、この場合、関数に変更のサインを渡す必要があります(呼び出さないほうがいいかもしれません)。
いいえ、bid/ask/msの比較より確実に遅くなります。
信頼性の問題とは?大切なのは、何かが変わるということです。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
PROFiからSUPER PROFiへの質問-1.
アンドレイ・ハチムリアンスキー, 2020.03.05 23:46
時間(TimeCurrent)は、理論的にはSymbolInfoTickからのms単位の時間、も 変わらないかもしれません。
mscで bid、ask、timeを 比較すると高いです。
特にMT4でtime_mscのステップ変化が1000msの場合に関連します。
しかし、目的はまさに、すべての注文が不必要に重ならないようにすることです。
このサイクルをEA全体で1つにすることができるのは明らかです。しかし、その場合、関数に変更のサインを渡さなければなりません(呼び出さないほうがいいかもしれません)。
理解できない。データベースで何かが変わった場合、それを知るには、以前のデータベースの状態と比較するしかない。
対応するデータベースの各要素を比較することができます。あるいは、それらからハッシュを計算し、ハッシュを比較することも可能です。