Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 219
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Все Buy и все Sell - два разных скрипта. Это с самого начала было ясно. Вопрос вот в чём - он должен закрыть абсолютно все позиции? Или же он должен закрыть только те позиции, которые находятся на том графике, на котором запущен скрипт? Он должен закрыть позиции, открытые вручную или позиции, открытые каким-либо советником, или и те и другие?
Все абсолютно но по типу на том графике на котором скрипт, чтобы максимально простой получился желательно а то понапишут еррроры проверки всякие и т.д., мне кажется такому скрипту этого ничего не надо. Я советниками не пользуюсь, я только тринеруюсь щас, занятия в жизни бближайший месяц пару не намечается потому решил форекс посмотреть, что да к чему.
Так вот как раз обработка торговых ошибок отличает в данном случае хороший скрипт от учебного пособия. Вам как нужно - поучиться на нём или чтобы он отрабатывал 100% ?
Если вам нужен просто принцип, то вот:
Закрывает и Buy и Sell.
Нет абсолютно никаких обработок ошибок. Для себя сами сможете сделать закрытие только Buy или только Sell - одну строчку удалить.
Ну... вот только Buy:
Для Sell:
Приогромная благодарность. Это то что нужно. Со строчками разобрался сразу, спасибо) но вот что такое ред и блуе и для чего, наверное показывает точку сброса каждого ордера, да? Когда испробую, сразу в кодебазу добавлю by artmedia70. А кстати зачем нужны обработки обышок если скрипт четкий и разработчик в нем уверен?
И может мне не надо кстати добавлять их а сам разработчик т.е. artmedia70 добавит в кодебазу, они там окажуться востребованы, да и акаунта у меня там нет, да и на комментарии ответить не слова не смогу, а?
Приогромная благодарность. Но это то что нужно. Со строчками разобрался сразу, спасибо) но вот что такое ред и блуе и для чего, наверное показывает точку сброса каждого ордера, да? Когда испробую, сразу в кодебазу добавлю by artmedia70.
Нет, в котобазу - ни в коем случае не нужно. Я привык делать надёжные вещи, а не учебные пособия :)
Если б я вам показал нормальный скрипт, вы бы мне сказали, что я опять, как и все, понаписал всяких ерроров... Но... без них нельзя. Это ж - работа с нашими деньгами.
Blue и Red - это цвет значка закрытия.
Нет, в котобазу - ни в коем случае не нужно. Я привык делать надёжные вещи, а не учебные пособия :)
Если б я вам показал нормальный скрипт, вы бы мне сказали, что я опять, как и все, понаписал всяких ерроров... Но... без них нельзя. Это ж - работа с нашими деньгами.
Blue и Red - это цвет значка закрытия.
А кстати зачем нужны обработки обышок если скрипт четкий и разработчик в нем уверен?
Разработчик будет уверен в работе своей программы только в том случае, если его программа будет обрабатывать возвращаемые ошибки торгового сервера. Если обработку ошибок не делать, то программа может споткнуться при первой же ошибке. Ошибка НЕ программы, а ошибка, которую возвращает торговый сервер. Например - в приведённом скрипте нет получения свежих данных. Значит сервер может вернуть ошибку о неверной цене. Для этого нужно перед закрытием постараться получить самое последнее торговое окружение - выполнить команду RefreshRates(); или вместо цены закрытия Ask или Bid использовать цену, полученную посредством MarketInfo(Symbol(),MODE_ASK); или MarketInfo(Symbol(),MODE_BID);
Тогда скрипт примет уже такой вид (для Sell):
А если постараться обработать и другие ошибки, возвращаемые сервером, то он будет разрастаться до тех величин, когда вы скажете - "опять понаписали..." :)
Теперь понял все и да, это важно. Интернет у нас щас никуда не годится это факт, железо тоже еще молодо, потому на них надеяться на все двести процентов не совсем и разумно, но риск дело благородное =) а за дополнение опять спасибо, добавлю к себе и в buy и в sell.
это правильно для buy?
void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;
for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()==OP_BUY) {
double pp=MarketInfo(sy,MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pp,5,Blue);
}
}
}
return;
}
А если нужно из 5 buy сбросить только 3 ордера buy из всех имеющихся, стоимость которых самая большая, скрипт больше по размерам получится artmedia70? И еще один вопрос если не надоел спрашивать, ведь на эти проверки все время нужно, интересно вероятность проскока у какого скрипта выше у того, который с проверками или у того который без проверок на еррроры?
Теперь понял все и да, это важно. Интернет у нас щас никуда не годится это факт, железо тоже еще молодо, потому на них надеяться на все двести процентов не совсем и разумно, но риск дело благородное =) а за дополнение опять спасибо, добавлю к себе и в buy и в sell.
это правильно для buy?
Да. Только это ещё не всё... ;)
Этот скрипт, помимо оставшихся необработанных подобных ошибок, кроме того, будет ещё и "чужие" ордера трогать. Т.е., если у вас на этом символе работает какой-либо советник, то скрипт будет закрывать и его позиции, а он, в свою очередь, будет их опять открывать. Так они и будут друг с другом "спорить".
Чтобы этого не происходило, нужно ограничить скрипт и по магику. Т.е., добавить строку if (OrderMagicNumber()>0) continue; Тогда скрипт будет отрабатывать только ордера, открытые вручную.
Для Sell:
И много там ещё чего дорабатывать для "нормальной" надёжности. Придёт со временем, не сомневайтесь. ;)
Да. Только это ещё не всё... ;)
Этот скрипт, помимо оставшихся необработанных подобных ошибок, кроме того, будет ещё и "чужие" ордера трогать. Т.е., если у вас на этом символе работает какой-либо советник, то скрипт будет закрывать и его позиции, а он, в свою очередь, будет их опять открывать. Так они и будут друг с другом "спорить".
Чтобы этого не происходило, нужно ограничить скрипт и по магику. Т.е., добавить строку if (OrderMagicNumber()>0) continue; Тогда скрипт будет отрабатывать только ордера, открытые вручную.