Запрет торговли в одном баре. - страница 4

 
xrust:


Это всё равно не подействовало, он почему то при сигналах всё равно открывает столько, сколько было сигналов.

 
Подскажите начинающему - как сделать так,чтобы сигнал на открытие и закрытие позиции давался именно по закрытии бара,а не во время его формирования?
 

На первой страничке посл. пост от Рида :

int ExpertBars;
 bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; } 
if (isNewBar) //если появился новый бар :
//------------------------------------------------------------
{ 
 // все, что вы здесь зададите - будет работать по ценам открытия нового (закрытия старого) бара
}
 
leonid553:

На первой страничке посл. пост от Рида :

Вариант хорош для тестера.

Кто-то (кажется Рош) писал что в онлайне кол-во баров может увеличиться при подкачке и по другим причинам.

 
Перенесено.
Maxor 28.01.2007 19:31
Если кто знает, подскажите.
Мне нужно сделать так, что-бы после открытия одной сделки советник больше не открывал сделки в этом баре.
 
bool isNewBar()
{
static datetime sTime;
bool res=false;

if (sTime!=iTime(Symbol(),PERIOD_H1,0))
{
sTime=iTime(Symbol(),PERIOD_H1,0);
res=true;
}
return(res);
}
 

Для тестера подойдет такой вариант:

int start()
{
   if (Volume[0] != 1) return(0);
   // code
}

Я пользуюсь таким:

datetime LastTime = 0;
 
int start()
{
   if (LastTime >= Time[0]) return(0);
   LastTime = Time[0];
   // code
}

А почему datetime? Просто int никак? Понакрутят вечно многоумных переменных...
 
goldtrader:

Вариант хорош для тестера.

Кто-то (кажется Рош) писал что в онлайне кол-во баров может увеличиться при подкачке и по другим причинам.


goldtrader, что нужно исправить в этом варианте, чтобы он был пригоден для онлайна?

(вопрос всем, кто знает...)

extern bool  по_ЦенамОткрытия = true;     
//--------------------------------------------
int ExpertBars;
 bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; } 
if (isNewBar || ! по_ЦенамОткрытия)  //если появился новый бар :
//------------------------------------------------------------
{ 
 // все, что вы здесь зададите - будет работать по ценам открытия нового (закрытия старого) бара
}

 
leonid553:


goldtrader, что нужно исправить в этом варианте, чтобы он был пригоден для онлайна?

(вопрос всем, кто знает...)

имхо тут исправлять нечего т.к. именно значение переменной Bars может измениться (по словам разработчиков) при внезапной подкачке истории. Думаю что такие подкачки случаются нечасто. Для большей надёжности лучше пользоваться функциями Роша или КИМа, в них этой проблемы нет.
 
leonid553:


goldtrader, что нужно исправить в этом варианте, чтобы он был пригоден для онлайна?

(вопрос всем, кто знает...)

Контролирую количество баров, т\ф, время открытия бара.

bool IsNewChartBar()
{
static int nB=-1,nT=-1,nP=-1;
    if((nB==Bars)&&(nT==Time[0])&&(nP==Period())) return(false);
    nB = Bars;
    nT = Time[0];
    nP = Period();
    return(true);
}//IsNewChartTFBar()

Можно еще контролировать символ.

Причина обращения: