MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 502 1...495496497498499500501502503504505506507508509...1953 新しいコメント Вадим Мотеюнас 2018.03.24 22:05 #5011 Vitaly Muzichenko:この関数は、時間的に新しいもの、つまり最後のものを選びます。 次に、選択したものがあるので、それを関数iBarShift(sym, tf,oot ,true) に代入します。 この関数は、時間ごとのバー番号を返します。以上です。 残念ながら確認はできませんが、私が使用したところ、I.Kimさんがここで公開されているすべての機能と同様に、完全に動作しました。 また、注文時にチケットが割り当てられ、機能で連番が選択される場合は大丈夫でしょうか? Konstantin Nikitin 2018.03.24 22:12 #5012 Вадим Мотеюнас:if( iOpen[0] != time_open )'iOpen' - 未宣言の識別子 であることを示すエラーを書き込むちょっと間違った、思考の方向が違うことを書いてしまいました。iOpen[0]を Open[0]に変更します。 修正しました。でも、簡単に言うとね。バーを開くと、バーの開店時刻を覚えていて、このバーにはすでに注文が入っていない。 Вадим Мотеюнас 2018.03.24 22:18 #5013 また、関数の説明には次のように書かれています。 考慮すべき位置の選択は、外部パラメータで指定する。sy- 市場商品の名前。このパラメータを設定すると、指定した楽器の位置のみを考慮するようになります。デフォルト値-NULLは、現在の市場商品を意味する。tf- タイムフレーム.デフォルトの値0 は、現在のタイムフレームを意味する。op-貿易業務、ポジションタイプ。有効な値:OP_BUY、OP_SELL、または-1。初期値-1 は任意の位置を意味する。mn- 位置の識別子,MagicNumber.デフォルト値-1 は、任意の識別子を意味する。これらの値は、最初の特殊関数の前に宣言されるべきです。つまり、NumberOfBarOpenLastPos() 関数自体の記述に含まれているという事実だけでは十分ではありませんか? 「KimIVの便利な機能」のみ。 KimIVの便利な機能 そして、それを「漫画」にしよう(多通貨化) Vitaly Muzichenko 2018.03.24 22:24 #5014 Вадим Мотеюнас:また、関数の説明には次のように書かれています。 考慮する位置の選択は、外部パラメータで設定します。sy- 市場商品の名前。このパラメータを設定すると、指定した楽器の位置のみを考慮するようになります。デフォルト値-NULLは、現在の市場商品を意味する。tf- タイムフレーム.デフォルトの値0 は、現在のタイムフレームを意味する。op-貿易業務、ポジションタイプ。有効な値:OP_BUY、OP_SELL、または-1。初期値-1 は任意の位置を意味する。mn- 位置の識別子,MagicNumber.デフォルト値-1 は、任意の識別子を意味する。外部パラメータで? 最初の特殊関数の前に宣言する必要がありますか? つまり、NumberOfBarOpenLastPos() 関数自体の記述にあるのでは不十分なのでしょうか?十分です。外部パラメータに必要な値を入力します:MagicNumber、どのポジションを探すか、もしBUY(0)とSELL(1)が必要なら-1と書いてください。 Вадим Мотеюнас 2018.03.24 22:26 #5015 Konstantin Nikitin:ちょっと間違った、思考の方向が違うことを書いてしまいました。iOpen[0]を Open[0]に変更します。 修正しました。でも、簡単に言うとね。バーを開くと、バーを開いた時刻を記憶して、このバーでは注文を開けないようにします。 多くの注文が開かれ、NumberOfBarOpenLastPosが-1を返すので、非注文が開く前に if(NumberOfBarOpenLastPos(Symbol(),0,-1,-1)>0) という条件が満たされたように見える。 Vitaly Muzichenko 2018.03.24 22:39 #5016 Вадим Мотеюнас:多くの注文が開かれ、非注文が開かれる前に if(NumberOfBarOpenLastPos(Symbol(),0,-1,-1)>0) という条件が満たされると、NumberOfBarOpenLastPos は -1 を返すようです。注文を探すのであれば、ポジションだけでなく、注文で検索できる機能を備えたフルバージョンの機能を使用する必要があります。 int NumberOfBarOpenLastPos(string sym="",int tf=0,int op=-1,int mn=-1) { datetime oot=0; // Инициализируем нулём int i,k=OrdersTotal(); if(sym=="") sym=Symbol(); for(i=0; i<k; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==sym) { if(OrderType()<6) // Ищем и по ордерам { if(op<0 || OrderType()==op) { if(mn<0 || OrderMagicNumber()==mn) { if(oot<OrderOpenTime()) oot=OrderOpenTime(); // Ищем последнее } } } } } } return(iBarShift(sym, tf, oot, true)); } Вадим Мотеюнас 2018.03.24 22:39 #5017 Vitaly Muzichenko:これで十分です。外部パラメータに必要な値を入力します:Majik、どのポジションを探すか、多分BUYのみ、BUY(0)とSELL(1)が必要なら -1 と書きます。テスターで起動すると、未決済の注文がないので、もしかしたらそのせいで-1が返され、if(NumberOfBarOpenLastPos(Symbol(),0,-1,-1)>0という条件が成立しないのではないでしょうか。 Vitaly Muzichenko 2018.03.24 22:44 #5018 Вадим Мотеюнас:テスターで起動すると、未決済の注文がないため、-1が返され、そのため if(NumberOfBarOpenLastPos(Symbol(),0,-1,-1)>0) の条件が満たされないのではないでしょうか?これから確認します。 Вадим Мотеюнас 2018.03.24 22:45 #5019 Vitaly Muzichenko:注文を探すのであれば、ポジションだけでなく、注文で検索できる機能をフルバージョンで使用する必要があります。 が返ってくる Vitaly Muzichenko 2018.03.24 22:59 #5020 Вадим Мотеюнас:が返ってくる完璧に動作します! スクリーンショットにあるように、2つのポジションから最後の1つを選択しました。 コードを確認する。 void OnTick() { ... Comment( NumberOfBarOpenLastPos("",0,-1,-1) ); ... } int NumberOfBarOpenLastPos(string sym="",int tf=0,int op=-1,int mn=-1) { datetime oot=0; // Инициализируем нулём int i,k=OrdersTotal(); if(sym=="") sym=Symbol(); for(i=0; i<k; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==sym) { if(OrderType()<6) // Ищем и по ордерам { if(op<0 || OrderType()==op) { if(mn<0 || OrderMagicNumber()==mn) { if(oot<OrderOpenTime()) oot=OrderOpenTime(); // Ищем последнее } } } } } } return(iBarShift(sym, tf, oot, true)); } 1...495496497498499500501502503504505506507508509...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
この関数は、時間的に新しいもの、つまり最後のものを選びます。
次に、選択したものがあるので、それを関数iBarShift(sym, tf,oot ,true) に代入します。
この関数は、時間ごとのバー番号を返します。以上です。
残念ながら確認はできませんが、私が使用したところ、I.Kimさんがここで公開されているすべての機能と同様に、完全に動作しました。
if( iOpen[0] != time_open )'iOpen' - 未宣言の識別子 であることを示すエラーを書き込む
ちょっと間違った、思考の方向が違うことを書いてしまいました。iOpen[0]を Open[0]に変更します。 修正しました。でも、簡単に言うとね。バーを開くと、バーの開店時刻を覚えていて、このバーにはすでに注文が入っていない。
また、関数の説明には次のように書かれています。
考慮すべき位置の選択は、外部パラメータで指定する。
また、関数の説明には次のように書かれています。
考慮する位置の選択は、外部パラメータで設定します。
十分です。外部パラメータに必要な値を入力します:MagicNumber、どのポジションを探すか、もしBUY(0)とSELL(1)が必要なら-1と書いてください。
ちょっと間違った、思考の方向が違うことを書いてしまいました。iOpen[0]を Open[0]に変更します。 修正しました。でも、簡単に言うとね。バーを開くと、バーを開いた時刻を記憶して、このバーでは注文を開けないようにします。
多くの注文が開かれ、NumberOfBarOpenLastPosが-1を返すので、非注文が開く前に if(NumberOfBarOpenLastPos(Symbol(),0,-1,-1)>0) という条件が満たされたように見える。
多くの注文が開かれ、非注文が開かれる前に if(NumberOfBarOpenLastPos(Symbol(),0,-1,-1)>0) という条件が満たされると、NumberOfBarOpenLastPos は -1 を返すようです。
注文を探すのであれば、ポジションだけでなく、注文で検索できる機能を備えたフルバージョンの機能を使用する必要があります。
これで十分です。外部パラメータに必要な値を入力します:Majik、どのポジションを探すか、多分BUYのみ、BUY(0)とSELL(1)が必要なら -1 と書きます。
テスターで起動すると、未決済の注文がないので、もしかしたらそのせいで-1が返され、if(NumberOfBarOpenLastPos(Symbol(),0,-1,-1)>0という条件が成立しないのではないでしょうか。
テスターで起動すると、未決済の注文がないため、-1が返され、そのため if(NumberOfBarOpenLastPos(Symbol(),0,-1,-1)>0) の条件が満たされないのではないでしょうか?
これから確認します。
注文を探すのであれば、ポジションだけでなく、注文で検索できる機能をフルバージョンで使用する必要があります。
が返ってくる
が返ってくる
完璧に動作します!
スクリーンショットにあるように、2つのポジションから最後の1つを選択しました。
コードを確認する。