[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 227 1...220221222223224225226227228229230231232233234...652 新しいコメント Всеволод 2011.09.30 20:15 #2261 Neo333: こんにちは、ここで問題です:EAは保留中の指値注文を設定し、その後価格が移動し、注文は成行注文になります。全てうまくいくのですが、いくつかのオーダーで全く不明な不具合があります。全てのオーダーはある固定定数「K」を介して設定されているので、それらの間の距離は常に定数(Rn+1 = Rn + 「K」)であるべきなのです。しかし、注文は出ているし、価格も表示されているし、すべてチェックしているのに、前の注文から次の注文までの距離が「K」にならない。 価格との演算結果をチェックすると、つまり、引き算だけして結果をチェックすると「K」になるが、論理比較==はまだ偽となり、その価格で常に注文を出しているEAが、そこに注文はないと「思って」いることにつながる。長かったらごめんなさい、もっと詳しく説明したかったんです。正直、本当にどうしたらいいのかわからない :( で比較する場合、NormalizeDouble を使用 すると、一般に MathAbs(Price1-Price2)<delta の方が優れています。 Всеволод 2011.09.30 21:17 #2262 VladimirR: ありがとうございました。 しかし、この 2011.09.30 21:26:49 TestGenerator: unmatched data error (volume limit 13634 at 2011.07.19 20:00 exceeded) がある。 私が理解する限り、このメッセージはExpert Advisorには関係ないのですが、それでもどう理解したらいいのでしょうか? 時間軸の話に矛盾がある。https://www.mql5.com/ru/forum/108760 Artyom Trishkin 2011.10.01 02:00 #2263 sergeev: 機能修正にご協力ください 73 Eugene1 2011.09.30 16:19 最後の注文の終値を(現在の時刻に最も近い時刻で)決定する関数を書こうとしているのですが こんな風に書いています。 しかし 為さる uble PriceCloseLastPos(string smb = "", int cmd = -1, int mMin = -1, int mMax = -1) { . int ticketDateTime=0; int orderTicket=-1; double closePrice = 0; int ordTotal = OrdersTotal(); if (smb == "0") smb = Symbol(); for (int i = 0; i < ordTotal; i++) {. if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){ if (OrderSymbol() == smb || smb == ""){ if (OrderType() == OP_BUY || OrderType() == OP_SELL) {。 if (cmd < OP_BUY || OrderType() == cmd){ if (mMin < 0 || (OrderMagicNumber() >= mMin && OrderMagicNumber() <= mMax)){ if (ticketDateTime < OrderCloseTime()){ ticketDateTime = OrderCloseTime(); orderTicket = OrderTicket(); closePrice = OrderClosePrice()。 } } } } } } } if(orderTicket > -1) OrderSelect(orderTicket, SELECT_BY_TICKET, MODE_HISTORY ); return(closePrice); } しかし、なぜかこの関数は、テスターで開いた一番最初の注文のデータを返します。 実はこれが私の中間目標なんです。部分注文の最終終値を出す関数を書きたかったのですが(全ロットの数量分ではありません)、どうすればいいのか悩むところです......。 int ordTotal = OrdersTotal(); その代わり... int ordTotal = OrdersHistoryTotal(); ...次のページ ... if(orderTicket > -1) OrderSelect(orderTicket, SELECT_BY_TICKET, MODE_HISTORY ); ここで、あなたの知識はあまりないことがわかります。チケットでオーダーを選択する場合、 pool パラメータは無視されます。つまり、MODE_HISTORYと書いても意味がない。このパラメータは、インデックスによる選択のみを参照する。 チケットで注文が選択されている場合、クローズドオーダーのリストから選択されていることを確認するために、クローズドタイムを確認する必要があります。0より大きい値でなければなりません。このパラメータが0より大きいのはクローズドポジションだけです。 rosman 2011.10.01 19:21 #2264 MT4取引端末の 5分足では、履歴は表示されません。これは解決できるのでしょうか? rosman 2011.10.01 21:01 #2265 rosman: MT4取引端末の5分足では、履歴は表示されません。これは解決できるのでしょうか? くだらない質問で申し訳ないのですが。2010年11月以前の履歴が表示されないという意味です :) Vadim Zhunko 2011.10.01 23:15 #2266 rosman: ぶしつけな質問で申し訳ないのですが。2010年11月以前の履歴が表示されないという意味です :) だから、ないんです。また、明確にすることができます。MT4の設定で、チャート上のバーを増やしてみてください。 履歴の長いものをダウンロードしたり、購入したりすることで解決します。 rosman 2011.10.02 08:32 #2267 Zhunko: それなら彼女は存在しないことになる。また、明確にすることができます。MT4の設定で、チャート上のバーを増やしてみてください。 これは、より長い履歴をダウンロードしたり、購入したりすることで解決できます。 サービス>設定>チャートタブ>ウィンドウ内の最大バー数が65000本だった→100000本以上に変更、それでも最新は2010年11月のみです。この商品と時間枠の相場アーカイブは、1999年11月まで完全にロードされています。 Vadim Zhunko 2011.10.02 09:24 #2268 ストーリーに登場するバーの最大 数は?もしかしたら、すでにトリミングされているのかもしれませんね。 rosman 2011.10.02 09:37 #2269 Zhunko: ストーリーに登場するバーの最大数は?もしかしたら、すでにトリミングされているのかもしれませんね。 10,000,000の価値がある。 Vadim Zhunko 2011.10.02 09:47 #2270 アーカイブをアップロードする。私のも見てみますね。 1...220221222223224225226227228229230231232233234...652 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは、ここで問題です:EAは保留中の指値注文を設定し、その後価格が移動し、注文は成行注文になります。全てうまくいくのですが、いくつかのオーダーで全く不明な不具合があります。全てのオーダーはある固定定数「K」を介して設定されているので、それらの間の距離は常に定数(Rn+1 = Rn + 「K」)であるべきなのです。しかし、注文は出ているし、価格も表示されているし、すべてチェックしているのに、前の注文から次の注文までの距離が「K」にならない。 価格との演算結果をチェックすると、つまり、引き算だけして結果をチェックすると「K」になるが、論理比較==はまだ偽となり、その価格で常に注文を出しているEAが、そこに注文はないと「思って」いることにつながる。長かったらごめんなさい、もっと詳しく説明したかったんです。正直、本当にどうしたらいいのかわからない :(
ありがとうございました。 しかし、この 2011.09.30 21:26:49 TestGenerator: unmatched data error (volume limit 13634 at 2011.07.19 20:00 exceeded) がある。
私が理解する限り、このメッセージはExpert Advisorには関係ないのですが、それでもどう理解したらいいのでしょうか?
機能修正にご協力ください
最後の注文の終値を(現在の時刻に最も近い時刻で)決定する関数を書こうとしているのですが
こんな風に書いています。
しかし
為さる
uble PriceCloseLastPos(string smb = "", int cmd = -1, int mMin = -1, int mMax = -1) { .
int ticketDateTime=0;
int orderTicket=-1;
double closePrice = 0;
int ordTotal = OrdersTotal();
if (smb == "0") smb = Symbol();
for (int i = 0; i < ordTotal; i++) {.
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
if (OrderSymbol() == smb || smb == ""){
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {。
if (cmd < OP_BUY || OrderType() == cmd){
if (mMin < 0 || (OrderMagicNumber() >= mMin && OrderMagicNumber() <= mMax)){
if (ticketDateTime < OrderCloseTime()){
ticketDateTime = OrderCloseTime();
orderTicket = OrderTicket();
closePrice = OrderClosePrice()。
}
}
}
}
}
}
}
if(orderTicket > -1) OrderSelect(orderTicket, SELECT_BY_TICKET, MODE_HISTORY );
return(closePrice);
}
しかし、なぜかこの関数は、テスターで開いた一番最初の注文のデータを返します。
実はこれが私の中間目標なんです。部分注文の最終終値を出す関数を書きたかったのですが(全ロットの数量分ではありません)、どうすればいいのか悩むところです......。
その代わり...
...次のページ ...
ここで、あなたの知識はあまりないことがわかります。チケットでオーダーを選択する場合、 pool パラメータは無視されます。つまり、MODE_HISTORYと書いても意味がない。このパラメータは、インデックスによる選択のみを参照する。
チケットで注文が選択されている場合、クローズドオーダーのリストから選択されていることを確認するために、クローズドタイムを確認する必要があります。0より大きい値でなければなりません。このパラメータが0より大きいのはクローズドポジションだけです。
MT4取引端末の5分足では、履歴は表示されません。これは解決できるのでしょうか?
ぶしつけな質問で申し訳ないのですが。2010年11月以前の履歴が表示されないという意味です :)
だから、ないんです。また、明確にすることができます。MT4の設定で、チャート上のバーを増やしてみてください。
履歴の長いものをダウンロードしたり、購入したりすることで解決します。
それなら彼女は存在しないことになる。また、明確にすることができます。MT4の設定で、チャート上のバーを増やしてみてください。
これは、より長い履歴をダウンロードしたり、購入したりすることで解決できます。
ストーリーに登場するバーの最大数は?もしかしたら、すでにトリミングされているのかもしれませんね。