Bars может меняться. При подкачке истории, при "обрезании" истории, может, еще в каких-то ситуациях (не знаю). А у Kim-а однозначный и бесперебойный вариант. И не требует сохранения переменных перед перезапуском.
//+------------------------------------------------------------------+//| возвращает true если появлися новый бар, иначе false |//+------------------------------------------------------------------+boolisNewBar(){//----boolres=false;
if(expertBars!=Bars){expertBars=Bars;
res=true;
}//----return(res);
}//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+intstart(){//----if(isNewBar())EveryBar();
//----return(0);
}//+------------------------------------------------------------------+
Код не мой, помойму Rosh где то его рекомендовал. komposter и KimIV где здесь (в этом коде) могут быть подводные камни ?
Кстати, я бы еще посоветовал производить поиск в истории закрытых сделок. Иногда бывает (при сильных движениях или малых профитах), что поза открылась по сигналу и закрылась на том же баре. В открытых позах советник ничего не найдет и откроет очередную сделку. Поэтому я еще проверяю историю:
Maxor писал (а)>>
Если кто знает, подскажите.
Мне нужно сделать так, что-бы после открытия одной сделки советник
больше не открывал сделки в этом баре.
А у Kim-а однозначный и бесперебойный вариант. И не требует сохранения переменных перед перезапуском.
Если кто знает, подскажите.
Мне нужно сделать так, что-бы после открытия одной сделки советник
больше не открывал сделки в этом баре.
Посмотрел тут варианты ответа на твой вопрос,но мне кажется доходнее и наджнее примерно так:
//+------------------------------------------------------------------+
bool ProverkaTimeBuy(){
for(int bz=OrdersTotal()-1;bz>=0;bz--){
if(OrderSelect(bz,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(OrderType()==OP_BUY &&
OrderMagicNumber()==1 &&
OrderOpenTime()>=Time[0]){return(false);}
else{return(true);}
}
}
}
return(true);
}
bool ProverkaTimeSell(){
for(int sz=OrdersTotal()-1;sz>=0;sz--){
if(OrderSelect(sz,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol()){
if(OrderType()==OP_SELL &&
OrderMagicNumber()==2 &&
OrderOpenTime()>=Time[0]){return(false);}
else{return(true);}
}
}
}
return(true);
}
//+------------------------------------------------------------------+
кстати, из продвинутых кто что посоветует мне. обмен опытом приветствуется. ))))))))
Я пользовался обычно вот таким вариантом
Код не мой, помойму Rosh где то его рекомендовал. komposter и KimIV где здесь (в этом коде) могут быть подводные камни ?Только при неожиданном изменении значения Bars (например, после подкачки истории).
А у кода KimIV этого камня (камней) нет ? Каким из этих двух кодов Вы рекомендуете пользоваться ? Спасибо.
А у кода KimIV этого камня (камней) нет ? Каким из этих двух кодов Вы рекомендуете пользоваться ? Спасибо.
А код, использующий Bars, сработает при изменении любого бара.
Думаю, первый вариант все-таки надежнее.
Использование:
Если функция фозвращает True, то открывать позу можно. В противном случае курим.
открытие бай
Открытие селл
Если кто знает, подскажите.
Мне нужно сделать так, что-бы после открытия одной сделки советник больше не открывал сделки в этом баре.
Если речь идет о контроле баров в целом:
Для тестера подойдет такой вариант:
Я пользуюсь таким:
Если же условия для открытия и закрытия позиций появляются внутри бара, то лучшего варианта, чем функция Кима, Вам не найти.