MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1248 1...124112421243124412451246124712481249125012511252125312541255...1953 新しいコメント Vladimir Pastushak 2020.09.08 10:06 #12471 jaffer wilson:Artyom Trishkin @ Vladimir Pastushak私の場合、うまくいきません。新規投稿をお願いしているわけではありません。1種類の取引で証拠金を計算して返してくれるのは知っている。しかし、すでに取引が始まっていて、特定のシンボルの1回の取引で消費されるマージンを知りたい場合には役に立ちません。 助けてください。私の状況が理解できないのであれば、教えてください。 シナリオの簡単な説明 このフィールドはToolBoxに表示されていますね。 シンボル:AUDJPY、EURUSD、EURTRYに対する証拠金です。 AccountInfoDouble (ACCOUNT_MARGIN) でこの値を取得できることは知っています。しかし、特定のシンボルの値を取得することができません。例えば、EURUSDがどれくらいの証拠金を消費しているのか知りたいのです。何の機能も果たせないこと。それゆえ、どのように計算すればいいのか知りたいのです。 この説明で納得していただけたでしょうか。 //+------------------------------------------------------------------+ #include <Trade\PositionInfo.mqh> CPositionInfo m_position; //+------------------------------------------------------------------+ struct str__ { string symbol; double margin; }; str__ symb[]; //+------------------------------------------------------------------+ void OnTick() { int total = PositionsTotal(), c = 0; ArrayResize(symb, total); for(int k = total - 1; k >= 0; k--) if(m_position.SelectByIndex(k)) { symb[c].symbol = m_position.Symbol(); if(m_position.PositionType() == POSITION_TYPE_BUY) symb[c].margin = SymbolMargin(symb[c].symbol, ORDER_TYPE_BUY, m_position.Volume()); if(m_position.PositionType() == POSITION_TYPE_SELL) symb[c].margin = SymbolMargin(symb[c].symbol, ORDER_TYPE_SELL, m_position.Volume()); c++; } ArrayPrint(symb,2); } //+------------------------------------------------------------------+ double SymbolMargin(string aSymbol, ENUM_ORDER_TYPE aType, double aLot = 1.0) { double margin = 0; MqlTick m_tick; if(SymbolInfoTick(aSymbol, m_tick)) { if(m_tick.ask != 0.0) if(OrderCalcMargin(aType, aSymbol, aLot, m_tick.ask, margin)) return (margin * aLot); if(m_tick.bid != 0.0) if(OrderCalcMargin(aType, aSymbol, aLot, m_tick.bid, margin)) return (margin * aLot); } return -1; } //+------------------------------------------------------------------+ jaffer wilson 2020.09.08 10:20 #12472 Vladimir Pastushak : @Vladimir Pastushak やってみます。しかし、言っておきますが、それは実行可能な解決策ではありません。OrderCalcMargin()で与えられる値は毎回変化する。しかし、マージン値は変わりません。どの取引も決済すれば、証拠金の値は取引開始時と同じになる。しかし、OrderCalcMargin()を使用すると、得られる値が変化し、元の値とは全く異なってしまうのです。 皆さんの方でも試された方がいらっしゃいましたら、教えてください。うまくいかないのは分かっている。とはいえ、おっしゃるとおりに使わせていただきます。 jaffer wilson 2020.09.08 10:27 #12473 Vladimir Pastushak : EURUSDでロットサイズ50の取引を開始しました。この関数を使った後の結果をご覧ください。 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589500.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589505.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589495.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589490.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589485.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589490.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589485.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589480.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589475.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589470.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589465.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589455.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589460.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589465.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589460.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589455.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589440.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589440.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589440.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589445.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589450.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589460.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589465.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589460.00 ほら、マージンは常に変化している。しかし、すでにオープンしているトレードの価値は変わりません。これからどうすればいいか教えてください。 Vladimir Pastushak 2020.09.08 10:52 #12474 jaffer wilson:EURUSDでロットサイズ50の取引を開始しました。この関数を使った後の結果をご覧ください。 ほら、マージンは常に変化している。しかし、すでにオープンしているトレードの価値は変わりません。これからどうすればいいか教えてください。 //+------------------------------------------------------------------+ #include <Trade\PositionInfo.mqh> CPositionInfo m_position; //+------------------------------------------------------------------+ struct str__ { string symbol; double margin; }; str__ symb[]; //+------------------------------------------------------------------+ void OnTick() { int total = PositionsTotal(), c = 0; ArrayResize(symb, total); for(int k = total - 1; k >= 0; k--) if(m_position.SelectByIndex(k)) { symb[c].symbol = m_position.Symbol(); if(m_position.PositionType() == POSITION_TYPE_BUY) symb[c].margin = SymbolMargin(symb[c].symbol, ORDER_TYPE_BUY, m_position.Volume(), m_position.PriceOpen()); if(m_position.PositionType() == POSITION_TYPE_SELL) symb[c].margin = SymbolMargin(symb[c].symbol, ORDER_TYPE_SELL, m_position.Volume(), m_position.PriceOpen()); c++; } ArrayPrint(symb, 2); } //+------------------------------------------------------------------+ double SymbolMargin(string aSymbol, ENUM_ORDER_TYPE aType, double aLot = 1.0, double aOpenPrice = 0) { double margin = 0; if(aOpenPrice != 0.0) if(OrderCalcMargin(aType, aSymbol, aLot, aOpenPrice, margin)) return (margin * aLot); if(aOpenPrice != 0.0) if(OrderCalcMargin(aType, aSymbol, aLot, aOpenPrice, margin)) return (margin * aLot); return -1; } //+------------------------------------------------------------------+ jaffer wilson 2020.09.08 11:21 #12475 Vladimir Pastushak : 上記のコードを試してみました。 これを手に入れた。 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589100.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589100.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589100.00 (EURUSD,M1) [symbol] [margin] (EURUSD,M1) [ 0 ] "EURUSD" 589100.00 しかし、期待値はこうだった。 jaffer wilson 2020.09.08 11:29 #12476 Vladimir Pastushak : それ以外のシンボルでは、やはりマージン値が 変化します。したがって、OrderCalcMargin()は解決策にはなりません。やったねまずはそちらでお試しください。 Vladimir Pastushak 2020.09.08 12:12 #12477 jaffer wilson:それ以外のシンボルでは、やはりマージン値が 変化します。したがって、OrderCalcMargin()は解決策にはなりません。やったねまずはそちらでお試しください。 2命令 5891 * 2 = 11782 もし、配列をシンボルごとに処理する必要があるならば...問題ないのですが...。 jaffer wilson 2020.09.08 13:13 #12478 Vladimir Pastushak :2命令 5891 * 2 = 11782 もし、配列を1文字ずつ処理する必要があるのなら...。問題ないのですが...。 しかし、EURUSDで1回だけトレードをしました。また、他のシンボルでは正常に機能しません。 Roman 2020.09.08 14:10 #12479 mql5インジケーターのフックがあるかどうか教えてください。2つの表示プロパティを設定する場合。 #property indicator_separate_window #property indicator_chart_window そして、何らかの方法で、異なる出力、それぞれを独自のマッピングプロパティにバインドします。 Artyom Trishkin 2020.09.08 14:53 #12480 Roman:mql5インジケーターのフックがあるかどうか教えてください。2つの表示プロパティを設定する場合。そして、何らかの方法で、異なる出力、それぞれを独自のマッピングプロパティにバインドします。 そんなフックはありません。右でも左でもない。MQL5用も、MQL4用もありません。 サブウインドウからメインチャートに独自のコンストラクションを使用することができます。 1...124112421243124412451246124712481249125012511252125312541255...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
Artyom Trishkin @ Vladimir Pastushak
私の場合、うまくいきません。新規投稿をお願いしているわけではありません。1種類の取引で証拠金を計算して返してくれるのは知っている。しかし、すでに取引が始まっていて、特定のシンボルの1回の取引で消費されるマージンを知りたい場合には役に立ちません。
助けてください。私の状況が理解できないのであれば、教えてください。
シナリオの簡単な説明
このフィールドはToolBoxに表示されていますね。
シンボル:AUDJPY、EURUSD、EURTRYに対する証拠金です。
AccountInfoDouble (ACCOUNT_MARGIN) でこの値を取得できることは知っています。しかし、特定のシンボルの値を取得することができません。例えば、EURUSDがどれくらいの証拠金を消費しているのか知りたいのです。何の機能も果たせないこと。それゆえ、どのように計算すればいいのか知りたいのです。
この説明で納得していただけたでしょうか。
@Vladimir Pastushak やってみます。しかし、言っておきますが、それは実行可能な解決策ではありません。OrderCalcMargin()で与えられる値は毎回変化する。しかし、マージン値は変わりません。どの取引も決済すれば、証拠金の値は取引開始時と同じになる。しかし、OrderCalcMargin()を使用すると、得られる値が変化し、元の値とは全く異なってしまうのです。
皆さんの方でも試された方がいらっしゃいましたら、教えてください。うまくいかないのは分かっている。とはいえ、おっしゃるとおりに使わせていただきます。
EURUSDでロットサイズ50の取引を開始しました。この関数を使った後の結果をご覧ください。
ほら、マージンは常に変化している。しかし、すでにオープンしているトレードの価値は変わりません。これからどうすればいいか教えてください。
EURUSDでロットサイズ50の取引を開始しました。この関数を使った後の結果をご覧ください。
ほら、マージンは常に変化している。しかし、すでにオープンしているトレードの価値は変わりません。これからどうすればいいか教えてください。
上記のコードを試してみました。
これを手に入れた。
しかし、期待値はこうだった。
それ以外のシンボルでは、やはりマージン値が 変化します。したがって、OrderCalcMargin()は解決策にはなりません。やったねまずはそちらでお試しください。
それ以外のシンボルでは、やはりマージン値が 変化します。したがって、OrderCalcMargin()は解決策にはなりません。やったねまずはそちらでお試しください。
2命令 5891 * 2 = 11782 もし、配列をシンボルごとに処理する必要があるならば...問題ないのですが...。
2命令 5891 * 2 = 11782 もし、配列を1文字ずつ処理する必要があるのなら...。問題ないのですが...。
しかし、EURUSDで1回だけトレードをしました。また、他のシンボルでは正常に機能しません。
mql5インジケーターのフックがあるかどうか教えてください。2つの表示プロパティを設定する場合。
そして、何らかの方法で、異なる出力、それぞれを独自のマッピングプロパティにバインドします。
mql5インジケーターのフックがあるかどうか教えてください。2つの表示プロパティを設定する場合。
そして、何らかの方法で、異なる出力、それぞれを独自のマッピングプロパティにバインドします。
そんなフックはありません。右でも左でもない。MQL5用も、MQL4用もありません。
サブウインドウからメインチャートに独自のコンストラクションを使用することができます。