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

 
KimIV >> :

76ページで...

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

 

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

この関数は、時間指定取引を許可するフラグを返します。返される値は、true または false である。関数 isTradeTimeInt() は、時間間隔認識の原理により、関数isTradeTimeString() と同様、取引開始時刻が大きくても(一日内の時間間隔)、小さくても(異なる日の時間間隔)、どちらでも可能です。関数 isTradeTimeInt()は、以下のオプションパラメータを受け付ける。

  • hb- 数字、取引開始時刻を指定します。初期値は0である。
  • mb- 数値で、取引開始時刻の分数を指定します。デフォルト値 - 0
  • he- 取引終了時刻の時間を指定するための数値です。初期値-0。
  • me- 取引終了時刻の分数を指定するための数値です。デフォルト値 - 0
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ hb+":"+ mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ he+":"+ me);
  hc=TimeHour(TimeCurrent());
  if ( db>= de) {
    if ( hc>= he) de+=24*60*60; else db-=24*60*60;
  }

  if (TimeCurrent()>= db && TimeCurrent()<= de) return( True);
  else return( False);
}
 

isTradeTimeInt()の使用例です。

  1. 1日以内の時間帯。期間内のトレードサーバーの 現在時刻を"08:30 "とする。
    if (isTradeTimeInt(6, 0, 9, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. 一日の中の時間枠。セグメント外のトレードサーバーの現在時刻を "08:30 "とする。
    if (isTradeTimeInt(12, 0, 16, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. 時間帯には、日の境界線が含まれます。セグメント内のトレードサーバーの現在時刻を "08:30 "とする。
    if (isTradeTimeInt(21, 15, 9, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. 時間帯には、日の境界線が含まれます。セグメント外のトレードサーバーの現在時刻を "08:30 "とする。
    if (isTradeTimeInt(22, 0, 5, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");

SZY. isTradeTimeInt()関数をテストするスクリプトを添付しています。

ファイル:
 

機能一覧を更新し、簡単な説明とリンクを掲載...

ファイル:
f_kimiv.rar  12 kb
 
KimIV >> :

isCloseLastPosByStop()関数です。

この関数は、ストップによる最後のポジションのクローズフラグを返します。フラグが立っている - True - StopLossが発動した。フラグを下げた - False - ポジションは別の理由で閉鎖されました。考慮すべき位置をより正確に選択するために、外部パラメータで設定します。


こんにちは

あなたの機能を私自身の目的のために使おうとしています。小さな動作のExpert Advisor。売って閉じるだけ、1ポジション。ストップロスをいくつも連続でキャッチすることもある。Expert Advisorがポジションを開くが、クローズしないので、最初のストップ後に売り条件を変更したい。何が間違っているのか、教えてください

..........................................................

if ( isCloseLastPosByStop(NULL,OP_SELL, MagicNamber) == 0)
{
if ( (StochK_0<StochD_1) && (StochD_1 > 80) ) // 1回目 ゆっくり売る。
ticket=OrderSend(Symbol(,OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "My EXP", MagicNamber,0,Green); // 売ります。

OrderSelect(0, SELECT_BY_POS);

if (OrderSelect(0, SELECT_BY_POS)==true )
Print("SELECT_BY_POS")。
さもなくば
Print("failed to select error : ",GetLastError());
RefreshRates()。
if((StochK_0<30)&& (StochD_1 < 30))
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet)を実行します。
}
さもなくば
if ( isCloseLastPosByStop(NULL,OP_SELL, MagicNamber) == 1)
{
if ((StochK_0<StochD_1) && (StochK_0 < 60) && (StochD_1 < 60) )

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My EXP", MagicNamber,0,Green);//。

 
KoZaNOStra писал(а)>>
エキスパートがポジションを開くが、クローズ しない。

StochK_0StochD_1 の変数を表示します。もしかしたら、あなたの決算条件に当てはまらない値を取っているかもしれません。

 

to KimIV

こんにちは、あなたはこのクラスタインジケータを 同じ図面と入力パラメータ - ペア名による+ペア変化率値の戻り(右上隅)を持つ関数に変換するために役立つしてくださいすることができます。 あらかじめご了承ください。

追伸......1週間前から苦戦しています

ファイル:
cc_240.mq4  13 kb
 
通貨ペアのオープンウィンドウにニュースを表示する機能はありますか?
 
また、どの時間の始まりにも、最初の1秒に2つの異なる指示のポジションをオープンし、時間の最後の1秒に失敗した注文をクローズすることをコードでどのように表現するのでしょうか?
 
VAM_ писал(а)>>
また、どの時間の始まりにも、最初の1秒に2つの異なる指示のポジションをオープンし、時間の最後の1秒に失敗した注文をクローズすることをコードでどのように表現するのでしょうか?

ないとしたら、最初と最後の2番目?