[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 159

 
anton777:
ちょっと書き方が悪かったので、直しました。

それはスクリプトか何かですか?
 
bikrus13:

は、スクリプトか何かですか?
これは私のEAのコードの一部で、注文が入るとロットを増加させるものです。
 
anton777:
これは、私のEAのコードの一部で、注文が入るとロットを増やすものです。

できればEA本体を私のメールボックスに送ってください。 見てみます。
 
bikrus13:

できればEAを自分で送ってください。 見てみます。


アドバイザーが間を取り持ってくれているんですね。

 

インジケーターのiBarShiftが 0を返し続けるのはなぜか教えてください。

きっかけは、インジケーターが定期的に描画を停止するようになったことです。その原因を探ろうと思い、iBarShiftが常に0を返していることに行き着きました。

コードの一部です。

   int shift = getShift(PERIOD_D1, 1); 
   datetime dt = iTime( Symbol(), PERIOD_D1, shift); //----- время всегда возвращает правильно
   int a = iBarShift( Symbol(), PERIOD_H1, dt, false); //----- а тут всегда 0

//--------
int getShift(int timeframe, int shift)
{
  return(iBarShift(NULL, timeframe, Time[shift]));
} 
 
alsu:
そうだと思う、チェック...
今、あなたの提案を見ましたが、この時点ですでに自分で考えていました )))感謝
 
時間が属するローソク足の番号を判断する機能が内蔵されているかどうか、ご存知ですか?
 
nadya:
こんにちは、時間からローソク足番号を割り出す機能が内蔵されているかどうかご存知ですか?

intiBarShift() 文字列シンボル, int timeframe, datetime time, bool exact=false)
時間からバーを検索します。この関数は、指定された時刻が属するバーのオフセットを返します。指定した時間にバーがない場合(履歴の「ギャップ」)、この関数は正確な パラメータに応じて、-1または最も近いバーのシフトを返します。
 
Vinin:

intiBarShift() 文字列シンボル, int timeframe, datetime time, bool exact=false)
時間からバーを検索します。この関数は、指定された時刻が属するバーのオフセットを返します。指定した時間にバーがない場合(履歴の「ギャップ」)、この関数は正確な パラメータに応じて、-1または最も近いバーのシフトを返します。
どうもありがとうございます!どこかにあったのを覚えていて、探すのが面倒なんですよねー。
 

以下は、そのスクリプトのコードです。

int start()
{
   int n=0, m=7, t=2, k;
   string s;
   for(n=0;k<10000;t++)
   {k=t*4/2;
   Print("k=", k);}

   return(0);
}

スクリプトを実行すると、エキスパートログにメッセージが表示されます。

2012.06.03 19:16:39     Task1.4_hoz AUDUSD,M15: k=10000
2012.06.03 19:16:39     Task1.4_hoz AUDUSD,M15: k=9998
2012.06.03 19:16:39     Task1.4_hoz AUDUSD,M15: k=9996
2012.06.03 19:16:39     Task1.4_hoz AUDUSD,M15: k=9994
2012.06.03 19:16:39     Task1.4_hoz AUDUSD,M15: k=9992
2012.06.03 19:16:39     Task1.4_hoz AUDUSD,M15: k=9990
......................................................
......................................................
......................................................
2012.06.03 19:16:39     Task1.4_hoz AUDUSD,M15: k=9576
2012.06.03 19:16:39     Task1.4_hoz AUDUSD,M15: k=9574
2012.06.03 19:16:39     Task1.4_hoz AUDUSD,M15: k=9572

すなわち、kの値は9572から始まり、最初の値t*4/2 = 2*4/2 = 4となるはずである。引っ掛かりは何ですか?