初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 769

 
Vitaly Muzichenko:

返信ありがとうございます、しかし、どのように動作させるか、全くわかりません

最後にもう一度、手を差し伸べてみる...。問題で指摘されているようなツールのアカウントを持っていないのですが、FXで動作するスクリプトを紹介します。結果は、このスクリーンショットのようにヒントとして表示される値と一致します。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

初心者からのFAQ MQL5 MT5 MetaTrader 5

ヴィタリー・ムジチェンコ, 2017.07.26 23:56

1ロット買い建てたのですが、takeprofitを設定すると、私の口座はドル建てなので、ターミナルがドル建てに再計算してしまいます。

しかし、(close_price-open_price)*Lots*TickPrice/TickSizeという 式で計算すると、私のtakeprofit額はルーブルで計算されてしまうのです。

チャート上SBRF-9.17

ルーブルをドルレートで割ると 174.99/USDRUR = $2.93 となり、ドル建ての利益が得られます。

プログラム的に書いて、勝手に計算させるには?

/********************Script program start function*******************/
void OnStart()
{
 for(int i = 0; i < PositionsTotal(); i++)
  {
   ulong positionTicket = PositionGetTicket(i);
   string positionSymbol = PositionGetString(POSITION_SYMBOL);
   ENUM_POSITION_TYPE positionType = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
   double positionTP = PositionGetDouble(POSITION_TP);
   double positionOpen = PositionGetDouble(POSITION_PRICE_OPEN);
   double point = SymbolInfoDouble(positionSymbol, SYMBOL_POINT);
   int profitPoint = int(fabs(positionOpen-positionTP)/point);
   double positionProfit = PositionGetDouble(POSITION_PROFIT);
   string symbolCurrencyProfit = SymbolInfoString(positionSymbol, SYMBOL_CURRENCY_PROFIT);
   int currentProfit = positionType == POSITION_TYPE_SELL
    ? int((positionOpen-PositionGetDouble(POSITION_PRICE_CURRENT))/point)
    : int((PositionGetDouble(POSITION_PRICE_CURRENT)-positionOpen)/point);
   Print("PositionSymbol ", positionSymbol);
   Print("SymbolCurrencyProfit ", symbolCurrencyProfit);
   Print("PositionTP ", DoubleToString(positionTP, (int)SymbolInfoInteger(positionSymbol, SYMBOL_DIGITS)));
   Print("PositionOpen ", DoubleToString(positionOpen, (int)SymbolInfoInteger(positionSymbol, SYMBOL_DIGITS)));
   Print("PositionProfit ", DoubleToString(positionProfit, 2));
   Print("ProfitPoint ", profitPoint);
   Print("CurrentProfit ", currentProfit);
   Print("ИТОГО ", positionProfit/currentProfit*profitPoint);
  }
   
}/*******************************************************************/

2つのポジションを募集しています。以下は、そのスクリプトの結果です。

2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionSymbol EURGBP
2017.07.27 13:30:48.517 posi (EURUSD,M15)       SymbolCurrencyProfit GBP
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionTP 0.88697
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionOpen 0.89197
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionProfit 14.47
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ProfitPoint 500
2017.07.27 13:30:48.517 posi (EURUSD,M15)       CurrentProfit 109
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ИТОГО 66.37614678899082
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionSymbol EURJPY
2017.07.27 13:30:48.517 posi (EURUSD,M15)       SymbolCurrencyProfit JPY
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionTP 130.940
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionOpen 130.440
2017.07.27 13:30:48.517 posi (EURUSD,M15)       PositionProfit -0.90
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ProfitPoint 500
2017.07.27 13:30:48.517 posi (EURUSD,M15)       CurrentProfit -9
2017.07.27 13:30:48.517 posi (EURUSD,M15)       ИТОГО 50.0


しかし!!!残念ながら、ポジションを決済するまでに、利益通貨と入金通貨の相場がどうなるかは、誰も予想できないのです。この点で、絶対的に正確な値を決定することは不可能である。まあ、未来を見通すことはできないのですが。

 
Vitaly Muzichenko:

いいえ、ポジションを建てる前に利益/損失を計算するためですが、商品ではなく、預金の通貨 で計算します。

あなたの場合、リスクコントロールではなく、なぜ損益を知る必要があるのですか?- ちょっと気になったのですが、預金の通貨は明確ですが、現実的にどのような状況で使われるかは不明です。
 
Alexey Viktorov:

最後にもう一度、手を差し伸べてみる...。問題で紹介されているツールのアカウントを持っていないのですが、FXで動くスクリプトを紹介します。結果は、このスクリーンショットのようにヒントとして表示される値と一致します。


2つのポジションを募集しています。以下は、スクリプトの作業結果です。


しかし!!!残念ながら、ポジションを決済するまでに、利益通貨と入金通貨の相場がどうなるかは、誰も予想できないのです。この点で、絶対的に正確な値を決定することは不可能である。まあ......未来を見通すことはできないんですけどね。

以下は、スクリプトが示した内容である。

2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        PositionSymbol SBRF-9.17
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        SymbolCurrencyProfit RUR
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        PositionTP 16777
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        PositionOpen 16677
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        PositionProfit 1.07
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        ProfitPoint 100
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        CurrentProfit 64
2017.07.27 18:22:33.684 Seascape (SBRF-9.17,M15)        ИТОГО 1.671875
 
Vitaly Muzichenko:

これが、スクリプトに表示された内容です。

ビタリ、自分で考えろ...。原理は3ルーブルより簡単...。

PositionGetDouble(POSITION_PROFIT);

ポジションの利益を預入通貨 建てで返します。この値を始値と現在値とのポイント数で割ると、入金通貨でのポイント値が得られる...。あとは、オープニングからtpまでのpips数を掛け合わせれば完了です...。しかし、私はこのために新しいアカウントを登録することができないし、怠け者なので、自分で解決する必要があります。しかし、ちょうどあなたが得るべきであるかを知らない、どのように結果が正しいかどうかを知ることができますか?いくつかの値を追加で印刷しないとわからないかもしれません。何をもって節とするのか?どうだろう、何らかの形で考慮する必要があるのかもしれない。それとも、標準契約の大きさが何らかの形で考慮されているのか...。どうだろう。

 

グレイグラフの見方


通常画像モード時


 

MT4では、チャート上でマウスをポイントすると、それがどのポイントであるかがわかりますが、ここでは画像が静止しており、醜いです。

 
特定の指標(profit/loss/fv)による最適化をプロット するにはどうすればよいですか?
 
皆さん、こんにちは。問題があります。MQL5口座に資金をアップロードし、MetaTrader5アプリケーションをダウンロードしましたが、資金を送金して取引を開始することができません。助けてほしい。
 
Minora125:
皆さん、こんにちは。問題が発生しました。MQL5口座に資金をアップロードし、MetaTrader5アプリケーションをダウンロードしましたが、資金を送金して取引を開始することができません。助けてほしい。

MQL5は証券会社ではないので、実際の口座で取引することはできません。送金されたお金で、フリーランス、マーケット、クラウドなどのサービスを利用することができます。

サービスデスク(プロフィールにリンクがあります)に、誤って送金されたとして返金を依頼 します。

 

テスターでパスした後、チャートが取引で開くのですが、これをオフにするにはどうしたらいいですか?

理由: