mql5言語の特徴、微妙なニュアンスとテクニック - ページ 45

 
アレクセイ・ヴィクトロフ

もしかしたら、そうなるかもしれない?FXは必ずしも正しく表示されるわけではありませんが。

例えば、SBRF-9.17の金曜日の取引 終了時刻は、分足チャートでは23:45:00ですが、本機能では00:00:00と表示され、取引所の夕方の取引終了時刻は23:50と表示されています。

要は、今いる場所でチェックを作って定数を使えるかどうかだと思うのですが、もしかしたら誰かがすでにこの機能を実装していて、私が自分で自転車を書く必要はないのかもしれませんね。
 
アレクセイ・ヴィクトロフ

依存関係はありませんし、ありえません。したがって、特別なコードは存在し得ない。

開発者は、このような場合、LFOを使いません。アルゴリズムは明確で、再現性があります。

 
コンスタンチン

先物 市場では、現在の時間間隔を見つけるの異なるバリアントで前日の市場の終値を 決定する方法。

1.我々は、土曜日 - 日曜日の間隔である、我々は金曜日の夕方の貿易セッション のクローズ時間が必要です。
2.我々は月曜日から金曜日まで閉じた市場にいる。我々は月曜日から木曜日までイブニングセッションの終了時刻を 必要とする。
3. 月曜日から金曜日の取引範囲内。金曜日の夕方の取引 終了時間が必要。
4.火曜日から金曜日の時間帯で、月曜日から木曜日の夜の セッションの終了時間が必要です。

多分、誰かが似たような機能を書いたのでしょうが、車輪の再発明はしたくありません ))

定数以上の自由度はないと思います。

/*!
   \brief   Расчет конечной даты запроса
*/
datetime CVolumeCluster::CalcStopDate(void) {
   MqlDateTime _date;
   datetime _time_t = TimeTradeServer(_date);

   if(_date.hour == 23 && _date.min >= 44) {          // определяем время окончания торговой сессии
      _date.hour = 23;
      _date.min  = 44;
      _date.sec  = 59;
      _time_t    = StructToTime(_date);
   } else {
      TimeToStruct(_time_t - 86400, _date);
      _date.hour = 23;
      _date.min  = 44;
      _date.sec  = 59;
      if(_date.day_of_week == 0 || _date.day_of_week == 6)
         _date.day_of_week = 5;
      _time_t = StructToTime(_date);
   }
//---
   return _time_t;
}
 

CCanvas クラスで作業している人にアドバイスですが、グラフィック・マークの 更新にかかるリソースを少なくするには、例えば、グラフィック・マーカーに数十万行ある場合、サイズを変更すると、グラフィック・マーカー内の各行を再描画する必要がありますが、再描画しない場合は、単にサイズを変更するだけでグラフィック・マークのオブジェクトは変化しますが、グラフ上の行は表示されないため、この方法を使用する必要があります。

 
コンスタンチン

定数ほど柔軟なものはないでしょう。

その方が楽じゃないですか?

/********************Script program start function*******************/
void OnStart()
{
 datetime timeArray[1], barArray[1];
 CopyTime(_Symbol, PERIOD_D1, 0, 1, timeArray);
 CopyTime(_Symbol, PERIOD_M1, timeArray[0]-1, 1, barArray);
 Print(barArray[0];
}/*******************************************************************/
 
アレクセイ・ヴィクトロフ

この方が楽じゃないですか?

 CopyTime(_Symbol, PERIOD_D1, 0, 1, timeArray);              // время текущего дня 00:00:00
 CopyTime(_Symbol, PERIOD_M1, timeArray[0]-1, 1, barArray);  // время открытия - 1 секунду

結果は基本的に正しいです )) ありがとうございます。

 
現在(1626)は動作していません

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

mql5言語の特徴、微妙なニュアンスとコツ

fxsaber さん 2017.05.05 23:48

// Возвращает текущее количество объектов классов
int GetAmountObjects( void )
{
  const class CLASS_TMP {} Tmp;
  
  return((int)::StringFormat("%d", &Tmp) - 1);
}
アプリケーション例
int OnInit()
{
  if (GetAmountObjects() > 0)
    Print("До " + __FUNCSIG__ + " были вызваны конструкторы!");

  return(INIT_SUCCEEDED);
}
 
// Советник возвращает полностью сформированные торговые запросы (включая ручные)
#define  TOSTRING(A)  #A + " = " + (string)(A) + "\n"
#define  TOSTRING2(A) #A + " = " + EnumToString(A) + " (" + (string)(A) + ")\n"

string ToString( const MqlTradeRequest &Request )
{
  return(TOSTRING2(Request.action) + TOSTRING(Request.magic) + TOSTRING(Request.order) +
         TOSTRING(Request.symbol) + TOSTRING(Request.volume) + TOSTRING(Request.price) + 
         TOSTRING(Request.stoplimit) + TOSTRING(Request.sl) +  TOSTRING(Request.tp) + 
         TOSTRING(Request.deviation) + TOSTRING2(Request.type) + TOSTRING2(Request.type_filling) +
         TOSTRING2(Request.type_time) + TOSTRING(Request.expiration) + TOSTRING(Request.comment) +
         TOSTRING(Request.position) + TOSTRING(Request.position_by));
}

void OnTradeTransaction(   const MqlTradeTransaction&, const MqlTradeRequest& Request, const MqlTradeResult& )
{
  if (Request.action)
    Print(ToString(Request));
}

同じFillingで問題がある場合は、このEAを実行し、手動で希望の注文を作成してください(ターミナルでF9)。生成された取引依頼は、EAによって印刷されます。

残念ながら、実際のアカウントでこれを行うのは問題がある。開発者はこの 提案を拒否しています。

 
fxsaber

同じFillingで問題がある場合は、このEAを実行し、手動で希望の注文を作成してください(ターミナルでF9)。生成された取引依頼は、EAによって印刷されます。

唯一欠けているのは、その仕組みの例です

 
ラシード・ウマロフ

必要なのは、それがどのように機能するかの実例です。

手動で露出


生成された取引依頼をログで取得する

Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 157092716
Request.symbol = EURUSD
Request.volume = 0.01
Request.price = 1.13941
Request.stoplimit = 0.0
Request.sl = 1.13926
Request.tp = 1.13955
Request.deviation = 0
Request.type = ORDER_TYPE_BUY_LIMIT (2)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_SPECIFIED (2)
Request.expiration = 2017.07.11 12:08:00
Request.comment = 
Request.position = 0
Request.position_by = 0
残念ながら、実際のトレーダーにとっては非常に高価なものです。だからこそ、私は提案したのです。
理由: