Как кодировать? - страница 63

 

КАК открыть ордер только в начале бара ??

Здравствуйте,

Реализую советник, в котором хочу открывать ордер только в том случае, если между вторым предыдущим баром и предыдущим произошло пересечение индикатором какого-то уровня.

Например, на дневном графике, если есть пересечение между 18 января и 19 января, я хочу открыть ордер 20 января.

Я сделал примерно следующее:

Когда я открываю ордер, я записываю время открытия ордера.

Затем я выполняю следующий тест: Is (CurrentTime() - LastOrderOpenTime) < Period()?

Если да, то это означает, что текущий бар еще не закончен, и я не должен открывать новый ордер. А также, когда это условие становится ложным, я должен быть на следующем баре графика, а кросс произошел до последнего бара и ордер не должен быть открыт до следующего сигнала.

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

 
dvarrin:
Привет,

Я реализую советник, в котором я хочу открывать ордер только в том случае, если между вторым предыдущим баром и предыдущим произошло пересечение индикатором некоторого уровня.

Например, на дневном графике, если между 18 января и 19 января произошло пересечение, я хочу открыть ордер 20 января.

Я сделал примерно следующее:

Когда я открываю ордер, я записываю время открытия ордера.

Затем я выполняю следующий тест: Is (CurrentTime() - LastOrderOpenTime) < Period()?

Если да, то это означает, что текущий бар еще не закончен, и я не должен открывать новый ордер. И еще, когда это условие становится ложным, я должен быть на следующем баре графика, а кросс произошел до последнего бара и ордер не должен быть открыт до следующего сигнала.

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

Не уверен, но вот что кто-то сделал для меня некоторое время назад. Мне придется погуглить, чтобы дать должный респект автору.

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

int newbar()

{

double g;

int m,s,k;

m=Time[0]+Period()*60-TimeCurrent();

g=m/60.0;

s=m%60;

m=(m-m%60)/60;

return(m);

}[/CODE]

And I use it like this:

[CODE]if (newbar()==Period())

Надеюсь, это поможет.

 
dvarrin:
Привет,

Я реализую советник, в котором я хочу открывать ордер только в том случае, если между вторым предыдущим баром и предыдущим произошло пересечение индикатором некоторого уровня.

Например, на дневном графике, если между 18 января и 19 января произошло пересечение, я хочу открыть ордер 20 января.

Я сделал примерно следующее:

Когда я открываю ордер, я записываю время открытия ордера.

Затем я выполняю следующий тест: Is (CurrentTime() - LastOrderOpenTime) < Period()?

Если да, то это означает, что текущий бар еще не закончен, и я не должен открывать новый ордер. А также, когда это условие становится ложным, я должен быть на следующем баре графика, а кросс произошел до последнего бара и ордер не должен быть открыт до следующего сигнала.

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

Тогда я делаю следующий тест: Is (CurrentTime() - LastOrderOpenTime) < Period()??

можно добавить // return (0);

ИЛИ

это может помочь... добавьте код...

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;

if(OrderSymbol()== Symbol () && OrderMagicNumber()== MN)

{

if( OrderOpenTime() >= iTime(0, PERIOD_D1, 0) samebar++;

}

}

вы можете выбрать один из двух вариантов.

if ( samebar > 0 ) return (0);

ИЛИ

if (samebar < 1) {ваши коды заказа;}

Я не силен в кодировании, поэтому может кто-нибудь попробует проверить, правильно ли я разместил коды...

 
dvarrin:
Здравствуйте,

Я реализую советник, в котором я хочу открывать ордер только в том случае, если между вторым предыдущим баром и предыдущим произошло пересечение индикатором некоторого уровня.

Например, на дневном графике, если между 18 января и 19 января произошло пересечение, я хочу открыть ордер 20 января.

Я сделал примерно следующее:

Когда я открываю ордер, я записываю время открытия ордера.

Затем я выполняю следующий тест: Is (CurrentTime() - LastOrderOpenTime) < Period()?

Если да, то это означает, что текущий бар еще не закончен, и я не должен открывать новый ордер. И еще, когда это условие становится ложным, я должен быть на следующем баре графика, а кросс произошел до последнего бара и ордер не должен быть открыт до следующего сигнала.

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

Уммм...

if(iOpen(Symbol(),0,0)==iClose(Symbol(),0,0)&&iLow(Symbol(),0,0)==iHigh(Symbol(),0,0))

{

//A new bar has happend.

}
 

Как узнать прибыль предыдущей сделки? А лоты, а боковик?

 
Dan7974:
Как узнать прибыль предыдущей сделки? И лоты, и стороны?

Используйте OrdersHistoryTotal() вместо OrdersTotal(). Затем используйте OrderProfit(), OrderLots() и т.д. Однако вы должны убедиться, что исторические котировки за интересующий вас период времени загружены, и я думаю, что вы можете сделать это только вручную - щелкните правой кнопкой мыши на вкладке 'Orders History' и выберите 'All History'.

Нужно было добавить, что вам нужно использовать 'MODE_HISTORY' с OrderSelect()...

 
omelette:
Используйте OrdersHistoryTotal() вместо OrdersTotal(). Затем используйте OrderProfit(), OrderLots() и т.д. Однако вы должны убедиться, что исторические котировки за интересующий вас период времени загружены, и я думаю, что вы можете сделать это только вручную - щелкните правой кнопкой мыши на вкладке 'Orders History' и выберите 'All History'. Нужно было добавить, что вам нужно использовать 'MODE_HISTORY' с OrderSelect()...

Привет, Омлет,

Знаете ли вы, что у BT есть проблема с просмотром истории: он смотрит на реальную историю, а не на историю BT. Я спрашивал Metaquote несколько месяцев назад об этой ошибке, но у них не было никакого ответа..... Возможно, сейчас это исправлено...

 

Привет

Как закодировать цикл ужесточения процентной ставки по одной валюте и цикл снижения процентной ставки по другой валюте?

Может ли советник смотреть на текущие и исторические ставки свопов?

OILFXPRO

 
Файлы:
Причина обращения: