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

 

素朴な疑問です。

このようにサイクルを終了させることは可能ですか?それとも、そのようなシンプルさは自由ではないのでしょうか?

while(1)
{
 .........
 if(............ ) return;
 ..........
}
 

もう1つ質問です。

以下のフィールドを持つMqlTick構造 体があります。

longtime_msc;// 価格の最終更新時刻(ミリ秒単位

私が理解する限り、time_mscは 1970年からのミリ秒数を格納して います。

CopyTick関数は、以下のパラメータを持ちます。

ulongfrom=0,//目盛りが要求された時点からの日付

ヘルプでは、"Date from ticks are requested "と明記されています。1970年01月01日からのミリ秒単位で指定".

注意喚起の質問です。

MqlTick構造体と関数CopyTickのパラメータで異なるデータ型が使用されているのはなぜですか?何しろ、2人とも1970年からの時間を記憶しているのですから。

 
pivomoe:

もう1つ質問です。

以下のフィールドを持つMqlTick構造 体があります。

longtime_msc;// 価格の最終更新時刻(ミリ秒単位

私が理解する限り、time_mscは 1970年からのミリ秒数を格納して います。

CopyTick関数は、以下のパラメータを持ちます。

ulongfrom=0,//目盛りが要求された時点からの日付

ヘルプでは、"Date from ticks are requested "と明記されています。1970年01月01日からのミリ秒単位で指定".

注意喚起の質問です。

MqlTick構造体と関数CopyTickのパラメータで異なるデータ型が使用されているのはなぜですか?何しろ、2人とも1970年からの時間を記憶しているのですから。

ulong - 符号なし長方形型

 
それは分かっています。なぜ、一方では符号付き型、他方では符号なし型が使われるのでしょうか?やはり、ケースは似ていますね。
 
pivomoe:

素朴な疑問です。

このようにサイクルを終了させることは可能ですか?それとも、そのようなシンプルさは自由ではないのでしょうか?

何が問題なのか?条件によって終了する。ループを抜けるだけで、returnではなくbreakにしたい場合のみ

 
Alexey Viktorov:

何か気になることはありますか?条件により実行を終了する。ループを抜けるだけで、returnではなくbreakにしたい場合のみ

このようなリターンループが終了した後のメモリ消費量がわかりません。
 
pivomoe:
このようなreturnomの終了後のメモリ消費量がわからないのですが、どうなのでしょうか?

なぜ私が?無意味なことに首を突っ込むな。このような出口があると、仕事がはかどります。

 

マーケット経由でダウンロードした無料のユーティリティ(インジケーター)をターミナルで手放すにはどうしたらよいですか?アンインストールしても解決しない。長い間アンインストールしているのに、製品のアップデートに関するメッセージが出続ける。

 

皆さん、状況を理解するのを助けてください。Strategy Testerでは、デモ 口座でもエラーや問題なくすべてが進みますが、マーケットでEAをロードすると、Autotesterはこう言います。

2016.04.01 00:00:12 failed instant sell 0.10 EURUSD at 1.13780 sl: 1.14030 tp: 1.13030 [無効なボリューム].
2016.04.01 00:00:24 failed instant sell 0.10 EURUSD at 1.13779 sl: 1.14029 tp: 1.13029 [Invalid volume].
2016.04.01 00:00:59 failed instant sell 0.10 EURUSD at 1.13782 sl: 1.14032 tp: 1.13032 [無効なボリューム].
2016.04.01 00:01:00 failed instant sell 0.10 EURUSD at 1.13793 sl: 1.14043 tp: 1.13043 [Invalid volume].
2016.04.01 00:01:08 failed instant sell 0.10 EURUSD at 1.13783 sl: 1.14033 tp: 1.13033 [無効なボリューム].
2016.04.01 00:01:17 failed instant sell 0.10 EURUSD at 1.13784 sl: 1.14034 tp: 1.13034 [無効なボリューム].
2016.04.01 00:01:25 failed instant sell 0.10 EURUSD at 1.13774 sl: 1.14024 tp: 1.13024 [無効なボリューム].
2016.04.01 00:01:34 failed instant sell 0.10 EURUSD at 1.13776 sl: 1.14026 tp: 1.13026 [無効ボリューム].
2016.04.01 00:01:59 failed instant sell 0.10 EURUSD at 1.13778 sl: 1.14028 tp: 1.13028 [Invalid volume].
2016.04.01 00:02:00 failed instant sell 0.10 EURUSD at 1.13778 sl: 1.14028 tp: 1.13028 [Invalid volume].
2016.04.01 00:02:08 failed instant sell 0.10 EURUSD at 1.13776 sl: 1.14026 tp: 1.13026 [無効ボリューム].

関数コードを以下に示します。

OpenPos(NormalizeDouble(Lot,2), NormalizeDouble(Bid,_Digits), NormalizeDouble(_sl,_Digits),NormalizeDouble(_tp,_Digits),ORDER_TYPE_SELL,MagicSell,Comm);
void OpenPos(const double volume,const double price, const double stop, const double take, const ENUM_ORDER_TYPE o_type, const int magic,const string coment=NULL)
{
   MqlTradeRequest request={0};
   MqlTradeResult result={0};
   
   string t=(o_type==ORDER_TYPE_BUY)?"Buy":"Sell";
   
   ZeroMemory(request);
   ZeroMemory(result);
   
   request.action=TRADE_ACTION_DEAL;
   request.symbol=Symbol();
   request.volume=volume;
   request.type=o_type;
   request.magic=magic;
   request.price=price;
   request.sl=stop;
   request.tp=take;
   request.comment=coment;
   
   if(IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_FOK))
      request.type_filling=ORDER_FILLING_FOK;
   else if(IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_IOC))
      request.type_filling=ORDER_FILLING_IOC;
   else
      request.type_filling=ORDER_FILLING_RETURN;
   
   if(!OrderSend(request,result))
      PrintFormat("Can't open position %s error %i",t,GetLastError());
}
 
Andrii Djola:

この状況を理解するのを助けてください。Strategy Testerでは私のEAはエラーや問題なく動作し、デモ口座に ロードしても問題はありませんが、マーケットでEAをロードすると、Autotesterは次のように書き込みます。

OrderCheck の結果とその全構造を表示する。OrderSendも同様にしてください。

10種類の取引サーバーにデモ口座を設定。そして、そこであなたのコードを試してみてください。多くの場合、取引サーバーの特定の機能が考慮されていないため、マーケットで確認すると再現されます。

LastErrorの出力も忘れずに。これらを組み合わせることで、エラーの原因を非常に早く突き止めることができます。

理由: