mql4言語の特徴、微妙なニュアンスとテクニック - ページ 8 123456789101112131415...35 新しいコメント fxsaber 2018.03.06 22:36 #71 iCustomを使用したExpert Advisorによるインジケータの最初の呼び出しは、インジケータのOnInitとOnCalculateの開始を引き起こします。インジケータは、次にiCustomを呼び出すまで、そのOnCalculateを呼び出しません。Expert Advisor を終了すると、インジケータ OnDeinit が呼び出されます。 iCustomのインジケーターは完全ではありません。また、MQL4ツールを使用して、手動で起動したインジケーターからインジケーターバッファーの 値を受け取ることは不可能です。 Andrey Khatimlianskii 2018.03.06 23:54 #72 fxsaber: iCustomのインジケーターは完全ではありません。不完全性とは?イベントが処理されない? fxsaber 2018.03.07 00:04 #73 Andrey Khatimlianskii:不完全性とは?イベントが処理されていない?はい。 fxsaber 2018.03.29 14:32 #74 #property strict #define HOUR 3600 #define DAY (24 * HOUR) #define WEEK 7 datetime GetBarTime( const datetime time, const bool NextBar = false, string Symb = NULL, const ENUM_TIMEFRAMES TimeFrame = PERIOD_M1 ) { if (Symb == NULL) Symb = _Symbol; return(iTime(Symb, TimeFrame, iBarShift(Symb, TimeFrame, time) - (NextBar ? 1 : 0))); } datetime GetTimeDayOfWeek( const int Shift = 0, const ENUM_DAY_OF_WEEK Day = SUNDAY ) { const datetime Res = TimeCurrent() / DAY * DAY; return(Res - (((WEEK + (TimeDayOfWeek(Res) - Day)) % WEEK) + Shift * WEEK) * DAY); } // Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmtoffset // Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю int TimeServerGMTOffset( void ) { const datetime Sunday = GetTimeDayOfWeek(); return(((int)MathRound((double)MathMin(Sunday - DAY - GetBarTime(Sunday), Sunday + DAY - GetBarTime(Sunday, true)) / HOUR) - 3) * HOUR); } // Аналог по серверному времени - https://www.mql5.com/ru/docs/dateandtime/timegmt // Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю datetime TimeServerGMT( void ) { return(TimeCurrent() + TimeServerGMTOffset()); } アプリケーション #define PRINT(A) Print(#A + " = " + (string)(A)) void OnStart() { PRINT(TimeGMT()); PRINT(TimeServerGMT()); } 週末、テスター、リアルタイムだけでなく、サードパーティのデータにも対応できる点が良いアプローチだと思います。つまり、MT以外から引用されたGMTの引用が決定される。 fxsaber 2018.04.02 10:03 #75 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム mql5言語の特徴、微妙なニュアンスとコツ fxsaber さん 2018.04.01 08:46 // https://www.mql5.com/ru/docs/dateandtime/timetradeserver datetime TimeTradeServer() { return(TimeGMT() - TimeServerGMTOffset()); } Vitaly Muzichenko 2018.04.02 16:45 #76 fxsaber: 代わりにTimeCurrent() の場合は、 楽器の最後のティックの時間は、計算が邪魔されないのでしょうか? fxsaber 2018.04.02 17:02 #77 Vitaly Muzichenko:TimeCurrent() の代わりに、その商品の最後のティックの時間をとれば、計算が破綻しないのでしょうか?それはないでしょう。TimeCurrentは アルゴリズムに非常に間接的に影響を与える。バータイムなどを取ることができます。 それは単にどのような方法で最後に渡された(バーの歴史の中で)日曜日の日付を計算する必要がある - 日曜日前と日曜日の後のバーを持つことです。せめてTimeLocalを使えばいいのに。 fxsaber 2018.04.03 16:15 #78 このようなコードを書くことができる言語を好きにならないのは難しいことですdouble Lots[] = {0, 0, 0, 0, 0, 0}; for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS)) Lots[OrderType()] += OrderLots();開発者は、そんなことを想定して言語を書いたわけではないはずです。どうしてMQL4にはこんな便利なものがいっぱいあるんだろう、と不思議に思います。 Alexey Viktorov 2018.04.03 16:30 #79 fxsaber: このようなコードを書くことができる言語を好きにならないのは難しいことです開発者はそんなことを考えずに言語を書いたのでしょう。どうしてMQL4にはこんな便利なものがいっぱいあるんだろう、と不思議に思います。謎はない。mql5でも長年使っていますが、位置型や順序型は明示的にint型に 変換する必要がありますね。 このように配列を宣言するだけです。 double Lots[6] = {0.0}; また、ticketypesは配列に格納することができます。 fxsaber 2018.04.03 16:36 #80 Alexey Viktorov:謎はない。長年使っていて、mql5でもそうなのですが、明示的にint型に 渡す必要があるのです。そこでは、意味がまったく違ってくる。 123456789101112131415...35 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
- iCustomを使用したExpert Advisorによるインジケータの最初の呼び出しは、インジケータのOnInitとOnCalculateの開始を引き起こします。
- インジケータは、次にiCustomを呼び出すまで、そのOnCalculateを呼び出しません。
- Expert Advisor を終了すると、インジケータ OnDeinit が呼び出されます。
iCustomのインジケーターは完全ではありません。また、MQL4ツールを使用して、手動で起動したインジケーターからインジケーターバッファーの 値を受け取ることは不可能です。iCustomのインジケーターは完全ではありません。
不完全性とは?イベントが処理されない?
不完全性とは?イベントが処理されていない?
はい。
アプリケーション
週末、テスター、リアルタイムだけでなく、サードパーティのデータにも対応できる点が良いアプローチだと思います。つまり、MT以外から引用されたGMTの引用が決定される。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
mql5言語の特徴、微妙なニュアンスとコツ
fxsaber さん 2018.04.01 08:46
代わりにTimeCurrent() の場合は、 楽器の最後のティックの時間は、計算が邪魔されないのでしょうか?
TimeCurrent() の代わりに、その商品の最後のティックの時間をとれば、計算が破綻しないのでしょうか?
それはないでしょう。TimeCurrentは アルゴリズムに非常に間接的に影響を与える。バータイムなどを取ることができます。
それは単にどのような方法で最後に渡された(バーの歴史の中で)日曜日の日付を計算する必要がある - 日曜日前と日曜日の後のバーを持つことです。せめてTimeLocalを使えばいいのに。
開発者は、そんなことを想定して言語を書いたわけではないはずです。どうしてMQL4にはこんな便利なものがいっぱいあるんだろう、と不思議に思います。
このようなコードを書くことができる言語を好きにならないのは難しいことです
開発者はそんなことを考えずに言語を書いたのでしょう。どうしてMQL4にはこんな便利なものがいっぱいあるんだろう、と不思議に思います。
謎はない。mql5でも長年使っていますが、位置型や順序型は明示的にint型に 変換する必要がありますね。
このように配列を宣言するだけです。
また、ticketypesは配列に格納することができます。謎はない。長年使っていて、mql5でもそうなのですが、明示的にint型に 渡す必要があるのです。
そこでは、意味がまったく違ってくる。