Приветствую.
Всем известный код Закрытия ордеров немножко изменил.
void CloseAll(int ot=-1)
{
bool cl;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==0 && (ot==0 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),30,White);
}
if(OrderType()==1 && (ot==1 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),30,White);
}
}
}
}
if(CountOrders(ot)>0)
{
CloseAll(ot);
}
}
Тем самым запустил движения обновления всех советников до красивого функционала.
Но тролей много и могут всё испортить.
Поэтому, просьба не быть равнодушным и выкладывать обновлённый функционал скриптов.
Спасибо!
Комментарии (26)
13 axe44 Автор Сообщений: 1149 - Алек
2. Что хорошего дает задержка? (Sleep(100)
14 verta81 Сообщений: 459
Открываем демо счёт и открываем ордеров двадцать. После этого в настройка указываем «торговля в один клик». Если всё сделали правильно, то можно приступать.
В терминале напротив ордеров можно найти справа крестик, при нажатии на который ордер закрывается.
Нам нужно как можно быстрее снизу вверх нажеть на все крестики один раз.
По факту получи от 2 до 5 незакрытых ордеров.
Поэтому в этой функции я вызываю подсчёт ордеров, и в случаи если они есть вызываем функцию закрытия ордеров ещё раз.
Задержка нужна для комфортного ответа сервера на терминал, что ордер закрылся. Задержку между терминалом и сервером можно посмотреть в нижнем правом углу.
Если торговый поток будет занят ответами сервера, то получим незакрытые ордера.
Как бы мне можно не верить, но можно верить эксперименту.
13 axe44 Автор Сообщений: 1149 - Алек
14 verta81 Сообщений: 459
35 AM2 Сообщений: 16441 - Андрей
«do-while» и «while» работают в 5 раз медленней обычно цикла for. Простым роботом можно это проверить внутри которого буде просто цикл. Останется запустить оптимизацию c одним параметром.
Через минуту будет готово. В качестве эксперимента будет цикл 100 до 0 повторов в кубе.
Сначала проверим на скорость «while» телом цикла
Как видим получили около 50 секунд размышлений:
Теперь проверим на скорость «for» с телом кода
Ничего оригинальней придумать не мог в одну операцию ) и получили скорость 0. Потом проверил ещё раз и снова ноль, но при этом получил ещё и запись о кеше:
Как бы это просто эксперимент.
13 axe44 Автор Сообщений: 1149 - Алек
И на выходе получил скорость:
Как видим оба цикла приблизительно в скоросте равны.
Как я мог ошибаться
13 axe44 Автор Сообщений: 1149 - Алек
24 ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.
13 axe44 Автор Сообщений: 1149 - Алек
Вопрос такой.
Тебе нужно удалить вообще все отлоги?
Или, например, только баевые/селловые? Редактирован: 20 июля 2021, 19:43
24 ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.
13 axe44 Автор Сообщений: 1149 - Алек
тогда код будет выглядеть так:
35 AM2 Сообщений: 16441 - Андрей
Небольшая вишенька от меня ) Вместо Sleep()
Ещё было бы неплохо ещё иметь выбор закрытия ордеров
13 axe44 Автор Сообщений: 1149 - Алек
Сам код:
Должен быть выбран предварительно с текущей датой:
Но код почему то не работает. Редактирован: 23 июля 2021, 16:30
13 axe44 Автор Сообщений: 1149 - Алек
Пользуйтесь на здоровье!
13 axe44 Автор Сообщений: 1149 - Алек
13 axe44 Автор Сообщений: 1149 - Алек
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий