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

 

2019.09.09 18:03:27.865 ターミナル MetaTrader 5 x64 build 2138 開始 (MetaQuotes Software Corp.)
2019.09.09 18:03:27.866 ターミナル Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i7-3770K @ 3.50GHz, Memory: 20544 / 24520 Mb, Disk: 145 / 237 Gb, GMT+2(日本時間
2019.09.09 18:03:27.866 Terminal C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

いつもの私のMEの風景。

チューニングされたME

仕事が終わってから閉じる、閉じ方次第で何も変わらない。
次にMEを開くと、こんな感じです。

アンコンフィギュレーションME

表示 - ツールバー 全てを設定することができます。

シャットダウンしてもすべてが繰り返される。


ビルド
 
User_mt5:

2019.09.09 18:03:27.865 ターミナル MetaTrader 5 x64 build 2138 開始 (MetaQuotes Software Corp.)
2019.09.09 18:03:27.866 ターミナル Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i7-3770K @ 3.50GHz, Memory: 20544 / 24520 Mb, Disk: 145 / 237 Gb, GMT+2(日本時間
2019.09.09 18:03:27.866 Terminal C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

いつもの私のMEの風景。

仕事が終わってから閉じる、閉じ方次第で何も変わらない。
次にMEを開くと、こんな感じです。

表示 - ツールバー 全てを設定することができます。

シャットダウンしてもすべてが繰り返される。


ここでF12キーを押します

 
User_mt5:

2019.09.09 18:03:27.865 ターミナル MetaTrader 5 x64 build 2138 開始 (MetaQuotes Software Corp.)
2019.09.09 18:03:27.866 ターミナル Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i7-3770K @ 3.50GHz, Memory: 20544 / 24520 Mb, Disk: 145 / 237 Gb, GMT+2(日本時間
2019.09.09 18:03:27.866 Terminal C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

いつもの私のMEの風景。

仕事が終わってから閉じる、閉じ方次第で何も変わらない。
次にMEを開くと、こんな感じです。

表示 - ツールバー 全てを設定することができます。

スイッチを切った後は、すべてが同じことの繰り返しです。


Data Folderを開き、"Folder "から "MetaEditor "を閉じて、"MetaEditor.ini " 削除してください。

 
Artyom Trishkin:

ここでF12キーを押します

これが功を奏した。

ありがとうございました。

 
Vladimir Karputov:

Data Folderを開いて、"foreign "をクリックし、ターミナルとMetaEditorを終了して、metaeditor.iniを削除して ください。

F12が効いたので、他には何も必要ありません。

ありがとうございました。

 
User_mt5:

F12が効いたので、他には何も必要ありません。

いつもありがとうございます。

すごい。MetaEditor 5のF12(全画面展開)は知りませんでした!

 
Vladimir Karputov:

具体的に何を手に入れたいのか?最後の取引の時刻を知りたいですか(取引の種類は「市場外」)?それとも、取引履歴の中でポジションを決済した時刻を知る必要があるのでしょうか?

取引履歴で最後にポジションを決済した時刻を知る必要があります。

私が書いたコードはMQL5で動作します、私はライブラリfxsaber ワークスコードmt4を引っ掛けましたが、それでも、疑問が残る、私はMQL5でOrderCloseTime() 関数を作ることができないのでしょうか? しかし、あきらめたほうがいい。それよりも、開発者の方に質問があります。答える必要はない 枝葉末節の歴史は読んでいるこれまで理解できないことが多かったので、そのうちMQL5という言語に対する考え方も見直すかもしれません。

 
Pul-Adgi Mo-UlStan:

取引履歴で最後に決済したポジションの時刻を知りたいのですが。

書いたコードはMQL5でも動きます、fxsaber ライブラリを繋いだものの、mt4のコードはまだ動きます、しかし疑問が残ります、MQL5でOrderCloseTime() の関数を作れないのでしょうか?しかし、あきらめたほうがいい。それよりも、開発者の方に質問があります。答える必要はない 枝葉末節の歴史は読んでいるこれまで理解できないことが多かったので、そのうちMQL5という言語に対する考え方も見直すかもしれません。

単純なことです。まずは読んでみて、それから結論を出せばいいんです :)

 
Pul-Adgi Mo-UlStan:

取引履歴で最後に決済したポジションの時刻を知りたいのですが。

書いたコードはMQL5でも動きます、fxsaber ライブラリを繋いだものの、mt4のコードはまだ動きます、しかし疑問が残ります、MQL5でOrderCloseTime() の関数を作れないのでしょうか?しかし、あきらめたほうがいい。それよりも、開発者の方に質問があります。答える必要はない 枝葉末節の歴史は読んでいるまだ理解できないことが多いので、そのうちMQL5言語に対する考え方も見直すかもしれません。

非常にシンプルな方法を使用します(特に、99%のヘッジ口座の取引タイプは「exit from market」であるため、これはポジションのクローズとなります)。

オンラインキャプチャ取引TRADE_TRANSACTION_DEAL_ADD- 取引を履歴に追加、BUYまたはSELL であることをチェック、マーケットエグジット取引であることをチェックDEAL_ENTRY_OUT

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- get transaction type as enumeration value
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_ticket       =0;
      long     deal_order        =0;
      long     deal_time         =0;
      long     deal_time_msc     =0;
      long     deal_type         =-1;
      long     deal_entry        =-1;
      long     deal_magic        =0;
      long     deal_reason       =-1;
      long     deal_position_id  =0;
      double   deal_volume       =0.0;
      double   deal_price        =0.0;
      double   deal_commission   =0.0;
      double   deal_swap         =0.0;
      double   deal_profit       =0.0;
      string   deal_symbol       ="";
      string   deal_comment      ="";
      string   deal_external_id  ="";
      if(HistoryDealSelect(trans.deal))
        {
         deal_ticket       =HistoryDealGetInteger(trans.deal,DEAL_TICKET);
         deal_order        =HistoryDealGetInteger(trans.deal,DEAL_ORDER);
         deal_time         =HistoryDealGetInteger(trans.deal,DEAL_TIME);
         deal_time_msc     =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC);
         deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_magic        =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_reason       =HistoryDealGetInteger(trans.deal,DEAL_REASON);
         deal_position_id  =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID);

         deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
         deal_price        =HistoryDealGetDouble(trans.deal,DEAL_PRICE);
         deal_commission   =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION);
         deal_swap         =HistoryDealGetDouble(trans.deal,DEAL_SWAP);
         deal_profit       =HistoryDealGetDouble(trans.deal,DEAL_PROFIT);

         deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_comment      =HistoryDealGetString(trans.deal,DEAL_COMMENT);
         deal_external_id  =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID);
        }
      else
         return;
      ENUM_DEAL_ENTRY enum_deal_entry=(ENUM_DEAL_ENTRY)deal_entry;
      if(deal_symbol==ИМЯ ВАШЕГО СИМВОЛА && deal_magic==НОМЕР ВАШЕГО MAGIC)
        {
         if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
           {
            if(deal_entry==DEAL_ENTRY_OUT)
              {
               *** ***
              }
           }
        }
     }
  }
 

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

