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

 
sergey1294:
まず整数を割り算して整数を得る。型変換について https://www.mql5.com/ru/docs/basis/types/casting を読む。
確かにそうですが、以前はそうではありませんでした。悩むこともなかった。
 
ivandurak:
確かにそうですが、以前はそうではありませんでした。悩むこともなかった。

昔は4つだったのですか?5つでは最初からそうでしたし、これからもそうでしょう(1/2=0; 1./2.=0.5).

重複を明示的に指定したい場合は、ポイントを追加してください。

// Script program start function                                    
void OnStart()
  {
   int i;
   double   a,b ;
   for(i=0;i<10;i++)
      {
         a=1./2.;
         b=1./2.;
         Print("a=",a," ","b=",b) ;
      }   
  }
 
Urain:

昔は4つだったんですか? 最初から5つでしたから。

明示的に重複を指定したい場合は、フルストップを付けてください。

これは、4でも5でもなかったことです。

整数の演算は(純粋な整数定数の形であっても)曖昧さがない。

 

テスターとデモ口座で齟齬が発生しました。

取引 成立後、取引サーバーのレスポンス構造上、価格フィールドは異なる形で記入されます。デモ口座では、価格フィールド(取引が行われた価格)がすべてそのまま表示されますが、テスターではこのフィールドは0のままです。

テストとして、1ティックごとに購入し、ログにリターンコードと価格を表示するExpert Advisorをスケッチしています。

//+------------------------------------------------------------------+
//|                                                  test-expert.mq5 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
         MqlTradeRequest trade_request;
         MqlTradeResult  trade_result;
         ZeroMemory(trade_request);
         ZeroMemory(trade_result);
         trade_request.action=TRADE_ACTION_DEAL; 
         trade_request.volume=0.1; 
         trade_request.type=ORDER_TYPE_BUY; 
         trade_request.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK); 
         trade_request.symbol=_Symbol;
         OrderSend(trade_request,trade_result);
         Print(trade_result.retcode, "купили по цене ",trade_result.price);
  }
//+------------------------------------------------------------------+

デモ口座で実行すると、ログに以下の文字列が含まれます。

2012.01.16 12:48:29 test-expert (EURUSD,H1) 10009 1.266で買いました。

また、ビジュアライザーで実行すると、これらの:

2012.01.16 12:49:12 2011.12.30 00:00:11 10009 買値0.0

これはバグですか、バグですか、それとも私が何か間違ったことをしたのですか?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 

テスターで前史を管理する方法はありますか?

2011年1月1日から今日までの1時間のテストでは、6000本のバーをロードするだけです。設定では、-最大バー数無制限。履歴はすべて1971年から分単位で読み込まれます。

 

この疑問は、思いがけず湧いてきました。

Expert Advisor でiCustom を 通してインジケータをロードすると、インジケータはロードされて正常に動作しますが、OnTimer 関数が呼び出されないという問題があります。

こんなはずじゃなかったのに...それともバグ?

同じインジケータをチャートに貼り付けただけでは、問題なく動作します。

574を構築。

 
Dima_S:

この疑問は、思いがけず湧いてきました。

Expert Advisor でiCustom を 通してインジケータをロードすると、インジケータはロードされて正常に動作しますが、OnTimer 関数が呼び出されないという問題があります。

このようになるはずなのか、それともバグなのか?

そのように設計されているのです。
 
antt:
そういうことなんです。
非常に独創的)
 
Dima_S:
非常に独創的)

タイマーイベントは、グラフに対して生成され、そこからグラフ上で動作するプログラムに対して(グラフの上に投げられる)生成されます。これがイデオロギーである「プログラムエグゼキューション」です。

クライアント端末は、生成されたイベントを適切なオープンチャートに送信する。また、チャート(チャートイベント)やmql5-program(カスタムイベント)によってもイベントを生成することができます。チャートのCHART_EVENT_OBJECT_CREATE 及びCHART_EVENT_OBJECT_DELETE プロパティを設定することで、チャート上のグラフィカル オブジェクトの作成及び削除のイベント生成を有効/無効にすることができます。各mql5-programと各チャートは独自のイベントキューを持ち、そこにすべての新しいイベントが保存されます。

プログラムは、実行中のチャートからのイベントのみを受信します。すべてのイベントは、受信した順番に次々と処理されます。

そのため、Expert Advisorから呼び出されるインジケータは、タイマイベントを受信しません。Expert AdvisorからChartIndicatorAdd 関数を使ってチャートにインジケータを適用してみてください、何か変化がありますか?

 
Dima_S:
非常に独創的)
もともとエキスパート向けのイベントであり、本来はチャートイベントである。インジケータでのイベントの使用は後から追加されたもので、インジケータがチャートに追加されている必要があるという制約があります。