どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 122 1...115116117118119120121122123124125126127128129...1178 新しいコメント Paladin80 2013.09.05 05:54 #1211 skyjet: こんにちは!この関数のエラーをお探しですか? 未決済の注文は、発注から2日後に削除するという考え方です。 min=1440とした。 if (OrdersTotal()>0) { for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) { if(TimeCurrent()-OrderOpenTime()>=min) { OrderDelete(OrderTicket()); return; } } } } } Mikhail Kozhemyako 2013.09.05 06:05 #1212 skyjet:こんにちは!この関数のエラーをお探しですか?未決済の注文は、発注から2日後に削除するという考え方です。 min=1440とした。 なぜ、保留中の注文を 追跡して削除 したいのですか?その際、datetime expiration=TimeCurrent()+min*60+sec に設定する必要がある。min*60+sec後に自ら削除される。 Paladin80 2013.09.05 06:09 #1213 Sepulca: なぜ、保留中の注文を監視し、削除する必要があるのですか?datetime expiration=TimeCurrent()+min*60+sec とすることで、min*60+sec後に自己削除されます。 おそらく、保留中の注文は 何らかのアルゴリズムに従って決済されるので、例えば2日という別の条件があれば、1日で決済されるでしょう。2日間。 noobys 2013.09.05 06:23 #1214 Sepulca paladin80 ありがとうございます。datetime expiration は、まさに私たちが必要としているものです :) PapaYozh 2013.09.05 06:32 #1215 paladin80: OrderOpenTime() は、注文の開始時刻を返します。 未決済注文の 場合、この関数はゼロを返します。 Paladin80 2013.09.05 07:08 #1216 PapaYozh:OrderOpenTime() は、注文の開始時刻を返します。保留中の注文の場合、この関数はゼロを返します。 うーん、関数そのものを確認しないまま、さっそくコードをいじってみました。そうですね、OrderOpenTime()はブローカーがポジションをオープンした時刻を表示しますが、ブローカーが保留中の注文を 受理した時刻は表示されません。すなわち、おそらく、注文ですぐに締め切りを指定するか、注文送信時刻を(どうせ使わないなら)マジックナンバーに記録して、TimeCurrent() と OrderMagicNumber( ) を比較すればよいのではないでしょうか。 satorifx 2013.09.05 16:41 #1217 こんにちは。カスタムインジケータの扱いを助けてください。トレンドラインまでの距離を求める問題を解いています。トレンドラインがプロットされている時間枠で(ターミナルで開いている時間枠に関係なく)トレンドラインまでの距離を正確に取得する必要があります。トレンドラインの現在値は、関数ObjectGetValueByShiftを 使用して取得することができます。計算はオープン時間でしかできないので、小さなインジケータを書きました。 iCustom 関数にtimeframeパラメータがあることに惹かれましたが、このパラメータをどの程度考慮してインジケータを呼び出して いるのでしょうか。その指標となるのがこちら。#property indicator_chart_window #property indicator_buffers 1 //-------------------------------------------------------------------- extern string TL_name = "TL_1"; //-------------------------------------------------------------------- double valueBuf[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexBuffer(0,valueBuf); SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,1, White); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i; int counted_bars = IndicatorCounted(); //---- i = Bars - counted_bars - 1; // Индекс первого непосчитанного // Цикл по непосчитанным барам while(i>=0) { valueBuf[i] = NormalizeDouble(ObjectGetValueByShift(TL_name,i), Digits); i--; } //---- return(0); }この指標は、トレンドの現在値を考慮したものです。 インジケーターそのものを呼び出す。TL_price_now = iCustom(NULL,PERIOD_D1,"TL_value",TL_name,0,0);ここでは、例えばPERIOD_D1の 時間がパラメータとしてインジケータに渡され、その上にトレンドがプロットされ、その距離が計算されるはずです。 トレンドまでの距離を単純に計算しています。 dist = NormalizeDouble(TL_price_now - Bid, Digits); そのように見えますが、そうではありません。他のタイミング(D1とは異なる)に切り替えると、インジケータは他の値を返します(私が切り替えたタイミングでは正しい)。 ここで疑問なのですが、iCustom 関数を呼び出す際に、どの程度まで期間を考慮するのでしょうか? それとも、インジケータをいじってしまったのでしょうか? Viktar Dzemikhau 2013.09.05 17:50 #1218 pako: t =OrdersTotal(); なぜ数えるのか? 数えたのか? そこで、値を参照渡しするようにした。理屈は簡単です! Viktar Dzemikhau 2013.09.05 18:10 #1219 artmedia70: 私のバージョンでは、関数が短くなっています・・・。:) はい、ちなみにこの実装方法の方がスマートです。スタート時のみ、追加機能でスペースが広くなっています。こんな感じになりました。 void FindOrders(int& massive[]) { int oType; ArrayInitialize(massiveOfOrders, 0); for (int i=OrdersTotal() - 1; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != i_magic) continue; oType = OrderType(); massiveOfOrders[oType] = massiveOfOrders[oType] + 1; } } int start() { int i, oTotal = 0, oPending = 0; FindOrders(massiveOfOrders); for (i=0; i<=7; i++) { if (i > 1 && i < 6) { oPending += massiveOfOrders[i]; } if (i < 6) { oTotal += massiveOfOrders[i]; } } pr ("FindOrders(): " + "oTotal = " + oTotal); pr ("FindOrders(): " + "oPending = " + oPending); 最適化するようなことはないのでは? というか、スタート地点に何もない方がよっぽど便利なんですけどね。そして、すべては純粋に機能によって呼び出されます。そして前回は、スタートが主機能のオーバーグロウ、追加機能のオーバーグロウと、いろいろあることが判明したわけですが......。 削除済み 2013.09.06 02:48 #1220 ごきげんよう。 Expert Advisorが動作しない、または取引できない理由を教えてください。 1...115116117118119120121122123124125126127128129...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは!この関数のエラーをお探しですか?
未決済の注文は、発注から2日後に削除するという考え方です。
min=1440とした。
こんにちは!この関数のエラーをお探しですか?
未決済の注文は、発注から2日後に削除するという考え方です。
min=1440とした。
なぜ、保留中の注文を 追跡して削除 したいのですか?その際、datetime expiration=TimeCurrent()+min*60+sec に設定する必要がある。min*60+sec後に自ら削除される。
なぜ、保留中の注文を監視し、削除する必要があるのですか?datetime expiration=TimeCurrent()+min*60+sec とすることで、min*60+sec後に自己削除されます。
paladin80:
OrderOpenTime() は、注文の開始時刻を返します。
未決済注文の 場合、この関数はゼロを返します。
OrderOpenTime() は、注文の開始時刻を返します。
保留中の注文の場合、この関数はゼロを返します。
こんにちは。カスタムインジケータの扱いを助けてください。
トレンドラインまでの距離を求める問題を解いています。トレンドラインがプロットされている時間枠で(ターミナルで開いている時間枠に関係なく)トレンドラインまでの距離を正確に取得する必要があります。トレンドラインの現在値は、関数ObjectGetValueByShiftを 使用して取得することができます。計算はオープン時間でしかできないので、小さなインジケータを書きました。 iCustom 関数にtimeframeパラメータがあることに惹かれましたが、このパラメータをどの程度考慮してインジケータを呼び出して いるのでしょうか。
その指標となるのがこちら。
この指標は、トレンドの現在値を考慮したものです。
インジケーターそのものを呼び出す。
ここでは、例えばPERIOD_D1の 時間がパラメータとしてインジケータに渡され、その上にトレンドがプロットされ、その距離が計算されるはずです。
トレンドまでの距離を単純に計算しています。
そのように見えますが、そうではありません。他のタイミング(D1とは異なる)に切り替えると、インジケータは他の値を返します(私が切り替えたタイミングでは正しい)。ここで疑問なのですが、iCustom 関数を呼び出す際に、どの程度まで期間を考慮するのでしょうか?
それとも、インジケータをいじってしまったのでしょうか?
t =OrdersTotal();
なぜ数えるのか? 数えたのか?
そこで、値を参照渡しするようにした。理屈は簡単です!
私のバージョンでは、関数が短くなっています・・・。:)
はい、ちなみにこの実装方法の方がスマートです。スタート時のみ、追加機能でスペースが広くなっています。こんな感じになりました。
最適化するようなことはないのでは?
というか、スタート地点に何もない方がよっぽど便利なんですけどね。そして、すべては純粋に機能によって呼び出されます。そして前回は、スタートが主機能のオーバーグロウ、追加機能のオーバーグロウと、いろいろあることが判明したわけですが......。
ごきげんよう。
Expert Advisorが動作しない、または取引できない理由を教えてください。