int BarOfLastOrder(int magic)
{
int i,ot=OrdersTotal();
for(i=ot-1; i>=0; i--);
{
OrderSelect(i,SELECT_BY_POS);
if(OrderMagicNumber()==magic) return(iBarShift(0,0,OrderOpenTime()));
}
return(-1);
}
int start()
{
........
int bar_of_last_order = BarOfLastOrder(magic); // указать магик, который использует советник
switch(bar_of_last_order)
{
case0:
//последний ордер открыт на текущем баре
...
break;
case -1:
//ордеров нет// здесь break не ставим, если ситуация "нет ордеров" и "последний ордер открыт не на текущем баре" нужно обрабатывать одинаково// в противном случае написать обработку и break;default:
//последний ордер открыт не на текущем баре
...
break;
}
.........
}
こんなこともできるんだ...。
NewBarはバーの最初のティックにのみtrueを与えるので、このバリアントは正しく動作しないでしょう。正しく動作させるためには、FunNewBar(); if(!NewBar) return; の行を取引開始条件の内側と、取引開始が成功した後に配置する必要があります。
全く正しいとは言えないだろうが。要するに、r772raの 変種は修正されるべきで、例えば、履歴の最後の注文の開始時刻を見て、現在のバーの時刻と比較するなど、根本的に異なるアプローチを使用する方が良いでしょう - それははるかに信頼性が高くなります。
こんな感じです。
ありがとうございました。試してみるか...。
コードに手を加える
やったーーーーーーーーーーーーやり遂げた
{
static datetime New_Time=0;
New_Bar=false とする。
if(New_Time!=Time[0])とする。
{
New_Time=Time[0]です。
New_Bar=true とする。
}
}
本当にありがとうございました!!!オープンからマイナス1本目のバーにシグナルを出せばうまくいくのでしょうか?