Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
этот код не заставляет каждую сделку, которую открывает мой советник, истекать через 12 часов с момента открытия...
Времяистечения ордера работает только для отложенных ордеров. Если OrderSend() имеет значение OP_BUY или OP_SELL, вам необходимо установить время действия ордера в коде. Вот один простой пример.
int OrderTime;
OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask+TakeProfit*Point,"timetest",16384,0,Green)
OrderTime=TimeCurrent();
int total = OrdersTotal();
for(int cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if((OrderType() <= OP_SELL) && (OrderSymbol() == Symbol()) )
{
if(OrderType()==OP_BUY && TimeCurrent()-OrderTime>(12*60)*60)
{
OrderClose(OrderTicket(),LotsOptimized(),Bid,3,Violet);
}
}
}Wackena
код не работает правильно
Я использовал его для отправки по электронной почте статуса моего счета каждый час. однако после того, как я скомпилировал и загрузил его. он прекрасно отправил это письмо на следующий час в минуту № 59, как и должно быть, а затем он больше не отправлял его. что я делаю не так? он выглядит идеально?
Мне не нужно это в минуту #59, мне нужно это каждый час!!!
bool mail;
int start()
{
if (Minute()>=59 && !mail){
SendMail("Account Status","Account Balance is="+DoubleToStr(AccountBalance(),2)+"_Account Equity is="+DoubleToStr(AccountEquity(),2)+
"_Прибыль счета="+DoubleToStr(AccountProfit(),2)+"_Маржа счета="+DoubleToStr(AccountMargin(),2)+
"_Account Free Margin is="+DoubleToStr(AccountFreeMargin(),2));
mail=true;
}
возможно, вам просто нужно поставить mail = false в какой-то момент или просто убрать этот тест на переменную mail, потому что, конечно, текущий код будет отправлять только 1 письмо.
Какой тест на переменную mail?... я не понимаю, пожалуйста, объясните...
Как насчет того, что сразу после mail=true я ставлю
if (minute()<=58 && !mail)
mail= false;
Как думаете, это может сработать?...
Я думаю, что это неправильно закодировано
Я думаю, вы можете поставить
if (minute()<=58 && mail) // будьте внимательны, не !mail, а mail
mail = false;
и это должно быть, но за пределами вашего первого if, так что не после mail = true; а после }
Возможно, есть лучшие способы написать это, но это должно сработать.
попробую.
Спасибо, попробую... сообщу вам через два часа.
отлично работает.... или, по крайней мере, похоже на то.
нужна помощь с этой частью кода
может ли кто-нибудь подсказать мне, как правильно написать это? я пытаюсь выделить открытые сделки на покупку и продажу по отдельности...
т.е.: если открытый bid > 2.
если open ask >2
Остальное я понял, просто не могу правильно написать эту часть.
Я знаю, что это просто, но я вырываю свои волосы.
кого-нибудь?
Кто-нибудь? Может, это был плохой вопрос?
if(Open[0] > 2){ //открытая ставка
//ваш код
}
if(Open[0]+(Ask-Bid) > 2){ //открыть запрос
//ваш код
}
в зависимости от вашего брокера, бэктестинг открытого запроса может не работать