MetaTrader 4 Build 529 ベータ版リリース、新コンパイラー搭載 - ページ 18 1...111213141516171819202122232425...161 新しいコメント Sergey Dzyublik 2013.11.06 11:38 #171 mr_Johns: MQL4ハンドブック(エディター内にあるもの)もそれに合わせて更新されたのでしょうか? はい、更新のお願いで。 MQL4のハンドブックは ほぼ5をベースにしており、現時点ではコンパイラの実情に 対応していません。 Andrey Khatimlianskii 2013.11.06 11:42 #172 ALXIMIKS: 間違っていたら訂正してください。 あるインジケータでライブラリ関数を使用しています。この関数は、インジケータ配列の計算に関与するいくつかの静的 変数を宣言しています。 指標計算を修正するために指標パラメータを変更したい場合(静的変数に依存する)。 再初期化を担当するライブラリ関数にフラグを渡す (スタティック変数を持つ各関数の入力パラメータを拡張する必要がある) 本体でスタティック変数をゼロにし、計算が完了する前にフラグを外すことを忘れないようにしてください。 静的変数に宣言時に設定するパラメータがあれば、再初期化時にこれらの変数がゼロにリセットされるかどうかを決定することができ、より簡単になります。 ローカル静的変数の代わりにグローバル変 数を作成し(関数の外側)、最初の呼び出しで初期化する。 Vladimir Gomonov 2013.11.06 11:44 #173 ALXIMIKS: 静的変数に宣言時に設定するパラメータがあり、再初期化時にその変数の値をリセットするかどうかを担当すれば、よりシンプルになります。 ResetStaticVars()のような特別な関数を作れば、さらに簡単です。 // ちなみに、そんなに簡単なことではありません。私ならしない。単純にデータセグメント全体をゼロにすることと、すべてのユーザーの初期値を正しく割り当てることは別のことです。 首が痛くなるけど。 実は(パラダイムとして)プログラムのライフサイクル中に値を保存することは、むしろ便利なことなのです。 ただ、ここには後方互換性の問題があるので......。 Mladen Rakic 2013.11.06 11:45 #174 私はこのフォーラムのロシア語圏の部分であることを知っているが、私はロシア語を話すのが苦手なので、(私はそれを読むことができるにもかかわらず)誰もここにこれを投稿気にしないことを望む(英語パートは、これらの問題に関する限り完全に非アクティブと思われるので、私は誰かがこの問題について投稿したのを見ていなかったので)。 新しいメタトレーダーには、外部文字列パラメーターに関する重大な問題が1つあります。最初は正しい値を持っていますが、タイムフレームやシンボルが 変更されるとすぐに文字列パラメータの内容が失われます。ここでは、何が起こっているのかを正確に示す簡単な例を示します。この問題は、そのようなインジケータがiCustom()呼び出しを通じて使用される場合にも発生し、そのようなインジケータはEAまたは他のコードから使用できなくなります。 #property indicator_chart_window extern string TestString = "whatever value that we want initially set"; int OnInit() { return(0); } int deinit() { return(0); } int start() { Comment(TestString); return(0); } Vladimir Gomonov 2013.11.06 11:46 #175 ALXIMIKS: アップデート要求ではい。MQL4のハンドブックは ほぼ5をベースにしており、 現時点ではコンパイラの実情に対応していません。 もしかしたら、近い将来の何かを残しているかもしれませんね。 期待しています。 Renat Fatkhullin 2013.11.06 13:37 #176 mr_Johns: MQL4ハンドブック(エディター内にあるもの)もそれに合わせて更新されたのでしょうか? はい、ずいぶん前に更新され、日々積極的に補填されています。 Vladimir Pastushak 2013.11.06 17:41 #177 なぜこのようなデザインが必要なのかがわからない #property icon "\\Files\\button.ico" Andrey Khatimlianskii 2013.11.06 18:00 #178 VOLDEMAR: なぜこのようなデザインが必要なのかがわからない EAを起動すると、「一般」タブに絵が表示されます。 Vladimir Pastushak 2013.11.06 18:26 #179 むだづかい Алексей Тарабанов 2013.11.06 19:00 #180 mladen:私はこのフォーラムのロシア語圏の部分であることを知っているが、私はロシア語を話すのが苦手なので、(私はそれを読むことができるにもかかわらず)誰もここにこれを投稿気にしないことを望む(英語パートは、これらの問題に関する限り完全に非アクティブと思われるので、私は誰かがこの問題について投稿したのを見ていなかったので)。新しいメタトレーダーには、外部文字列パラメーターに関する重大な問題が1つあります。最初は正しい値を持っていますが、タイムフレームやシンボルが変更されるとすぐに文字列パラメータの内容が失われます。ここでは、何が起こっているのかを正確に示す簡単な例を紹介します。この問題は、そのようなインジケータがiCustom()呼び出しを通じて使用される場合にも発生し、そのようなインジケータはEAまたは他のコードから使用できなくなります。ムラデンさんは読解力があるので、ロシア語で答えるのが楽ですね。 この問題に対する私の解決策を紹介します。私のinit()コードには、これらのグローバル変数を 再初期化するReInit()関数が含まれており、タイムフレームやシンボルが変更されたときにその値が復元されるようになっています。 //----------------------------------------------------------------------------- int init(){ int Error; if( МинНаклонТренда<Zero ) МинНаклонТренда=0; if( МинНаклонТренда-МаксНаклонТренда>Zero ) МаксНаклонТренда=МинНаклонТренда; if( БарОкончания<1 ) БарОкончания=1; if( МинБазовыйПериод<1 ) МинБазовыйПериод=1; if( МаксБазовыйПериод<МинБазовыйПериод ) МаксБазовыйПериод=МинБазовыйПериод; if( БарНачала<МинБазовыйПериод+БарОкончания ) БарНачала=МинБазовыйПериод+БарОкончания; if( БарНачала>Bars-1 ){ if( Bars>МинБазовыйПериод+БарОкончания ) БарНачала=Bars-1; else Alert("Неразрешимая ошибка: история("+Bars+")<=активация("+МинБазовыйПериод +")+окончание("+БарОкончания+")"); } if( ТолщинаТрендовой<1 ) ТолщинаТрендовой=1; if( ТолщинаТрендовой>5 ) ТолщинаТрендовой=5; if( РазмерИндикатораТиков<1 ) РазмерИндикатораТиков=1; if( РазмерИндикатораТиков>5 ) РазмерИндикатораТиков=5; if( СдвигИндикатораТиков<3 ) СдвигИндикатораТиков=3; if( СдвигИндикатораТиков>100 ) СдвигИндикатораТиков=100; if( ПоказыватьВсе ) Visibility=0; else Visibility=EMPTY; LastBar =БарОкончания; ЦветЛиний[0]=ЦветПоддержки; ЦветЛиний[1]=ЦветСопротивления; ЦветХорды[0]=ЦветВосходящейХорды; ЦветХорды[1]=ЦветНисходящейХорды; Цвет123[0] =Цвет123 ВТ; Цвет123[1] =Цвет123 НТ; NewTime =0; ReInit(); // Повторная инициализация ClearScreen(); // Очистить экран Error=fVLine("StartLine","Старт",0,БарНачала,0,0,0,0,0,ЦветВертикалей); Error=fVLine("DeadLine","Пуск",0,БарОкончания,0,0,0,0,0,ЦветВертикалей); DeadLine=TimeCurrent(); if( СтатическийРежим ){ if( РежимОтладки ) РежимРаботы=" Отладка "; else РежимРаботы=" "; РежимРаботы=РежимРаботы+"Статический режим Пауза "+ПериодИмитацииТиков+" мс"; МоделироватьДинамику=false; //РежимОтладки=false; while( true ){ // Бесконечный цикл ReInit(); // Повторная инициализация start(); // Имитация тика Sleep(ПериодИмитацииТиков); // Не работает в индикаторах } } else { if( МоделироватьДинамику ){ РежимРаботы=" Режим имитации динамики Размерность "+DoubleToStr(0.5*БарНачала*БарНачала,0); Print(" "+Version+РежимРаботы+" История: "+(БарНачала)+" баров с "+TimeToStr(Time[БарНачала])); LastBar=БарНачала; while( LastBar>БарОкончания ){ // Перебор всех баров истории LastBar--; start(); // Имитация тика } МоделироватьДинамику=false; Print(" Режим имитации динамики отключен!"); } } if( РежимОтладки ) РежимРаботы=" Отладка "; else РежимРаботы=" "; РежимРаботы=РежимРаботы+"Динамический режим"; Print(" "+Version+РежимРаботы+" История: "+(БарНачала)+" баров с "+TimeToStr(Time[БарНачала])); if( !ПечататьПредупреждения ) Print("Печать предупреждений запрещена!"); if( РежимОтладки ) start(); // Имитация тика return(0); } //----------------------------------------------------------------------------- // Повторная инициализация глобальных переменных и массивов void ReInit(){ StartTime[0] =Time[БарНачала]; StartTime[1] =Time[БарНачала]; Groups[0] =0; Groups[1] =0; OldMG[0] =0; OldMG[1] =0; MainGroup[0] =0; MainGroup[1] =0; QualityMax[0] =0; QualityMax[1] =0; OldStopLine =0; return; } //----------------------------------------------------------------------------- 1...111213141516171819202122232425...161 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
MQL4ハンドブック(エディター内にあるもの)もそれに合わせて更新されたのでしょうか?
はい、更新のお願いで。 MQL4のハンドブックは ほぼ5をベースにしており、現時点ではコンパイラの実情に 対応していません。
間違っていたら訂正してください。
あるインジケータでライブラリ関数を使用しています。この関数は、インジケータ配列の計算に関与するいくつかの静的 変数を宣言しています。
指標計算を修正するために指標パラメータを変更したい場合(静的変数に依存する)。
再初期化を担当するライブラリ関数にフラグを渡す (スタティック変数を持つ各関数の入力パラメータを拡張する必要がある)
本体でスタティック変数をゼロにし、計算が完了する前にフラグを外すことを忘れないようにしてください。
静的変数に宣言時に設定するパラメータがあれば、再初期化時にこれらの変数がゼロにリセットされるかどうかを決定することができ、より簡単になります。
静的変数に宣言時に設定するパラメータがあり、再初期化時にその変数の値をリセットするかどうかを担当すれば、よりシンプルになります。
ResetStaticVars()のような特別な関数を作れば、さらに簡単です。
// ちなみに、そんなに簡単なことではありません。私ならしない。単純にデータセグメント全体をゼロにすることと、すべてのユーザーの初期値を正しく割り当てることは別のことです。 首が痛くなるけど。
実は(パラダイムとして)プログラムのライフサイクル中に値を保存することは、むしろ便利なことなのです。 ただ、ここには後方互換性の問題があるので......。
私はこのフォーラムのロシア語圏の部分であることを知っているが、私はロシア語を話すのが苦手なので、(私はそれを読むことができるにもかかわらず)誰もここにこれを投稿気にしないことを望む(英語パートは、これらの問題に関する限り完全に非アクティブと思われるので、私は誰かがこの問題について投稿したのを見ていなかったので)。
新しいメタトレーダーには、外部文字列パラメーターに関する重大な問題が1つあります。最初は正しい値を持っていますが、タイムフレームやシンボルが 変更されるとすぐに文字列パラメータの内容が失われます。ここでは、何が起こっているのかを正確に示す簡単な例を示します。この問題は、そのようなインジケータがiCustom()呼び出しを通じて使用される場合にも発生し、そのようなインジケータはEAまたは他のコードから使用できなくなります。
アップデート要求ではい。MQL4のハンドブックは ほぼ5をベースにしており、 現時点ではコンパイラの実情に対応していません。
もしかしたら、近い将来の何かを残しているかもしれませんね。 期待しています。
MQL4ハンドブック(エディター内にあるもの)もそれに合わせて更新されたのでしょうか?
なぜこのようなデザインが必要なのかがわからない
#property icon "\\Files\\button.ico"
なぜこのようなデザインが必要なのかがわからない
私はこのフォーラムのロシア語圏の部分であることを知っているが、私はロシア語を話すのが苦手なので、(私はそれを読むことができるにもかかわらず)誰もここにこれを投稿気にしないことを望む(英語パートは、これらの問題に関する限り完全に非アクティブと思われるので、私は誰かがこの問題について投稿したのを見ていなかったので)。
新しいメタトレーダーには、外部文字列パラメーターに関する重大な問題が1つあります。最初は正しい値を持っていますが、タイムフレームやシンボルが変更されるとすぐに文字列パラメータの内容が失われます。ここでは、何が起こっているのかを正確に示す簡単な例を紹介します。この問題は、そのようなインジケータがiCustom()呼び出しを通じて使用される場合にも発生し、そのようなインジケータはEAまたは他のコードから使用できなくなります。
ムラデンさんは読解力があるので、ロシア語で答えるのが楽ですね。
この問題に対する私の解決策を紹介します。私のinit()コードには、これらのグローバル変数を 再初期化するReInit()関数が含まれており、タイムフレームやシンボルが変更されたときにその値が復元されるようになっています。