エラー、バグ、質問 - ページ 73

 
Swan:

またはオーバーライドが必要ない場合、またはポジションシンボルによるアスク、ビッドを要求する場合。

PositionGetSymbol機能は、次の作業のためのポジションを自動的に選択します。

実際には、PositionGetSymbolは順次選択、PositionSelectは直接選択を提供します。

Документация по MQL5: Торговые функции / PositionGetSymbol
Документация по MQL5: Торговые функции / PositionGetSymbol
  • www.mql5.com
Торговые функции / PositionGetSymbol - Документация по MQL5
 
Swan:

を検索する必要がなかったり、ポジション記号でアスク、ビッド

その結果、PositionGetInteger(POSITION_TYPE)はPositionSelectで 選択されずに使用されることが判明しました。というのは、実は(Slavaに念を押されたように)良くないことなのですが...。:)

ストリングス

PositionGetSymbol機能は、次の作業のためのポジションを自動的に選択します。

実際には、PositionGetSymbolは順次選択、PositionSelectは直接選択を提供します。

これに基づいて、ループの中で正確に PositionGetSymbolを 適用する必要があり、その後、他のすべてに興味を持つようになりました...。
 

まあ、テレパシーを使うなら、if(PositionSelect(Symbol()))をループの代わりに入れなければならないのですが :)

LevelProfit-LevelWLossがSymbolInfoInteger(Symbol,SYMBOL_TRADE_STOPS_LEVEL)よりも小さくないか確認した方が良いだろう。

そして、その倍率は間違って比較されてしまう...。

それ以外は動作するはずです)


ps: よくわかりませんが、sl/tpの修正では、deviation>0は何も良いことはありません。

 

識別子OBJPROP_TIMEを 持つObjectGetInteger() が正しく動作しない

エラーを再現するために、"1 "という名前の "Rectangle "オブジェクトを作成します。

以下のスクリプトを実行すると、新しく作成した矩形 "1" の 4 つのアンカー座標が表示されます。

void OnStart()
{ 
  Comment(ObjectGetDouble(0,"1",OBJPROP_PRICE,0),"   ",
          StringToTime   (IntegerToString(ObjectGetInteger(0,"1",OBJPROP_TIME, 0))),"\n",
          
          ObjectGetDouble(0,"1",OBJPROP_PRICE,1),"   ",
          StringToTime   (IntegerToString(ObjectGetInteger(0,"1",OBJPROP_TIME, 1))));

}

価格座標は正しく定義されているが、時間座標が正しく定義されていないことがわかる。


Документация по MQL5: Графические объекты / ObjectGetInteger
Документация по MQL5: Графические объекты / ObjectGetInteger
  • www.mql5.com
Графические объекты / ObjectGetInteger - Документация по MQL5
 
joo:

識別子OBJPROP_TIMEを 持つObjectGetInteger() が正しく動作しない

エラーを再現するために、"1 "という名前の "Rectangle "オブジェクトを作成します。

以下のスクリプトを実行すると、作成したばかりの矩形 "1" の 4 つのアンカー座標が表示されます。

価格座標は正しく定義されているが、時間座標が正しく定義されていないことがわかる。



違いを実感してください

  Comment(ObjectGetDouble(0,"1",OBJPROP_PRICE,0),"   ",
          datetime(ObjectGetInteger(0,"1",OBJPROP_TIME, 0)),"\n",
          
          ObjectGetDouble(0,"1",OBJPROP_PRICE,1),"   ",
          datetime(ObjectGetInteger(0,"1",OBJPROP_TIME, 1)));
 
joo:

識別子OBJPROP_TIMEを 持つObjectGetInteger() が正しく動作しない

エラーを再現するために、"1 "という名前の "Rectangle "オブジェクトを作成します。

以下のスクリプトを実行すると、新しく作成した矩形 "1" の 4 つのアンカー座標が表示されます。

価格座標は正しく定義されているが、時間座標が正しく定義されていないことがわかる。



これがその台本です。

//+------------------------------------------------------------------+
//|                                                       123123.mq5 |
//|                                  2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string msg="";
//---
   msg+=DoubleToString(ObjectGetDouble(ChartID(),"123456",OBJPROP_PRICE,0),_Digits)+" "+
        TimeToString(ObjectGetInteger(ChartID(),"123456",OBJPROP_TIME,0),TIME_DATE|TIME_MINUTES)+"\n";
   msg+=DoubleToString(ObjectGetDouble(ChartID(),"123456",OBJPROP_PRICE,1),_Digits)+" "+
        TimeToString(ObjectGetInteger(ChartID(),"123456",OBJPROP_TIME,1),TIME_DATE|TIME_MINUTES)+"\n";
   Comment(msg);
  }
//+------------------------------------------------------------------+

そして、その結果がこれです。

 
stringo:

違いを実感してください

ありがとうございます、違いを実感しています。

値の種類を明示的にdatetimeに設定した場合

データ変換を 利用しました。

しかし、それでは構成が

StringToTime   (IntegerToString(

が正しく動作しない?

 
joo:

ありがとうございます、違いを実感しています。

値の種類を明示的にdatetimeに設定した場合

とデータ変換を利用しました。

しかし、それでは構成が

正常に動作していないのでしょうか?

間違っているわけではありません。これらの行為は、まさに不要な行為です。

StringToTime()関数の ヘルプをご覧になれば、なぜ結果が正しくないのかがおわかりになると思います。

Документация по MQL5: Преобразование данных / StringToTime
Документация по MQL5: Преобразование данных / StringToTime
  • www.mql5.com
Преобразование данных / StringToTime - Документация по MQL5
 
joo:

ありがとうございます、違いを実感しています。

値の種類を明示的にdatetimeに設定した場合

とデータ変換を利用しました。

しかし、それでは構成が

が正しく動作しない?

そうではありません。IntegerToStringを 変換すると「12345612345」型の文字列が入力され、StringToTimeを変換すると「2010.07.29 08:10」型の文字列が入力されるはずです。

しかし、あなたは私たちの間違いを教えてくれました。あなたの場合、1970.01.01 00:00という日付を返し、last_errorを設定する必要がありました。

 
stringo:

そうではありません。IntegerToStringを変換すると「12345612345」という型の文字列を受け取り、StringToTimeを変換すると「2010.07.29 08:10」という書式の文字列を受け取るはずです。

しかし、あなたは私たちの間違いを教えてくれました。あなたの場合、1970.01.01 00:00という日付を返し、last_errorを設定する必要がありました。

では、私のメッセージは無駄ではない、ということですね。