Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 348

 
Link_x:
Думаю, непонимание функций, находящихся в технических индикаторах. Если я этого не понимаю, значит должен понять, посредством использования информации, нахождение которой "по ту сторону" ссылок, переданных мне от вас, набором и отправлением через интернет сеть.
"Учиться, учиться и еще раз учиться!" - люблю эту фразу. )))

Вот и откройте, скажем, CCI в метаедиторе, всё что непонятно - в справочник (ткнуть мышом на непонятую функцию или выражение и нажать F1). Так намного веселей обучение пойдёт.
 

extern int MartinStep = 2;
extern double LOT = 0.01;


double GetLot(){

int time = 0;double profit = 0; double lots = 0; double Lot = 0;
for(int i = OrdersHistoryTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
if(OrderSymbol() == Symbol()&& OrderMagicNumber() == Magic){
if(time<OrderCloseTime()){
time=OrderCloseTime();
profit=OrderProfit();
lots = OrderLots();
}
}
}
}


if(profit == 0 &&time == 0)
{
Lot = LOT;
}
if(profit >= 0)
{
Lot = LOT;
}
if(profit < 0 )
{
Lot = NormalizeDouble (lots*MartinStep,2);
}

return(Lot);
}
Помогите пожалуйста поправить ошибки в функции. Советник открывает правильно несколько ордеров, а потом в журнале ошибка ''invalid lots amount" . Не могу понять, что не так.
 
Trader7777:


lots = OrderLots();

Lot = NormalizeDouble (lots*MartinStep,2);

Помогите пожалуйста поправить ошибки в функции. Советник открывает правильно несколько ордеров, а потом в журнале ошибка ''invalid lots amount" . Не могу понять, что не так.

Либо ни разу не дошло до оператора lots = OrderLots(); и lots так и осталось =0. Либо lots*MartinStep превысило максимальный разрешённый размер лота.
 

Разобрался, ошибка тут

if(profit >= 0)


надо было поставить знак равно, ибо после ордера который закрылся в 0 советник не знал, что делать)
 

Привет всем! Подскажите, как реализовать переинициализацию советника в конце суток? Ну тоесть в init() есть некоторые действия, которые надо повторить в определенное время. Прописывать их в start() ну не хочется. Скорее интересует теоретическая возможность перезагрузки советника. Заранее спасибо.

 
Pyro:

Привет всем! Подскажите, как реализовать переинициализацию советника в конце суток? Ну тоесть в init() есть некоторые действия, которые надо повторить в определенное время. Прописывать их в start() ну не хочется. Скорее интересует теоретическая возможность перезагрузки советника. Заранее спасибо.

Пробовали в определённое время вызвать init() ?
 
Да, не приходило в голову:( Спасибо!!
 
Уважаемые, скажите при перезагрузке советника(убрать с графика и потом поставить вновь) флаги и статические переменные сбрасываются или остаются в памяти советника?
 
Forexman77:
Уважаемые, скажите при перезагрузке советника(убрать с графика и потом поставить вновь) флаги и статические переменные сбрасываются или остаются в памяти советника?

При инициализации сбрасывается всё, кроме Global Variables
 
Pyro:

При инициализации сбрасывается всё, кроме Global Variables
И тут нужно уточнить, что GV - это переменные терминала, а не советника.
Причина обращения: