MetaTrader 5プラットフォームアップデートビルド3280: トレーダーのフィードバックに基づく改善と修正 - ページ 2

 

改善策を提案させてください ...その内容は以下の通りです。以下のスクリプトコードを実行することで

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() 
{ 
  
        ENUM_TIMEFRAMES time = PERIOD_D1;
        string szSymbol = "EURUSD";
        long id = ChartOpen(szSymbol, time);
        ChartRedraw(id);

        ChartIndicatorAdd(id, 0, iCustom(szSymbol, time, "Media Movel.ex5"));
}

をクリックすると、EURUSDのシンボルで新しいウィンドウが開き、新しく作成されたウィンドウにカスタムインジケータを追加することができます。PERFECT...しかし、同じスクリプトを以下のようにサービスにすると、このようになります。

#property service
//+------------------------------------------------------------------+
void OnStart()
{
        ENUM_TIMEFRAMES time = PERIOD_D1;
        string szSymbol = "EURUSD";
        long id = ChartOpen(szSymbol, time);
        ChartRedraw(id);

        ChartIndicatorAdd(id, 0, iCustom(szSymbol, time, "Media Movel.ex5"));
}

の場合、動作はすでに異なっており、ウィンドウは期待通りに作成されますが、ウィンドウIDの値を持っていても、 ウィンドウ内にインジケータを追加 することはできず、ウィンドウIDの値を返すことになります。 4802エラー....

サービスがインジケータを追加できれば非常に良いのですが、例えばEAに負荷をかけずに、いくつかの余分な仕事をするためにサービスを使用することができるので、これを行うことができなかった場合でも、誰が知っているかの提案は、サービスがスクリプトを実行できるように、とにかくそれは多くの助けになる...

そして、もし悪用するほどでなければ、MQL5 言語に EXIT() 再帰的なコードが失敗を生成したときに終了する迅速な方法を可能にするために、しかし、突然の終了を持つのではなく、我々はエラーを処理し、EXIT() 呼び出しを介して完全にプログラムの実行を終了することができます... 我々はEAを終了するExpertRemove()呼び出し時に何が起こるかと同じように...とにかく注目ありがとうございます.😁👍

 

MT5を/portbaleモード用に何度かインストールしています。現在、3つが並行して稼働しており、2つはリリースチャンネルで取引中、1つはベータチャンネルで取引中です。

残念ながら、新しいアップデートのために今すぐアップデートするか、後でアップデートするかを尋ねるウィンドウには、どのバージョンで アップデートできるかは表示されません。リリースまたはベータ版。


このウィンドウには、「リリースアップデート(またはベータ版アップデート)をダウンロードしました」とだけ表示されればよいのです。タイムリーな ..."

こうすることで、ユーザーは、FXが開いている平日に更新したいのか、週末だけ更新したいのかがわかるようになります。

また、リリース・アップデートと ベータ・アップデートを 色で区別することもできるかもしれません。そうすることで、エラーを回避できるかもしれません。

 
MetaQuotes:

2022年4月29日(金)、MetaTrader 5プラットフォームのアップデート版がリリースされる予定です。本書では、Ver.3270 発行後にいただいたご意見をもとに、若干の追加・訂正を行いました。

アップデートの内容は以下の通りです。

  1. ターミナル:オープンオーダーとポジションのコンテキストメニューで、標準のトレーリングストップレベルの充填を修正しました。
  2. ターミナル:ユーザーインターフェースの翻訳を更新しました。
  3. クロスログを修正しました。

このアップデートは、Live Updateシステムを通じて提供される予定です。

このような「小さな」修正があるので、次のリリースにこのバグの修正を含めるようお願いします:MT5プラットフォームの標準機能を使用して、Time$Saleソースシンボルからカスタムシンボルにティックをコピーする際に、ティックのボリュームに関する情報を削除することです。

このバグは、MT5で構築されたカスタムの「コンティニュアス」先物で、取引所のティック履歴で動作するインディケータを適用することができないという事実につながるからです!これは小さいですが、取引所の商品を扱う人にとっては非常に迷惑なバグです。

コンティニュアスNQ

 
このコンパイラの警告は 冗長ではありませんか?
void OnStart()
{
  Print(DEAL_REASON_TP == ORDER_REASON_TP); // implicit conversion from 'enum ENUM_ORDER_REASON' to 'enum ENUM_DEAL_REASON'
}
 

enumの変換でコンパイラーエラーが発生しました。

ENUM_DEAL_REASON Reason() { return(DEAL_REASON_CLIENT); }

void OnStart()
{
  ENUM_ORDER_REASON Reason1 = Reason();                    // 'Reason' - cannot convert enum
  ENUM_ORDER_REASON Reason2 = (ENUM_ORDER_REASON)Reason(); // OK
}

検索文字列オシブタ040

 
fxsaber #:

enum変換でコンパイラーエラー。

検索文字列オシブタ040

エラーはないようです。各列挙体はそれ自身の型である。一方は、明示的な変換によってのみ別のものにキャストすることができます。暗黙の了解でコンパイラがクラッシュします。

 
Stanislav Korotky #:

エラーは出ていないようです。各列挙体はそれ自身の型である。一方は、明示的な変換によってのみ別のものにキャストすることができます。コンパイラは暗黙の了解で悪態をつく。

Warningの代わりにError。

'Reason' - cannot convert enum
1 errors, 0 warnings            
 
fxsaber #:

Warningの代わりにError。

それがどうした?

 
Stanislav Korotky #:

それがどうした?

じゃあ、そんなコードはコンパイルしないことにしよう。

void OnStart()
{
  double d = 0;
  int i = d;
}
 
fxsaber #:

Warningの代わりにError。

Documentationによると:enumは、ある限定されたデータの集合を指します。この意味で、比較と代入は根本的に異なるものではなく、どちらの場合もWarningかErrorのどちらかが発生しなければならない。また、比較できるのに、割り当てができないというのはナンセンスです

理由: