どのデザインが正しいのでしょうか? - ページ 5 12345678 新しいコメント [Удален] 2010.06.16 11:29 #41 valenok2003: その結果、このようなスクリプトが出来上がりました。 質問 - なぜいつもすべての注文が終了しないのですか?例えば、3つの売り注文を次々に出して決済しようとすると、スクリプトが1つ、2つ、あるいは全部を決済してしまうことがあるのです。その理由は何でしょうか。 スクリプトは必要ですか? それならwhile 文は必要ない。 スクリプトはそのままループで動く。。 スクリプトには、このような構成が必要です。 リンクは覚えていませんが、すべてのオープンオーダーをクローズするスクリプトはこちらです。 //+------------------------------------------------------------------+ //| CloseAllOrders.mq4 | //| Copyright © 2008, PRMQuotes Software Corp. | //| Jedimedic77@gmail.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, PRMQuotes Software Corp." #property link "" //+------------------------------------------------------------------+ //| EX4 imports | //+------------------------------------------------------------------+ #include <stdlib.mqh> //+------------------------------------------------------------------+ //| global variables to program: | //+------------------------------------------------------------------+ double Price[2]; int giSlippage; bool CloseOpenOrders = true; //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ void start() { int iOrders=OrdersTotal()-1, i; if(CloseOpenOrders) { for(i=iOrders; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderType()<=OP_SELL) && GetMarketInfo() && !OrderClose(OrderTicket(),OrderLots(),Price[1-OrderType()],giSlippage)) Print(OrderError()); } } } //+------------------------------------------------------------------+ //| Function..: OrderError | //+------------------------------------------------------------------+ string OrderError() { int iError=GetLastError(); return(StringConcatenate("Order:",OrderTicket()," GetLastError()=",iError," ",ErrorDescription(iError))); } //+------------------------------------------------------------------+ //| Function..: GetMarketInfo | //+------------------------------------------------------------------+ bool GetMarketInfo() { RefreshRates(); Price[0]=MarketInfo(OrderSymbol(),MODE_ASK); Price[1]=MarketInfo(OrderSymbol(),MODE_BID); double dPoint=MarketInfo(OrderSymbol(),MODE_POINT); if(dPoint==0) return(false); giSlippage=(Price[0]-Price[1])/dPoint; return(Price[0]>0.0 && Price[1]>0.0); } //+------------------------------------------------------------------+ khorosh 2010.06.16 11:49 #42 valenok2003: その結果、このようなスクリプトが出来上がりました。 質問 - なぜいつもすべての注文が終了しないのですか?例えば、売り注文を3つ連続で出して、スクリプトで決済しようとすると、1つ、2つ、または全部が決済されることがあります。その理由は何でしょうか。 また、引用符は何桁ですか? Sergey Guliaev 2010.06.16 12:15 #43 khorosh: また、引用符は何桁ですか? 5 Sergey Guliaev 2010.06.16 12:17 #44 Martingeil: スクリプトは必要ですか? もちろん、ありがとうございます。しかし、既成のスクリプトを入手するのは簡単です。その理由を探りたい。 techno 2010.06.16 12:21 #45 Martingeil: スクリプトは必要ですか? であれば、while 文は必要なく、スクリプトはそのままループで動作します。。 スクリプトは一度しか動作しません。そこに自己ループはないし、これまでもそうだった。 Valenokさん、すべての注文を閉じるスクリプトが必要なのですか、それともこのシンボルだけですか? Sergey Guliaev 2010.06.16 12:28 #46 Martingeil: スクリプトは必要ですか? そうすると、while 文は必要なく、スクリプトはそのままループで動作します。。 スクリプトには、このような構成が必要です。 リンクは覚えていませんが、ここにすべてのオープンオーダーをクローズするスクリプトがあります。 while コードでは、スレッドがビジー状態である間だけ遅延させる。 [Удален] 2010.06.16 12:29 #47 Techno: スクリプトは一度しか動作しません。そこに自己トリガーはないし、これまでもなかった。 Valenok, スクリプトですべての注文をクローズさせたいのか、それともこのシンボルだけをクローズさせたいのですか? そうですね、間違っていますね、ティックに依存しないという意味です...。 Sergey Guliaev 2010.06.16 12:32 #48 Techno: スクリプトは一度しか動作しません。そこには自作自演はないし、今までもなかった。 Valenokさん、すべての注文を閉じるスクリプトが必要ですか、それともこのシンボルだけを閉じるスクリプトが必要ですか? 1つのシンボルのみ注文可能です。保留中のものは影響を受けません。 面白いのは、kodobaseで批判されたコード int start() { //---- while(OrdersTotal()>0) { for (int i=0; i < OrdersTotal(); i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) { OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5); } } } //---- return(0); } は問題なく動作していたのですが、改良を始めたら不具合が出るようになりました。 zyです。 誤った文字列を題材に for (int i=0; i < OrdersTotal(); i++) もうわかったんだ。 techno 2010.06.16 12:34 #49 valenok2003: 1つのシンボルのみ注文可能です。懸案事項には手をつけない。 では、そのまま延期していただきましょう。一般的な形では。 int start() { for(int i=OrdersTotal()-1;i>=0;i--) { if(OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()) switch(OrderType()) { case 0 : OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),5); break; case 1 : OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),5); break; default : OrderDelete(OrderTicket()); break; } } } Sergey Guliaev 2010.06.16 12:34 #50 Martingeil: 確かに、チックに関係なく、そういう意味で言ったのではないのですが...。 それは承知しています。 12345678 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
その結果、このようなスクリプトが出来上がりました。
質問 - なぜいつもすべての注文が終了しないのですか?例えば、3つの売り注文を次々に出して決済しようとすると、スクリプトが1つ、2つ、あるいは全部を決済してしまうことがあるのです。その理由は何でしょうか。スクリプトは必要ですか?
それならwhile 文は必要ない。 スクリプトはそのままループで動く。
。
スクリプトには、このような構成が必要です。
リンクは覚えていませんが、すべてのオープンオーダーをクローズするスクリプトはこちらです。
その結果、このようなスクリプトが出来上がりました。
質問 - なぜいつもすべての注文が終了しないのですか?例えば、売り注文を3つ連続で出して、スクリプトで決済しようとすると、1つ、2つ、または全部が決済されることがあります。その理由は何でしょうか。また、引用符は何桁ですか?
スクリプトは必要ですか?
スクリプトは必要ですか?
であれば、while 文は必要なく、スクリプトはそのままループで動作します。
。
スクリプトは一度しか動作しません。そこに自己ループはないし、これまでもそうだった。
Valenokさん、すべての注文を閉じるスクリプトが必要なのですか、それともこのシンボルだけですか?
スクリプトは必要ですか?
そうすると、while 文は必要なく、スクリプトはそのままループで動作します。
。
スクリプトには、このような構成が必要です。
リンクは覚えていませんが、ここにすべてのオープンオーダーをクローズするスクリプトがあります。
スクリプトは一度しか動作しません。そこに自己トリガーはないし、これまでもなかった。
Valenok, スクリプトですべての注文をクローズさせたいのか、それともこのシンボルだけをクローズさせたいのですか?
スクリプトは一度しか動作しません。そこには自作自演はないし、今までもなかった。
Valenokさん、すべての注文を閉じるスクリプトが必要ですか、それともこのシンボルだけを閉じるスクリプトが必要ですか?
1つのシンボルのみ注文可能です。保留中のものは影響を受けません。
面白いのは、kodobaseで批判されたコード
は問題なく動作していたのですが、改良を始めたら不具合が出るようになりました。
zyです。
誤った文字列を題材に
もうわかったんだ。
1つのシンボルのみ注文可能です。懸案事項には手をつけない。
では、そのまま延期していただきましょう。一般的な形では。
確かに、チックに関係なく、そういう意味で言ったのではないのですが...。
それは承知しています。