初心者の方からの質問 MQL5 MT5 MetaTrader 5

MrBrooklinさん 2019.09.09 09:50

皆さんこんにちは!そして素晴らしい利益を得てください。

VQL5ウィザードを使用して、簡単なExpert Advisorを生成しました。保留中の注文の有効期限(バー単位)が機能しない理由を教えてください。Signal_Expirationの値を1~1000の間で任意に設定しましたが、保留中の注文はまだ1つのバー内にしか存在しません。パラメータ設定も添付します。

テストには、メタトレーダー5ターミナル、ビルド2136のデモ口座を使用しています。

敬具 ウラジミール

//+------------------------------------------------------------------+
//|                                                EA_MasterMQL5.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Include                                                          |
//+------------------------------------------------------------------+
#include <Expert\Expert.mqh>
//--- available signals
#include <Expert\Signal\SignalITF.mqh>
//--- available trailing
#include <Expert\Trailing\TrailingNone.mqh>
//--- available money management
#include <Expert\Money\MoneyFixedRisk.mqh>
//+------------------------------------------------------------------+
//| Inputs                                                           |
//+------------------------------------------------------------------+
//--- inputs for expert
input string Expert_Title            ="EA_MB_MasterMQL5"; // Document name
ulong        Expert_MagicNumber      =1473;               //
bool         Expert_EveryTick        =false;              //
//--- inputs for main signal
input int    Signal_ThresholdOpen    =0;                 // Signal threshold value to open [0...100]
input int    Signal_ThresholdClose   =0;                 // Signal threshold value to close [0...100]
input double Signal_PriceLevel       =0.0;                // Price level to execute a deal
input double Signal_StopLevel        =50.0;               // Stop Loss level (in points)
input double Signal_TakeLevel        =50.0;               // Take Profit level (in points)
input int    Signal_Expiration       =4;                  // Expiration of pending orders (in bars)
input int    Signal_ITF_GoodHourOfDay=-1;                 // IntradayTimeFilter(-1,...) Good hour
input int    Signal_ITF_BadHoursOfDay=8389119;            // IntradayTimeFilter(-1,...) Bad hours (bit-map)
input int    Signal_ITF_GoodDayOfWeek=-1;                 // IntradayTimeFilter(-1,...) Good day of week
input int    Signal_ITF_BadDaysOfWeek=0;                  // IntradayTimeFilter(-1,...) Bad days of week (bit-map)
input double Signal_ITF_Weight       =1.0;                // IntradayTimeFilter(-1,...) Weight [0...1.0]
//--- inputs for money
input double Money_FixRisk_Percent   =10.0;               // Risk percentage
//+------------------------------------------------------------------+
//| Global expert object                                             |
//+------------------------------------------------------------------+
CExpert ExtExpert;
//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Initializing expert
   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing expert");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(Signal_ThresholdOpen);
   signal.ThresholdClose(Signal_ThresholdClose);
   signal.PriceLevel(Signal_PriceLevel);
   signal.StopLevel(Signal_StopLevel);
   signal.TakeLevel(Signal_TakeLevel);
   signal.Expiration(Signal_Expiration);
