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

 
LRA:

int Flags=FILE_WRITE+FILE_TXT+FILE_COMMON;

int Info = FileOpen(fName,Flags)。

FileWrite(Info,What's Up); もう一方の端末で、読みます。FileOpenとF1上のカーソル - ヘルプを見る

ありがとうございます!見てみます。
 

皆さん、こんにちは。

私の時系列配列は、トレードイベント定義の文字列(新しいローソク 足が出現したとき)に更新されない、というか新しいローソク足が出現してもその値が変わりません。

if(T[i]!=iTime(NULL,TF[i],1))

T[i]はExpert Advisor起動時に最初に設定され、その後、新しいローソク足が表示されると、値が更新されます。

Iパラメータは、入力パラメータを基に設定されます。

面白いのは、TFを複数使って動作させ、そのためにforループを使わざるを得なかったバージョンでは、すべてうまくいったのに、ここでは失敗する--更新されない、というだけなのです...(

 
Igemon:

皆さん、こんにちは。

私の時系列配列は、トレードイベント定義の文字列(新しいローソク足が出現したとき)に更新されない、というか新しいローソク足が出現してもその値が変わりません。

T[i]はExpert Advisor起動時に最初に設定され、その後、新しいローソク足が表示されると、値が更新されます。

Iパラメータは、入力パラメータを基に設定されます。

面白いのは、forループを 使わなければならないバージョンでは、いくつかのTFを使って動作させたのですが、今は失敗するんですよねー、更新されないんです...(

どうやら正しくループから引き出されていなかったようだ...。

新しいバーを定義するためのカスタム関数は次のとおりです。

bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

入力変数。

tf - 新しいバーの発生を判断するためのチャート期間 または期間値です。

lastbar - 参照で渡される変数で、最後のバーの時刻を格納します。

void OnTick()
{
// хотим определить наступление нового дня
 static datetime lastDay, lastHour;
 bool newDay, newHour;
 newDay = NewBar(PERIOD_D1, lastDay);
 if(newDay)
 Print("наступил новый день");
// и нового часа
 newHour = NewBar(PERIOD_H1, lastHour);
 if(newHour)
 Print("наступил новый час");
}
 
AlexeyVik
bool NewBar(int tf, datetime &lastbar)
{
   datetime curbar = iTime(_Symbol, tf, 0);
   if(lastbar != curbar)
    {
     lastbar = curbar;
     return (true);
    }
   else return(false);
}//******************************************************************|

EAから初めて呼び出されると、すぐに新しいバーが報告されます。OnInit()に関数呼び出しを 追加することで修正しました。

スクリプトから最初に呼び出されたときは、すぐに新しいバーを報告します。 その後、常に偽になります。RefreshRates()を関数の先頭に追加することで修正しました。

 
LRA:

EAから初めて呼び出されると、すぐに新しいバーが報告されます。OnInit()に関数呼び出しを追加することで修正しました。

スクリプトから最初に呼び出されたときは、すぐに新しいバーを報告します。 その後、常に偽になります。RefreshRates()を関数の先頭に追加することで修正しました。

1.最初にtrueと言うと、ごく普通に、今までバーがなかったら、出てきたものが新しいものになります。必要であれば、戦略上必要であれば、このように新しいバーや いくつかの追加を拒否することも可能です。思わず一目散に、あと2つ紹介する。

static datetime lastDay = iTime(_Symbol, PERIOD_D1, 0);, lastHour = iTime(_Symbol, PERIOD_H1, 0);

または

if(lastbar != curbar && lastbar > 0)

2.なぜ、スクリプトで新しいバーを定義するのですか?これはどこまで愚かなことなのでしょうか。

 

でも、なんでここがダメなんだろう...(( 大丈夫だと思うんだけどな(

extern int TFrame=1;

datetime T[6];
int TF[6]={1,5,15,30,60,240};
int i=TFrame-1;

int OnInit()
   {
   T[0]=iTime(NULL,1,1);
   T[1]=iTime(NULL,5,1);
   T[2]=iTime(NULL,15,1);
   T[3]=iTime(NULL,30,1);
   T[4]=iTime(NULL,60,1);
   T[5]=iTime(NULL,240,1);
   for(int q=0;q<=5;q++)
      Print(T[q]);
   return(INIT_SUCCEEDED);
   }
 
void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
 

Igemon:

void OnTick()
   {
   while(1==1)
      {
      if(T[i]!=iTime(NULL,TF[i],1))
失礼ですが、伊右衛門さん、なぜこのような無茶をするのですか?どんな人がアドバイスしたんだ?
 
皆さん、ごきげんよう。どなたかアドバイスをお願いします:ターミナルを再起動したときやインターネットを切断したときに、EAが正しく動作すること、すなわち所定のアルゴリズムを実行することを確認するにはどうすればよいでしょうか?
 
artmedia70:
失礼ですが、イゲモンさん、なぜこのような無茶をするのですか?どんな人がアドバイスしたんだ?
どうしたんですか?そこではすべてが正常なので、残りのコードを入れなかっただけです。ループはtickに依存しないために必要で、イベント定義時に、PCを再起動しないように100mlsecでスリープ させます。