"ダミー "からの質問 - ページ 205

 
Renat:

Metaeditorで言語を変更した後、再起動を行いましたか?

確認しよう。

mql5_russian.chmをロードし、MetaEditor-eにロシア語を入れ、リロードすると、ヘルプがロシア語で表示され、すべて正常に動作しました。
 

位置を確認するために、このようなコードを書きました。

CPositionInfo myposition;

if (myposition.Select(_Symbol))
{
   double Open_position=NormalizeDouble(myposition.PriceOpen(),_Digits);
   double SL_position  =NormalizeDouble(myposition.StopLoss(),_Digits);
   double TP_position  =NormalizeDouble(myposition.TakeProfit(),_Digits);
   Comment(" Open_position=",Open_position,"\n",
           " SL_position=",SL_position,"\n",
           " TP_position=",TP_position);
}

しかし、コメントではなぜか値が小数点以下4桁で表示されます。Digitsの代わりに5文字、3文字、4文字とする。

 
paladin800: なぜかコメントで数値が小数点以下4桁で表示される。Digits の代わりに 5 still 4 digits、3 - 3 digits を入れてください。
また、myposition.PriceOpen()を出力しただけでは、何が表示されるのでしょうか?
 
paladin800:

位置を確認するために、このようなコードを書きました。

しかし、コメントではなぜか値が小数点以下4桁で表示されます。Digitsの代わりに5文字、3文字、4文字とする。

おそらくDoubleToString()関数が必要なのでしょう。

 
paladin800:

位置を確認するために、このようなコードを書きました。

しかし、コメントではなぜか値が小数点以下4桁で表示されます。桁の代わりに5桁、3桁の代わりに4桁とする。


コメントで端数を出力する場合の書式は以下の通りです。ダブりを文字列型に変換してコメントで出力する。
 
初期口座残高の 設定方法を教えてください。口座の総利益に応じてロットサイズを設定したいのですが。では、どうすれば正しく初期残高を決定できるのでしょうか。
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
tor4en: 初期口座残高は どのように決定すればよいですか?口座の総利益額に応じてロットサイズを指定したいのですが。では、この初期バランスを正しく決定するにはどうしたらよいのでしょうか。

預け入れには、記録が必要です

取引状態

ステータス入力のサイン

これが、見るべき方向です。

 

myposition.Type()で迷っています。確認するために次のことをしました。

CPositionInfo myposition;
// ---
string classtype="no position";
string functype="no position";

if (PositionSelect(_Symbol))
{  // --- section SELL
   if (myposition.Type()==POSITION_TYPE_SELL)
       classtype="SELL";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
       functype="SELL";
   // --- section BUY
   if (myposition.Type()==POSITION_TYPE_BUY)
       classtype="BUY";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
       functype="BUY";
}
Comment ("classtype=",classtype,", functype=",functype);

可視化でテストした結果は以下の通りです。
1) 位置がない: classtype=no position, functype=no position // 予想通りです。
2) 売りポジションがある:classtype=BUY, functype=SELL // classtypeがポジションの方向を誤って 決定した。
3) 買いポジションがある:classtype=BUY, functype=BUY // 当然のことだが

if (PositionSelect(_Symbol))の代わりにif (myposition.Select(_Symbol)) を入れてみましたが、結果は同じです。もしかして、myposition.Type()の書き方を変えれば、売り方向を正しく判断できるのでは?

 
paladin800:

myposition.Type()で迷っています。確認するために次のことをしました。

可視化でテストすると、以下のような結果になります。
1) 位置がない: classtype=no position, functype=no position // 必要に応じて。
2) 売りポジションがある:classtype=BUY, functype=SELL // classtypeが誤ってポジションの方向を 決定してしまった。
3) 買いポジションがある:classtype=BUY, functype=BUY // 当然のことだが

if (PositionSelect(_Symbol))の代わりにif (myposition.Select(_Symbol)) を入れてみましたが、結果は同じです。もしかしたら、myposition.Type()は、売り方向を正しく判断するために、別の書き方をすべきなのでしょうか?

CPositionInfoクラスの「X線あり」をよく見ると、(PositionType()メソッドと違って)Type()メソッドは位置の種類を返さないことに気がつくかもしれません。

   CPositionInfo myposition;
// ---
   string classtype="no position";
   string functype="no position";

   if(PositionSelect(_Symbol))
     {  // --- section SELL
      if(myposition.PositionType()==POSITION_TYPE_SELL)
         classtype="SELL";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
         functype="SELL";
      // --- section BUY
      if(myposition.PositionType()==POSITION_TYPE_BUY)
         classtype="BUY";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
         functype="BUY";
     }
   Print("classtype=",classtype,", functype=",functype);
  }
 
uncleVic:

CPositionInfo "X-rayed" クラスをよく見ると、Type() メソッドは(PositionType() メソッドとは異なり)位置の種類を返さないことに気づきます。

ありがとうございました。あなたのチップでうまくいきました!EAを書くときの標準ライブラリートレードクラスの使い方という 記事を参考にさせていただきましたが、そこの「1.6 CPositionInfoクラス」にmyposition.Type()があり、おそらく修正が必要なのでしょう。