[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 309 1...302303304305306307308309310311312313314315316...432 新しいコメント 削除済み 2013.04.23 12:18 #3081 Zhunko ありがとうございます。 何事もブーメランで返ってくるので、良いこともあります。 Mislaid 2013.04.23 12:41 #3082 artmedia70: その通りです。グローバル変数Reasonは値を取得しますが、deinit()では取得せず、init()で取得することで、init()実行時に前回のdeinitializationの理由を確認し、値に基づいて特定のアクションを実行できるようにします。しかし、思うように動作しない。 その方法を教えていただきました。deinit()では、最後に非初期化を行った理由を調べ、グローバルに宣言された変数に渡します。 init()では、その変数の値をチェックし、最後に非初期化を行った理由を調べます。効果あり!!! PS init()/deinit()は、関数内のステートメントで明示されていない限り、グローバルに宣言された変数の値を変更しないことを理解している人は、どうやら少ないようです。 実は、init()で注文をクローズしない方が良いのです。そこでは、MarketInfo()が期待通りに動作しないことが多い。int DeinitReason = 0; // определяем переменную на глобальном уровне ... int init () { ... if ( DeinitReason == 3) // если смена таймфрейма ... } int deinit() { //---- DeinitReason = UninitializeReason( ); Print("DeinitReason ",DeinitReason); //---- return(0); } Vadim Zhunko 2013.04.23 12:53 #3083 Mislaid: その方法を教えていただきました。deinit()では、最後に非初期化を行った理由を調べ、グローバルに宣言された変数に渡します。 init()では、その変数の値をチェックし、最後に非初期化を行った理由を調べます。効果あり!!! ArtyomがTF M5からの乗り換えで特に問題があることを認識。そこにエラーがあります。そうであるかどうかを確認する必要があります。MT4のバグかもしれませんね。 Viktar Dzemikhau 2013.04.23 13:05 #3084 Zhunko: この機能を使って何をするのかを提案しました。このような機能は、通常、歴史を通じて実行されます。 関数をループで動かすなんて、想像もつかない...。 Рустам 2013.04.23 13:23 #3085 hoz: ループで実行されるような機能は考えられませんが...。 どういたしまして。for(i=OrdersTotal()-1;i>=0;i--){ Print(GetOrderInfo(i,OrderMagic,.....));// вызов пользовательской функции } for(i=0;i<OrdersTotal();i++){/// вызов функции "ордерс тотал" на каждой итерации } Mislaid 2013.04.23 13:26 #3086 Zhunko: アルテムはM5 TFからの切り替えに問題があると実感しました。そこにエラーがあります。そうなのかどうか、確認したい。MT4のバグかもしれません。 いいえ、バグではありません。ここで、EAを紹介します。タイムフレームをM1からH1に変更しました。//+------------------------------------------------------------------+ //| 111.mq4 | //| Copyright © 2006, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" int DeinitReason = 0; // определяем переменную на глобальном уровне int init () { } int deinit() { //---- DeinitReason = UninitializeReason( ); Print("DeinitReason ",DeinitReason); //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- //---- return(0); } //+------------------------------------------------------------------+ 19:20:02 111 CADJPY,M15:初期化されました。 19:20:09 111 CADJPY,M15: DeinitReason 3 19:20:09 111 CADJPY,M15: 初期化されました。 19:20:09 111 CADJPY,M15: uninit reason 3. 19:20:09 Supertrend[1] CADJPY,M15:初期化されました。 19:20:09 Supertrend[1] CADJPY,M15: uninit reason 3. 19:20:09 HLC CADJPY,M15: 初期化されました。 19:20:09 HLC CADJPY,M15: uninit reason 3. 19:20:09 AMA optimized1 CADJPY,M15: 初期化されました。 19:20:09 AMA optimized1 CADJPY,M15: uninit reason 3. 19:20:09 AMA optimized1 CADJPY,M15: 初期化されました。 19:20:09 AMA optimized1 CADJPY,M15: uninit reason 3. 19:20:09 Supertrend[1] CADJPY,H1:初期化されました。 19:20:09 HLC CADJPY,H1:初期化されました。 19:20:09 AMA optimized1 CADJPY,H1: 初期化されました。 19:20:09 AMA optimized1 CADJPY,H1: 初期化されました。 19:20:09 111 CADJPY,H1:初期化されました。 Vadim Zhunko 2013.04.23 13:37 #3087 Mislaid:いいえ、バグではありません。ここで、EAを紹介します。タイムフレームをM1からH1に変更しました。それはいい!また、非初期化には いろいろと理由が あります。ミスリード: 実は、init()で注文をクローズしない方が良いのです。そこでは、MarketInfo()が期待通りに動作しないことがよくあります。 はい、できません。ヘルプに書いてあります。 hoz: 関数がループして実行されるなんて、想像もつかない...。 日常的なことです。 Mislaid 2013.04.23 13:47 #3088 Zhunko:それはいい!私も、非初期化の理由にはいろいろと縛りがありますから。 はい、できません。ヘルプに書いてあります。よくあることなんです。 ここで、最後のバリエーションを確認します。init()/deinit() がprint() と仲が悪いことがあるため、前のものはあまりうまくいきませんでした。//+------------------------------------------------------------------+ //| 111.mq4 | //| Copyright © 2006, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" int DeinitReason = 0; // определяем переменную на глобальном уровне bool firststart = true; int init () { } int deinit() { //---- DeinitReason = UninitializeReason( ); firststart = true; //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { if ( firststart ) { Print( "DeinitReason ", DeinitReason, " ", Period( ) ); firststart = false; } //---- //---- return(0); } //+------------------------------------------------------------------+ Viktar Dzemikhau 2013.04.23 20:50 #3089 関数をどう書けばいいんだろう、と。N本のローソク足 がある方向にロールバックしたときに、その本数を計算するというものです。BUT.そのためにはいくつかの条件があり、正確には時間をかけてリストアップしていくことになる。例えばトレンドが下向きだとすると......プルバックは上昇する。5本のローソク足が上昇し、それぞれのローソク足が強気で、例えばそれぞれのローソク足のサイズがi_sizeOfCurrBarより 大きく、その他の条件があれば、継続して強気のバーの 数を出力して、関数から何らかの結果を返したい。どのような書き方をすればいいのでしょうか?今のところ、書き始めて、棒グラフでループさせて、何とか履歴の深さで、固定された棒グラフの数ではなく、棒グラフで、条件によって興味のあるパラメータで表示を制限した方がいいということは理解しています。これが、私が持っている、手に入れたものです。int LastCandlesType() { bool up, // Свеча направлена вверх dn; // Свеча направлена вниз int cnt; // Счётчик идущих друг за другом бычьих свечей for (int i=Bars-1; i>=Bars-6; i--) { if ((Close[i] - Open[i]) <= i_sizeOfCurrBar * Point) // Пропускаем все бары, размера меньше заданного внешним параметром. continue; if (Close[i] > Open[i]) // up = true; cnt++; } if (cnt == 5) return (BULL_CANDLES); }現時点では、最後から2番目のバーからインデックス6のバーまで、つまり5本のバーを連続させているだけです。しかし、私はExpert Advisorに、強気なバーだけを検索させ、すべてのバーを連続させないようにしたいのです。どうすれば適切に実装できるのか?サイズによるフィルタリングは、なんとなく正しくできていますね。そして、すべてが書き込まれた後、カウンタはnht,etvsvbパラメータで連続したバーの数を計算し、そのようなバーが十分にあれば、関数の何らかの値が返されることになります。 Artyom Trishkin 2013.04.23 22:31 #3090 Mislaid: その方法を教えていただきました。deinit()では、最後に非初期化を行った理由を調べ、グローバルに宣言された変数に渡します。 init()では、その変数の値をチェックし、最後に非初期化を行った理由を調べます。効果あり!!! PS init()/deinit()は、関数内のステートメントで明示されていない限り、グローバルに宣言された変数の値を変更しないことを理解している人は、どうやら少ないようです。 実は、init()で注文をクローズしない方が良いのです。そこでは、MarketInfo()が期待通りに動作しないことがよくあります。 また、init()のどこでポジションをクローズしているのでしょうか?削除依頼について1つ質問しましたが、どこで削除するのか......そんなことは言ってませんし、ましてや聞いてませんよ。なぜそう思うのですか? 1...302303304305306307308309310311312313314315316...432 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
その通りです。グローバル変数Reasonは値を取得しますが、deinit()では取得せず、init()で取得することで、init()実行時に前回のdeinitializationの理由を確認し、値に基づいて特定のアクションを実行できるようにします。しかし、思うように動作しない。
その方法を教えていただきました。deinit()では、最後に非初期化を行った理由を調べ、グローバルに宣言された変数に渡します。 init()では、その変数の値をチェックし、最後に非初期化を行った理由を調べます。効果あり!!!
PS init()/deinit()は、関数内のステートメントで明示されていない限り、グローバルに宣言された変数の値を変更しないことを理解している人は、どうやら少ないようです。
実は、init()で注文をクローズしない方が良いのです。そこでは、MarketInfo()が期待通りに動作しないことが多い。
その方法を教えていただきました。deinit()では、最後に非初期化を行った理由を調べ、グローバルに宣言された変数に渡します。 init()では、その変数の値をチェックし、最後に非初期化を行った理由を調べます。効果あり!!!
この機能を使って何をするのかを提案しました。このような機能は、通常、歴史を通じて実行されます。
関数をループで動かすなんて、想像もつかない...。
ループで実行されるような機能は考えられませんが...。
どういたしまして。
アルテムはM5 TFからの切り替えに問題があると実感しました。そこにエラーがあります。そうなのかどうか、確認したい。MT4のバグかもしれません。
いいえ、バグではありません。ここで、EAを紹介します。タイムフレームをM1からH1に変更しました。
19:20:02 111 CADJPY,M15:初期化されました。19:20:09 111 CADJPY,M15: DeinitReason 3
19:20:09 111 CADJPY,M15: 初期化されました。
19:20:09 111 CADJPY,M15: uninit reason 3.
19:20:09 Supertrend[1] CADJPY,M15:初期化されました。
19:20:09 Supertrend[1] CADJPY,M15: uninit reason 3.
19:20:09 HLC CADJPY,M15: 初期化されました。
19:20:09 HLC CADJPY,M15: uninit reason 3.
19:20:09 AMA optimized1 CADJPY,M15: 初期化されました。
19:20:09 AMA optimized1 CADJPY,M15: uninit reason 3.
19:20:09 AMA optimized1 CADJPY,M15: 初期化されました。
19:20:09 AMA optimized1 CADJPY,M15: uninit reason 3.
19:20:09 Supertrend[1] CADJPY,H1:初期化されました。
19:20:09 HLC CADJPY,H1:初期化されました。
19:20:09 AMA optimized1 CADJPY,H1: 初期化されました。
19:20:09 AMA optimized1 CADJPY,H1: 初期化されました。
19:20:09 111 CADJPY,H1:初期化されました。
いいえ、バグではありません。ここで、EAを紹介します。タイムフレームをM1からH1に変更しました。
それはいい!また、非初期化には いろいろと理由が あります。
実は、init()で注文をクローズしない方が良いのです。そこでは、MarketInfo()が期待通りに動作しないことがよくあります。
関数がループして実行されるなんて、想像もつかない...。
それはいい!私も、非初期化の理由にはいろいろと縛りがありますから。
はい、できません。ヘルプに書いてあります。よくあることなんです。ここで、最後のバリエーションを確認します。init()/deinit() がprint() と仲が悪いことがあるため、前のものはあまりうまくいきませんでした。
関数をどう書けばいいんだろう、と。N本のローソク足 がある方向にロールバックしたときに、その本数を計算するというものです。BUT.そのためにはいくつかの条件があり、正確には時間をかけてリストアップしていくことになる。
例えばトレンドが下向きだとすると......プルバックは上昇する。5本のローソク足が上昇し、それぞれのローソク足が強気で、例えばそれぞれのローソク足のサイズがi_sizeOfCurrBarより 大きく、その他の条件があれば、継続して強気のバーの 数を出力して、関数から何らかの結果を返したい。
どのような書き方をすればいいのでしょうか?今のところ、書き始めて、棒グラフでループさせて、何とか履歴の深さで、固定された棒グラフの数ではなく、棒グラフで、条件によって興味のあるパラメータで表示を制限した方がいいということは理解しています。
これが、私が持っている、手に入れたものです。
現時点では、最後から2番目のバーからインデックス6のバーまで、つまり5本のバーを連続させているだけです。しかし、私はExpert Advisorに、強気なバーだけを検索させ、すべてのバーを連続させないようにしたいのです。どうすれば適切に実装できるのか?
サイズによるフィルタリングは、なんとなく正しくできていますね。
そして、すべてが書き込まれた後、カウンタはnht,etvsvbパラメータで連続したバーの数を計算し、そのようなバーが十分にあれば、関数の何らかの値が返されることになります。
その方法を教えていただきました。deinit()では、最後に非初期化を行った理由を調べ、グローバルに宣言された変数に渡します。 init()では、その変数の値をチェックし、最後に非初期化を行った理由を調べます。効果あり!!!
PS init()/deinit()は、関数内のステートメントで明示されていない限り、グローバルに宣言された変数の値を変更しないことを理解している人は、どうやら少ないようです。
実は、init()で注文をクローズしない方が良いのです。そこでは、MarketInfo()が期待通りに動作しないことがよくあります。