"ダミー "からの質問 - ページ 33 1...262728293031323334353637383940...277 新しいコメント Anatoli Kazharski 2011.07.26 12:31 #321 Renat: i>=0 ありがとうございます。恥ずかしながら))だから、mql4でこの列挙を使い、こんな簡単なことで何度も失敗した。 Anatoli Kazharski 2011.07.26 22:39 #322 ポジションを選択 することはできません。例えば、こんな感じです。 double Stop_Loss = NormalizeDouble(OrderGetDouble(ORDER_SL),_Digits); double Open_Price = NormalizeDouble(OrderGetDouble(ORDER_PRICE_OPEN),_Digits); double Amount_Risk = 0.0; for(count = PositionsTotal()-1; count >= 0; count--) { if(PositionSelect(SymbolName(count,true))) { int tp_pos; tp_pos = (ENUM_ORDER_TYPE)PositionGetInteger(POSITION_TYPE); if(tp_pos == ORDER_TYPE_BUY || tp_pos == ORDER_TYPE_SELL) { Amount_Risk = MathAbs(Open_Price - Stop_Loss); Print("PositionTotal(): ",PositionsTotal(), " Amount_Risk: ",Amount_Risk); } if(GetLastError() != 0) Print(ErrorDescription(GetLastError()),", ",GetLastError()); } }ログブックにエラーがあります。正しいやり方は? Документация по MQL5: Торговые функции / PositionSelect www.mql5.com Торговые функции / PositionSelect - Документация по MQL5 Rashid Umarov 2011.07.27 06:55 #323 tol64:ポジションを選択 することはできません。例えば、こんな感じです。オーダータイプとポジションタイプを混同しないように、まずはエラーを修正してください。 tp_pos = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); Vladimir Kustikov 2011.07.27 07:42 #324 tol64:ポジションを選択 することはできません。例えば、こんな感じです。ログブックにエラーがあります。正しいやり方は?どこをどう間違えたのか、聞いたほうがわかりやすいと思うのですが...。それを実現するために、コンストラクトif(PositionSelect(SymbolName(count,true))) に置き換える必要があります。 if(PositionSelect(PositionGetSymbol(count)))さらに、ENUM_ORDER_TYPEと ENUM_POSITION_TYPEを混同しています。 Anatoli Kazharski 2011.07.27 11:28 #325 Rosh:オーダータイプとポジション タイプを混同しないように、まずはエラーを修正してください。Vladix:どこが間違えていないのか、聞いたほうがわかりやすいと思うのですが...。 ありがとうございます。そして、本当に重大な間違いをお詫びします。これは一時的な現象で、誤解はすぐに解けるでしょう)。 Andrian22 2011.07.27 13:11 #326 この問題を解決する方法を教えてください。2台のPCでMT5用のExpert Advisor、ライブラリ、インジケータを開発しています。あるコンピュータから別のコンピュータへの開発の転送を整理する最も簡単な方法は何ですか、できれば自動同期が可能であることが望ましいです。つまり、最も新鮮なファイルを自動的に取り出して複製することです。コンピュータは同じネットワーク上にあります。インターネット上で共有される共有フォルダーがあります。 TheXpert 2011.07.27 13:17 #327 VCSを使う Andrian22 2011.07.27 13:44 #328 TheXpert: VCSを使う Windows7のパソコンを指定したわけではありません。一番難しいのは、ファイルシステム内のファイルをどのように積み重ねるかを理解することです。XPのときは、1つのディレクトリにすべてが収まっていてクリアだったのですが、ここではすべてがばらばらになっています。 Andrew Petras 2011.07.27 15:08 #329 Andrian22: Windows7のパソコンを指定したわけではありません。一番難しいのは、ファイルシステム内のファイルをどのように積み重ねるかを把握することです。XPでは、1つのディレクトリにすべてが揃っていましたが、ここではすべてがばらばらです。 ヘルプ - はじめに -端末の起動- 「ゲストモード」(/portableスイッチ使用時)を参照してください。 Anatoli Kazharski 2011.07.27 17:00 #330 Vladix:どこが正解なのか聞いた方がわかりやすかったのでは...。それを実現するために、コンストラクトif(PositionSelect(SymbolName(count,true))) に置き換える必要があります。 if(PositionSelect(PositionGetSymbol(count)))いろいろなバリエーションを見てみると、最終的な仕上がりはどれも同じであることに気がつきました。つまり、それぞれの選択肢です。 if(PositionSelect(Symbol())) if(PositionSelect(PositionGetSymbol(count))) if(PositionSelect(SymbolName(count,true)))...も同じ結果を返します。そして、私の場合、それは結果に何ら影響を与えませんでした)))スクリプトを完成させた。//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { for(int count = 0; count < PositionsTotal(); count++) { double Amount_Risk = 0.0; string Type_pos; if(PositionSelect(Symbol())) //if(PositionSelect(PositionGetSymbol(count))) //if(PositionSelect(SymbolName(count,true))) { int tp_pos = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); string Symbol_pos = PositionGetSymbol(count); double Acc_Blnc = AccountInfoDouble(ACCOUNT_BALANCE); double Order_Lots = PositionGetDouble(POSITION_VOLUME); double Stop_Loss = NormalizeDouble(PositionGetDouble(POSITION_SL),_Digits); double Open_Price = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),_Digits); switch(tp_pos) { case 0 : Type_pos = "LONG"; break; case 1 : Type_pos = "SHORT"; break; } Amount_Risk += MathAbs(((((Open_Price - Stop_Loss)*10000)*(Order_Lots*10))/Acc_Blnc)*100); Print("PositionTotal(): ",PositionsTotal(),", Symbol: ",Symbol_pos,", Position: ",Type_pos,", Amount_Risk: ",DoubleToString(Amount_Risk,2),"%"); if(GetLastError() != 0) Print(ErrorDescription(GetLastError()),", ",GetLastError()); ResetLastError(); } } }これですべて正常に動作するようになりました。上記のバリエーションはコメントアウトされており、比較することができます。結果は常に同じログが表示されます。 1...262728293031323334353637383940...277 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
i>=0
ポジションを選択 することはできません。例えば、こんな感じです。
ログブックにエラーがあります。
正しいやり方は?
ポジションを選択 することはできません。例えば、こんな感じです。
オーダータイプとポジションタイプを混同しないように、まずはエラーを修正してください。
ポジションを選択 することはできません。例えば、こんな感じです。
ログブックにエラーがあります。
正しいやり方は?
どこをどう間違えたのか、聞いたほうがわかりやすいと思うのですが...。
それを実現するために、コンストラクト
if(PositionSelect(SymbolName(count,true))) に置き換える必要があります。
if(PositionSelect(PositionGetSymbol(count)))
さらに、ENUM_ORDER_TYPEと ENUM_POSITION_TYPEを混同しています。
オーダータイプとポジション タイプを混同しないように、まずはエラーを修正してください。
Vladix:
どこが間違えていないのか、聞いたほうがわかりやすいと思うのですが...。
この問題を解決する方法を教えてください。
2台のPCでMT5用のExpert Advisor、ライブラリ、インジケータを開発しています。
あるコンピュータから別のコンピュータへの開発の転送を整理する最も簡単な方法は何ですか、できれば自動同期が可能であることが望ましいです。つまり、最も新鮮なファイルを自動的に取り出して複製することです。
コンピュータは同じネットワーク上にあります。インターネット上で共有される共有フォルダーがあります。
VCSを使う
Windows7のパソコンを指定したわけではありません。一番難しいのは、ファイルシステム内のファイルをどのように積み重ねるかを把握することです。XPでは、1つのディレクトリにすべてが揃っていましたが、ここではすべてがばらばらです。
どこが正解なのか聞いた方がわかりやすかったのでは...。
それを実現するために、コンストラクト
if(PositionSelect(SymbolName(count,true))) に置き換える必要があります。
if(PositionSelect(PositionGetSymbol(count)))
いろいろなバリエーションを見てみると、最終的な仕上がりはどれも同じであることに気がつきました。つまり、それぞれの選択肢です。
...も同じ結果を返します。
そして、私の場合、それは結果に何ら影響を与えませんでした)))スクリプトを完成させた。
これですべて正常に動作するようになりました。上記のバリエーションはコメントアウトされており、比較することができます。結果は常に同じログが表示されます。