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

 

アドバイザーの時間ブロックに分数を追加するには?

//input parametrs
input uchar                InpStartHour            = 1;           // Start hour
input uchar                InpEndHour              = 23;           // End hour

//---------------------------

void OnTick()
  { 
   MqlDateTime STimeCurrent;
   TimeToStruct(TimeCurrent(),STimeCurrent);
  
   if(STimeCurrent.hour<InpStartHour || STimeCurrent.hour>InpEndHour)
      return;
   }

 
Vladimir Baskakov:

EAの1時間単位のブロックに分数を追加するにはどうすればよいですか?

High Low Strategy On Time 2:

bool TimeControl()は、時刻を確認する役割を担う関数である。1日以内の日付と1日以上の日付の両方の状態で動作させることができます。

//--- input parameters
***
input bool     InpTimeControl       = true;        // Use time control
input uchar    InpStartHour         = 10;          // Start Hour 
input uchar    InpStartMinute       = 01;          // Start Minute 
input uchar    InpEndHour           = 15;          // End Hour 
input uchar    InpEndMinute         = 02;          // End Minute 
***
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(!TimeControl())
      return;
  }
//+------------------------------------------------------------------+
//| TimeControl                                                      |
//+------------------------------------------------------------------+
bool TimeControl(void)
  {
   if(!InpTimeControl)
      return(true);
   MqlDateTime STimeCurrent;
   datetime time_current=TimeCurrent();
   if(time_current==D'1970.01.01 00:00')
      return(false);
   TimeToStruct(time_current,STimeCurrent);
   if((InpStartHour*60*60+InpStartMinute*60)<(InpEndHour*60*60+InpEndMinute*60)) // intraday time interval
     {
/*
Example:
input uchar    InpStartHour      = 5;        // Start hour
input uchar    InpEndHour        = 10;       // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _
*/
      if((STimeCurrent.hour*60*60+STimeCurrent.min*60>=InpStartHour*60*60+InpStartMinute*60) && 
         (STimeCurrent.hour*60*60+STimeCurrent.min*60<InpEndHour*60*60+InpEndMinute*60))
         return(true);
     }
   else if((InpStartHour*60*60+InpStartMinute*60)>(InpEndHour*60*60+InpEndMinute*60)) // time interval with the transition in a day
     {
/*
Example:
input uchar    InpStartHour      = 10;       // Start hour
input uchar    InpEndHour        = 5;        // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  _  _  _  _  _  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  _  _  _  _  _  +  +  +  +  +  +
*/
      if(STimeCurrent.hour*60*60+STimeCurrent.min*60>=InpStartHour*60*60+InpStartMinute*60 || 
         STimeCurrent.hour*60*60+STimeCurrent.min*60<InpEndHour*60*60+InpEndMinute*60)
         return(true);
     }
   else
      return(false);
//---
   return(false);
  }
 

アドバイスをお願いします。

MQL5では、ポジションの半分を決済する必要があるのですが、ポジションの半分が最小ロットに満たないかどうかを確認してから全量を決済する必要があるのですが、それでいいのでしょうか?

double volume=MathMax(PositionGetDouble(POSITION_VOLUME)/2,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN)/AccountInfoInteger(ACCOUNT_LEVERAGE));
 
Evgeny Dyuka:

アドバイスをお願いします。

MQL5では、ポジションの半分を決済する必要があるのですが、ポジションの半分が最小ロットに満たないかどうかを確認してから全量を決済する必要があるのですが、それでいいのでしょうか?

分割前に確認し、ロットが最低の2倍以下であれば、端末に迷惑をかける必要はない、というのがわかりやすいかも?

 

はマーケットプレイスのテストに合格できず、エラーを返しますが、レポートにはエラーはありません

どうすればいいのか?


 
Evgeny Dyuka:

マーケットプレイスのテストに合格できず、エラーを返しますが、レポートにはエラーはありません

どうすればいいのか?


後でもう一度お試しください。
 

注文(取引、ポジションなど、あらゆるもの)の終値を取得するにはどうすればよいですか?

注文の場合、ORDER_PRICE_OPENのみ利用可能で、ORDER_PRICE_CLOSEは利用不可。

ポジションはPOSITION_PRICE_OPENのみ です。

トレードは抽象的なものがまったくないんです。DEAL_PRICE。

フォーラムをググっても見つかりませんでした。

 
secret:

注文(取引、ポジションなど、あらゆるもの)の終値を取得するにはどうすればよいですか?

注文の場合、ORDER_PRICE_OPENのみ利用可能で、ORDER_PRICE_CLOSEは利用不可。

ポジションはPOSITION_PRICE_OPENのみ です。

トレードは抽象的なものがまったくないんです。DEAL_PRICE。

フォーラムを探しましたが、見つかりませんでした。

MQL5の理解と作業を容易にするために。

1.***

2.終値が必要な場合は、取引履歴にアクセスしないことにはどうしようもありません。HistorySelectは、取引履歴を要求する役割を担っています

3.ファイルまたは「Experts」タブに情報を出力して履歴を操作する例は、「History Deals and Orders」のコードにあります

これがどんな取引なのかを理解するためには、次のことを知る必要があります。

ENUM_DEAL_ENTRY-取引の方向 - 市場への参入、市場からの退出、または反転

enum_deal_entry

識別子

商品説明

DEAL_ENTRY_IN

市場への参入

DEAL_ENTRY_OUT

市場の出口

取引参加者

ユーターン

取引参加者

カウンターポジションを閉じる


ENUM_DEAL_TYPE-取引の 種類

ENUM_DEAL_TYPE

識別子

商品説明

DEAL_TYPE_BUY

購入

DEAL_TYPE_SELL販売する

***



これらは基本中の基本です。

 
Vladimir Karputov:

ご返信ありがとうございます。ドキュメントとあなたの例の両方を見ましたが、MT4でOrderClosePrice()と同様のパラメータを取得する方法はまだ見つかっていません。

 
secret:

ご返信ありがとうございます。ドキュメントとあなたの例の両方を見ましたが、MT4でOrderClosePrice()と同様のパラメータを取得する方法はまだ見つかりませんでした。

代わりに、https://www.mql5.com/ru/code/16006 を開きます。

@fxsaber の 実装を見てみましょう。

または、上記のライブラリを接続し、MT4からMT5にコードを転送するだけで、99%の場合、何も調整する必要がなく、すべてがMT4と同じように動作します。

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...
理由: