KimIVの便利な機能 - ページ 80

 
zennon писал(а)>>
MovingInWL()関数は、フィルターsy,op,mnに関係なく、すべてのオープンポジションを通過させるだけです。これは添付例のEA(P55)でも同様です。

アンドレイ、ありがとうございます修正されました...

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 23.04.2009                                                     |
//|  Описание : Перенос уровня стопа в безубыток                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
  double po, pp;
  int    i, k=OrdersTotal();

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()== sy || sy=="") && ( op<0 || OrderType()== op)) {
        if ( mn<0 || OrderMagicNumber()== mn) {
          po=MarketInfo(OrderSymbol(), MODE_POINT);
          if (OrderType()==OP_BUY) {
            if (OrderStopLoss()-OrderOpenPrice()< LevelWLoss* po) {
              pp=MarketInfo(OrderSymbol(), MODE_BID);
              if ( pp-OrderOpenPrice()> LevelProfit* po) {
                ModifyOrder(-1, OrderOpenPrice()+ LevelWLoss* po, -1);
              }
            }
          }
          if (OrderType()==OP_SELL) {
            if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()< LevelWLoss* po) {
              pp=MarketInfo(OrderSymbol(), MODE_ASK);
              if (OrderOpenPrice()- pp> LevelProfit* po) {
                ModifyOrder(-1, OrderOpenPrice()- LevelWLoss* po, -1);
              }
            }
          }
        }
      }
    }
  }
}
e-MovingInWL2.mq4も 修正されました。
 

イゴールさん、こんにちは。

このフォーラムに多くの時間を割いていただき、ありがとうございました。イゴール、入ってくる売買依頼の情報、つまり「市場の深さ」を知る機会をご存知ですか?

 
Alex30 писал(а)>>
イゴール、入ってくる売買依頼の情報、つまり「市場の深さ」を知る機会をご存知ですか?

ノー

 
経験豊富な質問:誰もが私のデモ指標xMeterMTF.mq4はすべて正常で、実際のユーロの虚しさで(ためかどうか実際のユーロ/ USD-として 記載されている事実の)そうであれば修正することができる 示している理由を伝えることができます。
ファイル:
xmetermtf.mq4  8 kb
xmeter.rar  34 kb
 

isTradeTimeString()関数を使用します。

説明: 時間指定取引を許可するフラグを返します。実際には、トレードサーバーの現在時刻がある時間帯の中にあるかどうかをチェックします。内であれば、isTradeTimeString()関数はtrueを返し、そうでなければfalseを返します。この機能の特徴は、時間間隔を1日中と1日外の両方で指定できることです。これについては、使用例で詳しく紹介する。isTradeTimeString()関数には、以下のオプションパラメータを指定できます。

  • TimeBegin- "HH:MM "形式の文字列で、取引開始時刻を設定します。初期値は "00:00 "である。
  • TimeEnd- "HH:MM "形式の文字列で、取引終了時刻を指定する。初期値は "00:00 "である。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    TimeBegin - время начала торговли         (ЧЧ:ММ)                       |
//|    TimeEnd   - время окончания торговли      (ЧЧ:ММ)                       |
//+----------------------------------------------------------------------------+
bool isTradeTimeString(string TimeBegin="00:00", string TimeEnd="00:00") {
  datetime dtBegin, dtEnd;        // Время начала и окончания работы
  int      hc, he;                // Часы текущего времени и окончания работы

  dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeBegin);
  dtEnd  =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeEnd);
  hc     =TimeHour(TimeCurrent());
  he     =TimeHour( dtEnd);
  if ( dtBegin>= dtEnd) {
    if ( hc>= he) dtEnd+=24*60*60; else dtBegin-=24*60*60;
  }

  if (TimeCurrent()>= dtBegin && TimeCurrent()<= dtEnd) return( True);
  else return( False);
}
 

isTradeTimeString()の使用例です。

  1. 1日以内の時間帯。期間内のトレードサーバーの 現在時刻を"07:50 "とする。
    if (isTradeTimeString("06:00", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. 一日の中の時間枠。セグメント外のトレードサーバーの現在時刻を "07:50 "とする。
    if (isTradeTimeString("12:00", "16:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. 時間帯には当日の境目が含まれます。セグメント内のトレードサーバーの現在時刻を "07:50 "とする。
    if (isTradeTimeString("21:15", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. 時間帯には1日の区切りがあります。セグメント外の取引サーバーの現在時刻を "07:50 "とする。
    if (isTradeTimeString("22:00", "05:30")) Message("Торгуем...");
    else Message("Отдыхаем...");

SZY. isTradeTimeString()関数をテストするためのスクリプトを添付します。

ファイル:
 
KimIV >> :

イゴール i-Sessionsのインジケーターには、まだ開いていないセッションの領域が現れたり消えたりする不具合が時々あるのですが......。

 
DR12CED >> :

イゴール i-Sessionsのインジケーターには、まだ開いていないセッションの領域が現れたり消えたりする不具合が時々あるのですが......。

おっと...撤回します...イベントの待ち時間などにも重宝しそうですね...。すいません...お願いします...

 
KimIV >> :

isTradeTimeString()関数を使用します。

説明: 時間指定取引を許可するフラグを返します。実際には、トレードサーバーの現在時刻がある時間帯の中にあるかどうかをチェックします。内であれば、isTradeTimeString()関数はtrueを返し、そうでなければfalseを返します。この機能の特徴は、時間間隔を1日中と1日外の両方で指定できることです。これについては、使用例で詳しく紹介する。isTradeTimeString()関数には、以下のオプションパラメータを指定できます。

  • TimeBegin - "HH:MM "形式の文字列で、取引開始時刻を設定します。初期値は "00:00 "である。
  • TimeEnd - "HH:MM "形式の文字列で、取引終了時刻を指定する。デフォルト値 - "00:00".

また、変数を "string "ではなく、"int "に設定することも可能です。テスターで検索するためには?

>> よろしくお願いします。

 
vasilyt писал(а)>>
変数を "string "ではなく、"int "にすることはできますか?テスターで検索できるようにするため?

76ページで...