Разберем? - страница 5

 
KimIV писал (а) >>

Ошибки:

1. В строках 38-39 используются неинициализированные переменные HourOpenPos1 и HourOpenPos:

Что сделать?

Проинициализировать переменные HourOpenPos1 и HourOpenPos до их использования.

Вот этот момент не понял. Что значит Проинициализировать? Это значит вынести за внешние параметры?

 
azfaraon писал (а) >>

Что значит Проинициализировать?

Это значит присвоить переменной какое-либо значение. Например:

HourOpenPos = 8;
HourOpenPos1 = 10;
 
KimIV писал (а) >>

Это значит присвоить переменной какое-либо значение. Например:

Файлы:
sov1_3.mq4  6 kb
 
Теперь, вроде правильно. Проверяли? Работает?
 

Я сам проверил... неправильно...

Вот этим условием:

if ( Hour() == HourOpenPos1) Type =OP_BUY

мы разрешаем покупки. И наше разрешение продолжает действовать даже если Hour() уже давно не равен HourOpenPos1.

Отсюда вывод. Надо вышеуказанное условие ставить непосредственно перед покупкой, то есть вместо:

if ( Type == OP_BUY)
А параметры: LifeTimeHours, StopLoss, TakeProfit я думаю, тоже имеет смысл разделить для покупок и продаж. Так же как Вы сделали с HourOpenPos1 и HourOpenPos.
 
KimIV писал (а) >>

Я сам проверил... неправильно...

Вот этим условием:

мы разрешаем покупки. И наше разрешение продолжает действовать даже если Hour() уже давно не равен HourOpenPos1.

Отсюда вывод. Надо вышеуказанное условие ставить непосредственно перед покупкой, то есть вместо:

А параметры: LifeTimeHours, StopLoss, TakeProfit я думаю, тоже имеет смысл разделить для покупок и продаж. Так же как Вы сделали с HourOpenPos1 и HourOpenPos.

Отлично. Все получилось.

double price, sl, tp;

if ( Hour() == HourOpenPos1)
{
if (BuyCnt == 0) {
price = Ask;
sl = 0;
tp = 0;
if (StopLoss > 0) sl = price - StopLoss*Point;
if (TakeProfit > 0) tp = price + TakeProfit*Point;
Buy(Symbol(), 0.1, price, sl, tp, Magic, CurTime()+LifeTimeHours*60*60);
}

}

if ( Hour() == HourOpenPos)
{

if (SellCnt == 0) {
price = Bid;
sl = 0;
tp = 0;
if (StopLoss > 0) sl = price + StopLoss*Point;
if (TakeProfit > 0) tp = price - TakeProfit*Point;
Sell(Symbol(), 0.1, price, sl, tp, Magic, CurTime()+LifeTimeHours*60*60);
}

}
}

 
Можно еще вопрос?
 
azfaraon писал (а) >>
Можно еще вопрос?

да

 
KimIV писал (а) >>

да

Скажем хочу написать следущее:

если цены средняя закрытия часовых свечей вчерашнего дня (iClose(Symbol,PERIOD_H1, 0)+.......iClose(Symbol, PERIOD_D1,24)/24

выше средней iClose(Symbol, PERIOD_D1, 1)+iOpen (Symbol, PERIOD_D1, 1)/2 то покупаем.

 
azfaraon писал (а) >>

Скажем хочу написать следущее:

если цены средняя закрытия часовых свечей вчерашнего дня (iClose(Symbol,PERIOD_H1, 0)+.......iClose(Symbol, PERIOD_D1,24)/24

выше средней iClose(Symbol, PERIOD_D1, 1)+iOpen (Symbol, PERIOD_D1, 1)/2 то покупаем.

Так и пишите то, что сказали... :-)

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