MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1918 1...191119121913191419151916191719181919192019211922192319241925...1953 新しいコメント Rustam Bikbulatov 2022.02.23 17:39 #19171 Andrey Sokolov #:本当に自分で見ていないのでしょうか?"どうやって書けばいいの?" - 0.01ロットと書いてあるところは、利用可能な最小値を計算する必要があるんだ。 それはわかります。0.02に設定すると、0.02ロットの注文が選択されます。 最初に0.01ロットをみて、次に0.02をみるというように設定するにはどうしたらいいかと質問しました。 Rustam Bikbulatov 2022.02.23 17:41 #19172 Sergey Gridnev #: 1回目で最小ボリュームを求め、2回目でそれを閉じるという2サイクルが必要です。また、クローズ時には注文が1ポジション分ずれるので、最大ポジションから0までのサイクルを行う必要があることに注意しましょう。 最大値から0にする方法は? Andrei Sokolov 2022.02.23 17:42 #19173 Rustam Bikbulatov #:まず0.01、次に0.02と見ていくようにするにはどうしたらいいかということです。 すでに2回、その方法を教えてもらっていますね。 Alexey Viktorov 2022.02.23 17:43 #19174 Rustam Bikbulatov #:それはわかります。0.02に設定するとロット0.02の注文が選択されます。 最初に0.01を見て、次に0.02を見て、というように設定する方法をお聞きしたいのです。 2次元配列で収集し、1次元目にはロット、2次元目にはチケットが含まれます。配列をソートし、1次元目のロットが最小になった時点でクローズする。あるいは、全部閉じる必要があっても、ロットが増えてくると最後まで閉じる...。 Andrei Sokolov 2022.02.23 17:45 #19175 Sergey Gridnev #: 2つのサイクルが必要です。最初のサイクルで最小のボリュームを見つけ、2つ目のサイクルでそれを閉じます。また、クローズ時には注文が1ポジション 分ずれるので、最大ポジションから0までのサイクルを行う必要があることに注意しましょう。 いいえ。初期のものから最新のものまで。 Rustam Bikbulatov 2022.02.23 17:47 #19176 と言われているのがわかった。まあ、いつも通り試行錯誤しながら勉強していくしかないですね。 Galim_V 2022.02.23 18:15 #19177 Rustam Bikbulatov #:と言われているのがわかった。まあ、いつも通り試行錯誤しながら勉強していくしかないですね。 //+------------------------------------------------------------------+ //| Око_01.mq4 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #include <GrosBuch.mqh> #property script_show_inputs //input double Max_loss=0; // extern int N=6; // Количество ордеров input int SLpips=0; // Количество пунктов //Вычисляем возможное оставшееся количество лотов при N лоссов от оставшихся свободных средств // Buch bi; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { double PipValue = MarketInfo(NULL, MODE_TICKVALUE), min_lot = MarketInfo(NULL, MODE_MINLOT), lot_step = MarketInfo(NULL, MODE_LOTSTEP), Margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED), Max_loss=N*SLpips*PipValue*min_lot, //Вычисляем сумму совокупного возможного лосса M_m=DBL_MIN; double remains= AccountFreeMargin()-Max_loss; //Значение свободных средств для открыти ордера Margin*Lots; while(remains>Margin*min_lot&&!IsStopped()) //если они больше,чем необходимо для открытия 1 лота { min_lot=NormalizeDouble(min_lot+lot_step,2); //добавим минлот M_m=Margin*min_lot; //получим значени св средств при вычисленном лоте и размере стопа // Lots*=min_lot; Print("remains = ",remains," Margin =",Margin," PipValue =",PipValue," N =",N,"min_lot =",min_lot," Max_loss =",Max_loss," M-m =",M_m); } } //+------------------------------------------------------------------+ MrBrooklin 2022.02.24 17:15 #19178 専門家の皆様、こんばんは。 ひとつだけ理解を深めてください。ある関数の冒頭部分を書いていて、そのコードの一部をスクリプトで確認することにしました。 //+------------------------------------------------------------------+ //| 3.mq5 | //| Copyright 2021, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { /* Создадим запрос на сервер и получим ответ с результатом */ MqlTradeRequest request= {}; MqlTradeResult result= {0}; /* запустим цикл для перебора всех установленных отложенных ордеров */ for(int i=OrdersTotal()-1; i>=0; i--) { /* определим параметры установленного ордера */ string symbol=OrderGetString(ORDER_SYMBOL); // символ ордера int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // количество знаков после запятой double point=SymbolInfoDouble(symbol,SYMBOL_POINT); // значение одного пункта ulong ticket=OrderGetTicket(i); // тикет ордера ENUM_ORDER_TYPE type=(ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE); // тип ордера double volume=OrderGetDouble(ORDER_VOLUME_INITIAL); // объём ордера ulong magic=OrderGetInteger(ORDER_MAGIC); // MagicNumber ордера double price_current=OrderGetDouble(ORDER_PRICE_CURRENT); // текущая цена по символу ордера double price_order_open=OrderGetDouble(ORDER_PRICE_OPEN); // цена открытия указанная в ордере double sl=OrderGetDouble(ORDER_SL); // стоп лосс ордера double tp=OrderGetDouble(ORDER_TP); // тейк профит ордера /* выведем информацию об установленных отложенных ордерах */ PrintFormat("#%I64u %s %s %.2f price_current: %.5f price_order_open: %.5f sl: %.5f tp: %.5f magic: %d", ticket,symbol,EnumToString(type),volume,price_current,price_order_open,sl,tp,magic); } } //+------------------------------------------------------------------+ しかし、その結果がExpertsタブに出力されるのは、ちょっと不可解です。保留中の注文ORDER_TYPE_BUY_STOPにはシンボルがあるが、ORDER_TYPE_SELL_STOPには何らかの理由でシンボルがない。 何とつながるのか?ウラジミールさん、ありがとうございます。 Sergey Gridnev 2022.02.24 17:47 #19179 MrBrooklin #:専門家の皆様、こんばんは。ひとつだけ理解を深めてください。ある関数の冒頭部分を書いていて、そのコードの一部をスクリプトで確認することにしました。しかし、Expertsタブに出力される結果は、ちょっと不可解です。保留中の注文ORDER_TYPE_BUY_STOPにはシンボルがあるが、ORDER_TYPE_SELL_STOPには何らかの理由でシンボルがない。何とつながるのか?ウラジミールさん、ありがとうございます。 これは、チケットを選択したのではなく、その特性を取得しようとしているためです。 MrBrooklin 2022.02.24 18:12 #19180 Sergey Gridnev #: チケットを選んでいないのに、その特徴を掴もうとしていることに関係がある。 セルゲイさん、ご回答ありがとうございました。お返事をいただいて、さらに戸惑いました。どうしてだろう?スクリプトを実行すると、設定されたすべての保留中の注文が照会されます。画像で見る限り、チャート上に2枚あり、同時に1枚は選択され、もう1枚は選択されないのですね。よくわからないのです。 もう少し詳しく説明していただけますか? 単なる好奇心ではなく、自習を続けるために質問しています。 ウラジミールさん、ありがとうございます。 1...191119121913191419151916191719181919192019211922192319241925...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
本当に自分で見ていないのでしょうか?
"どうやって書けばいいの?" - 0.01ロットと書いてあるところは、利用可能な最小値を計算する必要があるんだ。
それはわかります。0.02に設定すると、0.02ロットの注文が選択されます。 最初に0.01ロットをみて、次に0.02をみるというように設定するにはどうしたらいいかと質問しました。
1回目で最小ボリュームを求め、2回目でそれを閉じるという2サイクルが必要です。また、クローズ時には注文が1ポジション分ずれるので、最大ポジションから0までのサイクルを行う必要があることに注意しましょう。
最大値から0にする方法は?
まず0.01、次に0.02と見ていくようにするにはどうしたらいいかということです。
すでに2回、その方法を教えてもらっていますね。
それはわかります。0.02に設定するとロット0.02の注文が選択されます。 最初に0.01を見て、次に0.02を見て、というように設定する方法をお聞きしたいのです。
2次元配列で収集し、1次元目にはロット、2次元目にはチケットが含まれます。配列をソートし、1次元目のロットが最小になった時点でクローズする。あるいは、全部閉じる必要があっても、ロットが増えてくると最後まで閉じる...。
2つのサイクルが必要です。最初のサイクルで最小のボリュームを見つけ、2つ目のサイクルでそれを閉じます。また、クローズ時には注文が1ポジション 分ずれるので、最大ポジションから0までのサイクルを行う必要があることに注意しましょう。
いいえ。初期のものから最新のものまで。
と言われているのがわかった。まあ、いつも通り試行錯誤しながら勉強していくしかないですね。
と言われているのがわかった。まあ、いつも通り試行錯誤しながら勉強していくしかないですね。
専門家の皆様、こんばんは。
ひとつだけ理解を深めてください。ある関数の冒頭部分を書いていて、そのコードの一部をスクリプトで確認することにしました。
しかし、その結果がExpertsタブに出力されるのは、ちょっと不可解です。保留中の注文ORDER_TYPE_BUY_STOPにはシンボルがあるが、ORDER_TYPE_SELL_STOPには何らかの理由でシンボルがない。
何とつながるのか?ウラジミールさん、ありがとうございます。
専門家の皆様、こんばんは。
ひとつだけ理解を深めてください。ある関数の冒頭部分を書いていて、そのコードの一部をスクリプトで確認することにしました。
しかし、Expertsタブに出力される結果は、ちょっと不可解です。保留中の注文ORDER_TYPE_BUY_STOPにはシンボルがあるが、ORDER_TYPE_SELL_STOPには何らかの理由でシンボルがない。
何とつながるのか?ウラジミールさん、ありがとうございます。
チケットを選んでいないのに、その特徴を掴もうとしていることに関係がある。
セルゲイさん、ご回答ありがとうございました。お返事をいただいて、さらに戸惑いました。どうしてだろう?スクリプトを実行すると、設定されたすべての保留中の注文が照会されます。画像で見る限り、チャート上に2枚あり、同時に1枚は選択され、もう1枚は選択されないのですね。よくわからないのです。
もう少し詳しく説明していただけますか?
単なる好奇心ではなく、自習を続けるために質問しています。
ウラジミールさん、ありがとうございます。