//--- Creating filter CSignalITF
   CSignalITF *filter0=new CSignalITF;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.GoodHourOfDay(Signal_ITF_GoodHourOfDay);
   filter0.BadHoursOfDay(Signal_ITF_BadHoursOfDay);
   filter0.GoodDayOfWeek(Signal_ITF_GoodDayOfWeek);
   filter0.BadDaysOfWeek(Signal_ITF_BadDaysOfWeek);
   filter0.Weight(Signal_ITF_Weight);
//--- Creation of trailing object
   CTrailingNone *trailing=new CTrailingNone;
   if(trailing==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add trailing to expert (will be deleted automatically))
   if(!ExtExpert.InitTrailing(trailing))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing trailing");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set trailing parameters
//--- Creation of money object
   CMoneyFixedRisk *money=new CMoneyFixedRisk;
   if(money==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Add money to expert (will be deleted automatically))
   if(!ExtExpert.InitMoney(money))
     {
      //--- failed
      printf(__FUNCTION__+": error initializing money");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Set money parameters
   money.Percent(Money_FixRisk_Percent);
//--- Check all trading objects parameters
   if(!ExtExpert.ValidationSettings())
     {
      //--- failed
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- Tuning of all necessary indicators
   if(!ExtExpert.InitIndicators())
     {
      //--- failed
      printf(__FUNCTION__+": error initializing indicators");
      ExtExpert.Deinit();
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ExtExpert.Deinit();
  }
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
  {
   ExtExpert.OnTick();
  }
//+------------------------------------------------------------------+
//| "Trade" event handler function                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
   ExtExpert.OnTrade();
  }
//+------------------------------------------------------------------+
//| "Timer" event handler function                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   ExtExpert.OnTimer();
  }
//+------------------------------------------------------------------+

理由: