どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 556

削除済み  

belck
:

приветствую!

помогите разобраться. пытаюсь сделать в советнике закрытие сделок в пятницу за пол часа до закрытия сессии.

пробовал по учебнику, то ничего у меня не получилось

может у кого уже готовый код есть.

код закрытия у меня есть. мне нужен сам сигнализирующий закрытие сессии за 30 минут.

これはどうでしょう。

extern datetime DateTime = D'2014.03.21 11:30';  // Дата и время закрытия



if (TimeCurrent()>=DateTime)
  {
  }
状況としては、日付は必要なく、毎週金曜日のセッション終了の30分前と30分前にシグナルを出し、そのシグナルを決済注文のコードに埋め込もうと思っています。
 
これは動作しています、故障はしていません。
//---закрыть все позиции в пятницу в 19-40 по серверному времени 
   if(DayOfWeek()==5 && Hour()==19 && Minute()>40){
      //Дать сигнал на закрытие всех позиций    
       
   } 
 
belck:

ごあいさつ

金曜日にセッションが終了する30分前にEAで取引を終了させようとしています。

チュートリアルをやってみたが、うまくいかなかった。

どなたかコードをお持ちの方は教えてください。

30分前にセッションを終了できるようにする必要があります。


これはどのブローカーにとっても、より普遍的なことかもしれません。UTCとのブローカー相場にまだ差がないのが残念

void OnStart()
  {
//---
   int hrd=-3; // разница времени в часах котировок брокера с Гринвичем
   datetime tc=TimeCurrent();
   if(f_ts(tc,hrd)>0) Print("CloseAll()");
  }
//+------------------------------------------------------------------+


int f_ts(datetime ti, int hrd)
{
   if(TimeDayOfWeek(ti)!=5) return(-1); // если не пятница  выходим
   datetime t0d,te;
   int dtd=1440*60, res=-1;
   t0d=ti/dtd*dtd;        // начало торгового дня
   te=t0d+dtd-30*60+hrd*3600;     // 30 мин до конца сессии
   if (ti>te)  res=1;
   else        res=0;
   return(res);
削除済み  
granit77:
これは動作しています、故障はしていません。

は、この方法でテスターを通してテストした後、機能が動作しないことを確認しました。
 

まあこれはテスターでは動かないはずなのですが。

if(DayOfWeek()==5 && Hour()==19 && Minute()>40)

関数は現在時刻を 基準にしており、TimeCurrent()とTimeDayOfWeek()が正しく動作するため、上に書いたものは動作します。夏時間・冬時間の切り替え機能、すなわちパラメータhrdを追加するだけです。切り替えは通常、アメリカのサマータイム(11月第1日曜日 3月第2日曜日)に合わせて行われますが、切り替えを行わないブローカーもありますので、お使いの

 
belck:

ごあいさつ

金曜日にセッション終了の30分前にEAで取引を終了させようとしています。

チュートリアルをやってみたが、うまくいかなかった。

どなたかコードをお持ちの方は教えてください。

クロージングコードは持っているのですが、30分前にセッションの終了を知らせる必要があります。

R772RA:

こんな感じかな。

全然似ていない。

セッションの終了時刻を定義する必要がある datenime SessionClose = .セッションクローズではなく、トレードクローズの場合は、SessionClose =StrToTime("23:30") となります。

曜日を 定義するTimeDayOfWeek()

金曜日の場合、 TimeCurrent() >= SessionClose をチェック する。

削除済み  
AlexeyVik:

ということは全くありません。

セッションの終了時刻を定義する必要がある datenime SessionClose = ....セッションクローズではなく、トレードクローズの場合、SessionClose =StrToTime("23:30") となります。

曜日を定義するTimeDayOfWeek()

金曜日の場合、 TimeCurrent() >= SessionClose をチェック する。


このコードについて、もう少し詳しく教えてください。
 
AlexeyVik:

ということは全くありません。

セッションの終了時刻を定義する必要がある datenime SessionClose = ....セッションクローズではなく、トレーディングであれば、SessionClose =StrToTime("23:30") となります。


セッション終了時刻 SessionClose = ... と入札. は、どのように定義してもテスターでは動作しません :) 3月上旬から本日までの確認事項
 
belck:

このコードについて、もう少し詳しく教えてください。

はい、できます。しかし、それは私の主義に反するものです。


GSB です。
セッション終了時刻 datenime SessionClose = ... と入札. は、どのように定義してもテスターでは動作しません :) 3月上旬から今日までチェック

テスターと何の関係があるんだ?最新のアップデートまではテスターで動作していましたが。今さら反論もしませんし、テストもしていませんし、すぐにテスターをつけざるを得ないこともありません。
 
AlexeyVik:

できるんです。しかし、それは私の主義に反しています。


テスターは何のためにあるのですか?最新のアップデートまではテスターで動作していましたが。今さら反論もしませんし、テストもしていませんし、すぐにテスターをつけざるを得ないということもないでしょう。

原則に異存はありませんが、その人はテスターでEAを動かしたいので、あなたの選択肢はその人に合っていないのです。

私のバージョンを使えば、本番でもテスターでも動きますが、冬期夏期への移行を自動的に考慮する機能ができるまでは、今年の移行時間を次のように定義してください。

string data_1="2014.03.09"; string data_2="2013.11.03";
if(TimeCurrent() < StrToTime(data_1) && TimeCurrent() > StrToTime(data_2) ) hrd=-2; else hrd=-3;
2013年3月から2014年11月までは正常に動作、テストされます。ブローカーに応じたシフトを設定