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

 
mladen:
Эта часть

if(newbar==Time[0])return(0);

else newbar=Time[0];

int ticket, total;

if(Bars<100)

{

Print("баров меньше 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit меньше 10");

return(0); // проверяем TakeProfit

}

Мешает ли ea закрывать ордера в определенное время, если это не первый тик нового бара и если прибыль не > 10 пунктов.

Привет, mladen, я удалил эту часть кодировки, но все равно моя ea не закрывается в желаемое время.

У вас есть идеи, в чем может быть причина? Спасибо.

С уважением,

Райан

 
tkuan77:
Привет mladen, я удалил эту часть кодировки, но все равно моя ea не закрывается в желаемое время.

Есть ли у вас идеи, в чем может быть причина? Спасибо.

С уважением,

Райан

В том виде, в котором она написана, она будет закрывать ордера только, и только если время брокера точно 07:00:00.

 
mladen:
В том виде, в котором он написан, он будет закрывать ордера только и только если время брокера точно 07:00:00

Привет, mladen, есть ли другой способ обойти это, так как, похоже, он не работает здесь.

С уважением,

Райан

 
tkuan77:
Привет mladen, есть ли другой способ обойти это, так как кажется, что это не работает здесь.

С уважением,

Райан

Попробуйте использовать

If (TimeCurrent()>= StringToTime("07:00:00"))

вместо этого

 
mladen:
Попробуйте использовать

If (TimeCurrent()>= StringToTime("07:00:00"))

вместо этого

Привет, mladen, это все еще не работает. Мне интересно, может ли это быть связано с этими строками здесь... либо OrdersTotal или OrderSelect могут быть причиной проблемы?

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

С уважением,

Райан

 
tkuan77:
Привет, mladen, это все еще не работает. Мне интересно, может ли это быть связано с этими строками... либо OrdersTotal, либо OrderSelect могут быть причиной проблемы?

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

С уважением,

Райан

Нет. Эти строки верны

 
mladen:
Нет. Эти строки верны

Привет, mladen, потому что я установил свою ea, чтобы иметь только 1 сделку в любой момент времени, и я заметил, что OrdersTotal установил мой int i count в отрицательный 0 на 1-1, i>=0; i-- сделает мой i=-1.

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

else if(total > 1) //для закрытия ордеров на основе времени... пока не решено.

{

if (Hour()==7 && Minute()==30)

{

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

pBid=MarketInfo(OrderSymbol(),MODE_BID);

OrderClose(OrderTicket(),OrderLots(),pBid,1,Blue);

}

if (OrderType()==OP_SELL)

{

pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

OrderClose(OrderTicket(),OrderLots(),pAsk,1,Red);

}

}

}

}//

}

return(0);

}

 
tkuan77:
Привет mladen, потому что я настроил свою ea, чтобы иметь только 1 сделку в любой момент времени, и я заметил, что OrdersTotal установил мой int i count в отрицательный 0 на 1-1, i>=0; i-- сделает мой i=-1

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

else if(total > 1) //для закрытия ордеров по времени... пока не решено.

{

if (Hour()==7 && Minute()==30)

{

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (!UseCurrSymbol || OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUY)

{

pBid=MarketInfo(OrderSymbol(),MODE_BID);

OrderClose(OrderTicket(),OrderLots(),pBid,1,Blue);

}

if (OrderType()==OP_SELL)

{

pAsk=MarketInfo(OrderSymbol(),MODE_ASK);

OrderClose(OrderTicket(),OrderLots(),pAsk,1,Red);

}

}

}

}//

}

return(0);

}

Пожалуйста, замените это : f (Hour()==7 && Minute()==30) на строку, которую я вам отправил, и попробуйте.

OrdersTotal() вернет 1, если есть открытый ордер. При использовании OrderSelect(), этот 0 (OrdersTotal()-1) выберет правильный ордер. Если OrdersTotal() возвращает 0, значит, в пуле активных ордеров нет открытых ордеров.

 
mladen:
Пожалуйста, замените это : f (Hour()==7 && Minute()==30) на строку, которую я вам отправил и попробуйте, тогда OrdersTotal() вернет 1, если есть открытый ордер. При использовании OrderSelect(), этот 0 (OrdersTotal()-1) выберет правильный ордер. Если OrdersTotal() возвращает 0, значит, в пуле активных ордеров нет открытых ордеров.

Привет, Младен, к сожалению, я только что повторил попытку, и она все еще не работает.

Есть ли другой способ, с помощью которого я могу закрыть свою сделку, основываясь на определенном времени?

С уважением,

Райан

 
mladen:
Пожалуйста, замените это : f (Hour()==7 && Minute()==30) на строку, которую я вам отправил, и попробуйте, тогда OrdersTotal() вернет 1, если есть открытый ордер. При использовании OrderSelect(), этот 0 (OrdersTotal()-1) выберет правильный ордер. Если OrdersTotal() возвращает 0, значит, в пуле активных ордеров нет открытых ордеров.

Привет mladen, мне удалось решить проблему. похоже, что этот лайнер был причиной проблемы. код работает после того, как я его удалил.

else if(total > 1)

Спасибо за помощь...

С уважением,

Райан