初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 553 1...546547548549550551552553554555556557558559560...1504 新しいコメント 削除済み 2016.04.03 09:14 #5521 Vitalii Ananev:Close[2]の代わりに2本目のバーのインジケータ値(例えばiRSI(......,2) )を、Close[1]の代わりに1本目のバーのインジケータ値を入力します。そして、urovenはレベルの 値です。あとは、すでに上記でお伝えしたとおりです。 ありがとうございます。 削除済み 2016.04.03 09:39 #5522 mt5でチャートの右側にその日のサイドボリュームを見たことがある人がいたら教えてください。mt4ではここで見つけました。https://www.mql5.com/ru/code/9777.私は2つのバリエーションを持っている:その中の変数を書き換えるか、既製のものを見つける。 または私は順序の意味がわからない、、、、、私は1つの平衡論を確認する必要がある、、、、。 私は昨日の日のプロファイルが左に描かれているmt5用の作品を見つけましたが、一つの重要な欠点があります、それは 今日起こることを描かない ことです。そこで、右側からのチャートパターン情報に、取引の瞬間に何が起きているのかを加えたいと思います Рыночный профиль ( Market Profile) 投票: 62006.10.11Collectorwww.mql5.com Рыночный профиль ( Market Profile) использует альтернативное представление информации как о горизонтальном, так и о вертикальном движении рынка. Maria Baburina 2016.04.03 10:22 #5523 Maria Baburina:前提条件 ProfitSellDBLはここで計算されます。Profit_Upgr = 0.01Tral_Start__Upgrはint型の外部変数に等しく、5と等価である。Tral_Size__Upgrも同様に4となります。TV - 刻み値、=10SumLotSellDBL = 0.04 読ませていただきました。Tral_Start__Upgr, Tral_Size__Upgr とその外部変数が double で定義されている場合の動作について見ました。すなわち、変換やデータの損失なしにすべてが同じタイプになるときです。結果は同じです。何がいけなかったのか? Vladimir Karputov 2016.04.03 10:30 #5524 Maria Baburina: 読んでみてください。Tral_Start__Upgr, Tral_Size__Upgr とその外部変数が double で定義されている場合の動作について見ました。すなわち、変換やデータの損失がなく、すべてが同じタイプである場合。結果は同じです。何がいけなかったのか?盲人が聾唖者に話しかける。誰かにテストしてもらいたいなら、他のマシンでコンパイルしてテストできる最小限のコードが必要です。コードなし - 何も話すことはありません。追加:デバッグを使用する(Debugging)。-事前設定-停止位置-デバッグの開始-観察可能な表現-コールスタックビュー-ステップバイステップデバッギング-デバッグの停止、再開、終了-ヒストリーデバッグ Vladimir Karputov 2016.04.03 16:30 #5525 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム バグ、バグ、質問 comp, 2016.04.03 18:21 ランタイムエラー#property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 class CLASS { public: double Buffer[]; CLASS( void ) { SetIndexBuffer(0, this.Buffer); } }; CLASS* Class; void OnInit( void ) { Class = new CLASS; delete Class; Class = new CLASS; Class.Buffer[0] = 0; // array out of range delete Class; return; } int OnCalculate( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[] ) { return(rates_total); }4では、問題なく動作しました5ではバツです。これもクアッドに比べたアーキテクチャの限界なのでしょうか?これに関する議論のリンクを教えてください、自分では見つけられませんでした。 削除済み 2016.04.03 16:53 #5526 ターミナル自体が(手動ではなく)OnCalculateを最初に呼び出した後にのみ、インジケータバッファに 何かを割り当てることができるという理解で合っていますか? Vladimir Karputov 2016.04.03 16:58 #5527 comp:ターミナル(手動ではない)OnCalculateの最初の呼び出しの後にのみ、何かが指標バッファに 割り当てられるというのは、正しく理解されていますか?OnCalculate()が呼ばれた後、インジケータ・バッファにアクセスすることができます。同時に、インジケータ・バッファ自体もグローバル変数領域で宣言して おく必要があります。//+------------------------------------------------------------------+ //| Accelerator.mq5 | //| Copyright 2009, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "2009, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property description "Accelerator/Decelerator" //---- indicator settings #property indicator_separate_window #property indicator_buffers 6 #property indicator_plots 1 #property indicator_type1 DRAW_COLOR_HISTOGRAM #property indicator_color1 Green,Red #property indicator_width1 2 #property indicator_label1 "AC" //--- indicator buffers double ExtACBuffer[]; double ExtColorBuffer[]; double ExtFastBuffer[]; double ExtSlowBuffer[]; double ExtAOBuffer[]; double ExtSMABuffer[]; //--- handles for MAs int ExtFastSMAHandle; int ExtSlowSMAHandle; //--- bars minimum for calculation #define DATA_LIMIT 37 削除済み 2016.04.03 17:27 #5528 探していたものが見つかったと思うのですが、コードの古さが原因でエラーになります直すのを手伝ってくれ......無理のない範囲で。と、右側に回すのを手伝ってもらえると助かります。 ファイル: MarketProfile_Virgin_POC.mq5 13 kb 削除済み 2016.04.03 17:47 #5529 Karputov Vladimir:OnCalculate()が呼び出された後、インジケータ・バッファにアクセスすることができます。結論から言うと、あなたは間違っています。端末がOnCalculateを呼び出したときのみ適用可能です。この場合、MT4での条件はOnCalculateを一度だけ呼び出せばよいので、より柔軟性があります。また、MT5では、SetIndexBufferの後、毎回ターミナル自身によるOnCalculateの呼び出しを待つ必要があります。プルーフ#property strict #property indicator_chart_window #property indicator_buffers 1 #ifdef __MQL5__ #property indicator_plots 1 #endif #ifdef __MQL5__ #define TRUE true #define FALSE false #endif class CLASS { public: double Buffer[]; CLASS( void ) { ::SetIndexBuffer(0, this.Buffer); } #define TIMESERIES(X) \ ::ArraySetAsSeries(X, TRUE); \ Size = ::MathMin(Copy##X(::Symbol(), ::Period(), 0, bars, X), Size); static int FullOnCalculate( void ) { int Spread[]; long RealVolume[]; int Size = INT_MAX; #ifdef __MQL4__ const int bars = ::Bars; #endif #ifdef __MQL5__ const int bars = ::Bars(::Symbol(), ::Period()); #endif TIMESERIES(Spread) TIMESERIES(RealVolume) #ifdef __MQL4__ return(::OnCalculate(Size, 0, Time, Open, High, Low, Close, RealVolume, Volume, Spread)); #endif #ifdef __MQL5__ datetime Time[]; double Open[]; double High[]; double Low[]; double Close[]; long TickVolume[]; TIMESERIES(Time) TIMESERIES(Open) TIMESERIES(High) TIMESERIES(Low) TIMESERIES(Close) TIMESERIES(TickVolume) return(::OnCalculate(Size, 0, Time, Open, High, Low, Close, RealVolume, TickVolume, Spread)); #endif } }; CLASS* Class; bool FirstRunOnCalculate = TRUE; // Необходимо TRUE, т.к. вызов OnCalculate только самим терминалом инициирует индикаторный буфер void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam ) { if (id == CHARTEVENT_CHART_CHANGE) { Print(__FUNCTION__); ::OnDeinit(); ::Class = new CLASS; if (!FirstRunOnCalculate) CLASS::FullOnCalculate(); // Тут будет задница для MT5 (в MT4 - без проблем), т.к. после SetIndexBuffer в MT5 надо дожидаться вызова OnCalculate САМИМ терминалом } return; } void OnDeinit( const int Reason = 0 ) { if (::CheckPointer(::Class) == POINTER_DYNAMIC) delete ::Class; return; } int OnCalculate( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[] ) { Print(__FUNCTION__); if (FirstRunOnCalculate) FirstRunOnCalculate = FALSE; if (::CheckPointer(::Class) != POINTER_INVALID) ::Class.Buffer[0] = 0; // array out of range - MT5-ERROR!!! return(rates_total); }MT4ではこのインジケータは問題なく動作しますが、MT5ではエラーでクラッシュします。結果的には、MT4ではターミナルによるOnCalculateの最初の呼び出しを待つだけで、SetIndexBufferを使った再定義を含め、バッファに対してやりたいことができるようになりました。しかし、MT5では、EVERY SetIndexBufferの後、ターミナルによる最初のOnCalculateの呼び出しを待つ必要があります。この機能はどこにも記載されていません。また、「ビギナー」の定義にも当てはまらないようです。MT5では、この動作はMT4と同じになると考えてよいのでしょうか?つまり、端末自身が最初にOnCalculateを呼び出した後、問題なくSetIndexBufferを呼び 出すことができるのでしょうか? Vladimir Karputov 2016.04.03 18:28 #5530 comp:結論から言うと、あなたは間違っています。端末自身からOnCalculateが呼び出されたときのみ呼び出すことができます。この場合、MT4ではOnCalculateを一度だけ呼び出せばよいので、より柔軟な条件設定が可能です。しかし、MT5では、SetIndexBufferの後、毎回ターミナル自身によるOnCalculateの呼び出しを待つ必要があります。プルーフMT4ではこのインジケータは問題なく動作しますが、MT5ではエラーでクラッシュします。結果的には、MT4ではターミナルによるOnCalculateの最初の呼び出しを待つだけで、SetIndexBufferを使った再定義を含め、バッファに対してやりたいことは何でもできるのです。しかし、MT5では、EVERY SetIndexBufferの後、ターミナルによる最初のOnCalculateの呼び出しを待つ必要があります。この機能はどこにも記載されていません。また、「ビギナー」の定義にも当てはまらないようです。MT5では、この動作はMT4と同じになると考えてよいのでしょうか?つまり、端末自身がOnCalculateを最初に呼び出した後、問題なくSetIndexBufferを呼び 出すことができるのでしょうか? 冗長にならないように - 当然、OnCalculateの呼び出しは、端末自身による呼び出しを意味する、なぜならOnCalculate()関数は、Calculateイベントによってインジケータ値を計算する必要がある場合にのみ、カスタムインジケータで呼び出さ れます。これは通常、インジケータが計算されるシンボルに対して新しいティックが受信されたときに発生します。このインジケータは、このシンボルのどの価格チャートにも添付する必要はありません。 1...546547548549550551552553554555556557558559560...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Close[2]の代わりに2本目のバーのインジケータ値(例えばiRSI(......,2) )を、Close[1]の代わりに1本目のバーのインジケータ値を入力します。そして、urovenはレベルの 値です。
あとは、すでに上記でお伝えしたとおりです。
前提条件
ProfitSellDBLはここで計算されます。
Profit_Upgr = 0.01
Tral_Start__Upgrはint型の外部変数に等しく、5と等価である。
Tral_Size__Upgrも同様に4となります。
TV - 刻み値、=10
SumLotSellDBL = 0.04
読んでみてください。Tral_Start__Upgr, Tral_Size__Upgr とその外部変数が double で定義されている場合の動作について見ました。すなわち、変換やデータの損失がなく、すべてが同じタイプである場合。結果は同じです。何がいけなかったのか?
盲人が聾唖者に話しかける。誰かにテストしてもらいたいなら、他のマシンでコンパイルしてテストできる最小限のコードが必要です。コードなし - 何も話すことはありません。
追加:デバッグを使用する(Debugging)。
-事前設定
-停止位置
-デバッグの開始
-観察可能な表現
-コールスタックビュー
-ステップバイステップデバッギング
-デバッグの停止、再開、終了
-ヒストリーデバッグ
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
comp, 2016.04.03 18:21
ランタイムエラー
4では、問題なく動作しました5ではバツです。これもクアッドに比べたアーキテクチャの限界なのでしょうか?これに関する議論のリンクを教えてください、自分では見つけられませんでした。
ターミナル(手動ではない)OnCalculateの最初の呼び出しの後にのみ、何かが指標バッファに 割り当てられるというのは、正しく理解されていますか?
OnCalculate()が呼ばれた後、インジケータ・バッファにアクセスすることができます。同時に、インジケータ・バッファ自体もグローバル変数領域で宣言して おく必要があります。
探していたものが見つかったと思うのですが、コードの古さが原因でエラーになります
直すのを手伝ってくれ......無理のない範囲で。
と、右側に回すのを手伝ってもらえると助かります。
OnCalculate()が呼び出された後、インジケータ・バッファにアクセスすることができます。
結論から言うと、あなたは間違っています。端末がOnCalculateを呼び出したときのみ適用可能です。この場合、MT4での条件はOnCalculateを一度だけ呼び出せばよいので、より柔軟性があります。また、MT5では、SetIndexBufferの後、毎回ターミナル自身によるOnCalculateの呼び出しを待つ必要があります。プルーフ
MT4ではこのインジケータは問題なく動作しますが、MT5ではエラーでクラッシュします。結果的には、MT4ではターミナルによるOnCalculateの最初の呼び出しを待つだけで、SetIndexBufferを使った再定義を含め、バッファに対してやりたいことができるようになりました。しかし、MT5では、EVERY SetIndexBufferの後、ターミナルによる最初のOnCalculateの呼び出しを待つ必要があります。
この機能はどこにも記載されていません。また、「ビギナー」の定義にも当てはまらないようです。
MT5では、この動作はMT4と同じになると考えてよいのでしょうか?つまり、端末自身が最初にOnCalculateを呼び出した後、問題なくSetIndexBufferを呼び 出すことができるのでしょうか?
結論から言うと、あなたは間違っています。端末自身からOnCalculateが呼び出されたときのみ呼び出すことができます。この場合、MT4ではOnCalculateを一度だけ呼び出せばよいので、より柔軟な条件設定が可能です。しかし、MT5では、SetIndexBufferの後、毎回ターミナル自身によるOnCalculateの呼び出しを待つ必要があります。プルーフ
MT4ではこのインジケータは問題なく動作しますが、MT5ではエラーでクラッシュします。結果的には、MT4ではターミナルによるOnCalculateの最初の呼び出しを待つだけで、SetIndexBufferを使った再定義を含め、バッファに対してやりたいことは何でもできるのです。しかし、MT5では、EVERY SetIndexBufferの後、ターミナルによる最初のOnCalculateの呼び出しを待つ必要があります。
この機能はどこにも記載されていません。また、「ビギナー」の定義にも当てはまらないようです。
MT5では、この動作はMT4と同じになると考えてよいのでしょうか?つまり、端末自身がOnCalculateを最初に呼び出した後、問題なくSetIndexBufferを呼び 出すことができるのでしょうか?