Sergey Kovalyov
Элитный участник
Print("Ask = " + DoubleToStr(Ask, Digits)) для начала. Ты же пятый знак срезал. =)
Print("Ask = " + DoubleToStr(Ask, Digits)) для начала. Ты же пятый знак срезал. =)
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: Не удалось модифицировать стоплосс ордера №1. Ошибка: 130
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderModify error 130
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderOpenPrice() = 1.29789
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderStopLoss() = 1.29689
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: nextstair = 1.30589
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: Ask = 1.29717 Bid = 1.29708
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: Не удалось модифицировать стоплосс ордера №1. Ошибка: 130
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderModify error 130
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderOpenPrice() = 1.29789
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderStopLoss() = 1.29689
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: nextstair = 1.30589
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: Ask = 1.29715 Bid = 1.29706
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: Не удалось модифицировать стоплосс ордера №1. Ошибка: 130
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderModify error 130
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderOpenPrice() = 1.29789
2013.01.30 14:33:28 2011.01.12 13:29 Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderStopLoss() = 1.29689
Была такая проблема. Так и не решил. Скрипты как бы подкачивают, но не совсем и не всегда. Но я не фанат этого дела так что 100% ответа не дам.Уважаемые профи! подскажите плисс..
В терминале много окон различных иструментов и разных тайфреймов. Нужно быстренько их всех обновить не открывая каждое окно инструмента.
Существует ли возможность сделать это программно, например скрипт какой запустить?
Уважаемые профи! подскажите плисс..
В терминале много окон различных иструментов и разных тайфреймов. Нужно быстренько их всех обновить не открывая каждое окно инструмента.
Существует ли возможность сделать это программно, например скрипт какой запустить?
Ты б указал хоть суть задачи канкретно. Если ты руками торгуешь, то терминал и так всё обновит. А если ты торгуешь экспертом, то получая рыночные данные есть функция RefreshRates(). Он сам всё получит... Сложность то в чём вообще?
Суть задачи!
Эксперт в своей работе использует информацию не только того инструмента в окно которого он брошен но и некоторых других инструментов. Если окна этих инструментов не открыты в терминале то
эксперт пользуются "старыми" данными этих инструментов. Что бы обновить
эти инструменты нужно открыть в терминале окна этих инструментов.
Можно ли этот процесс "ручного" обновления как то программно автоматизировать?
Функция Refresh... обновляет данные только текущего инструмента, с инструментами окна которых не открыты в терминале она не работает.
Если код обращается к чужому символу/фрейму, а нужных данных нет на месте, то автоматически запускается рефреш для этого фрейма. GetLastError() в этом случае вернет 4066, надо просто подождать какое-то время. Иметь открытый график не обязательно, необходимо только чтобы символ присутствовал в обзоре рынка. И еще, если какой-то рефреш уже выпоняется, то второй не запустится.
1. Все за действующие инструменты открыты в обзоре рынка.
2. Почему то получается что скрипт не ждет когда обновятся данные инструмента к которому обращается его код а хватает то что есть на момент обращения к этим данным, т.е. старые данные которые сохранились со времени последнего обновления в терминале к этому инструмента.
Причем некоторые инструменты (после того как к ним обратился скрипт)
все таки обновляются, некоторые частично, а некоторые вообще нет. (видимо не успевают )
3. Кмк проще сначала обновить задействованные инструменты а потом работать с ними.
Именно так, скрипт ничего не ждет, но можно программно добиться обновления нужных таймфреймов, если следить за кодом ошибки и обходить все фреймы по очереди.
Через интерфейс обновлять тоже можно, надо через WinAPI эмулировать нажатие кнопок.
Разный цвет индикатора, если он использует буфера, это разные буфера.Помогите пожалуйста! как сделать чтобы советник открывал ордер при изменении цвета индикатора???
buf7[i]=buf1[i];
buf8[i]=buf1[i];
if(buf1[i] < buf1[i+1])
buf7[i] = EMPTY_VALUE;
if(buf1[i] > buf1[i+1])
buf8[i] = EMPTY_VALUE;
for (i=0; i<=OrdersTotal()-1; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if ( (OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic) )
{
double fir_op_pr = OrderOpenPrice();
if(ot==OP_BUY)
{
prof = NormalizeDouble((Bid-fir_op_pr),Digits)/Point; }
if (ot == OP_SELL)
{
prof = NormalizeDouble((fir_op_pr-Ask),Digits)/Point; }
break;
}
}
}
Есть такой код
Подскажите, пожалуйста, почему на бай работает всё как надо, а на селл - нет? Дальше код не привожу, потому что будет непонятно всё равно принцип работы - долго объяснять. Но на бай работает правильно!А на селл - нет...PHP:for (i=0; i<=OrdersTotal()-1; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if ( (OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic) ) { double fir_op_pr = OrderOpenPrice(); if(ot==OP_BUY) { prof = NormalizeDouble((Bid-fir_op_pr),Digits)/Point; } if (ot == OP_SELL) { prof = NormalizeDouble((fir_op_pr-Ask),Digits)/Point; } break; } } }
параметр открытия и будет проще пояснить.
1)Вместо ot напиши OrderType()Есть такой код
...
Подскажите, пожалуйста, почему на бай работает всё как надо, а на селл - нет? Дальше код не привожу, потому что будет непонятно всё равно принцип работы - долго объяснять. Но на бай работает правильно!А на селл - нет...