- Помощь в кодировании
- [Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2.
- Обсуждение статьи "Автоматное программирование как новый способ создания автоматических торговых систем"
Тики могут раз в 20-30 секунд приходить, как тогда быть? Наличие трейлинг-стопа выставленного для конкретного ордера вообще нельзя увидеть, ни выставленного этим советником, ни другим способом, разве что через ВинАпи подсмотреть, включён ли трал для него в терминале, это стоп-лосс вобще-то ведь, пока его не выставить, его нету.
К тому же все советники, кроме зацикленных, прекращают свою работу до нового тика безо всякого шаманства, если не ошибаюсь :)
Советник должен выставлять ордера НЕ ЧАЩЕ, чем один раз в три секунды. А там - хоть через час, хоть через два. Считайте это моей прихотью. Просто на одном из форумов прочел, что, во-первых, отсутствие частых обращений к серверу есть одно из правил хорошего тона (в моей стратегии такие обращения возможны), а, во-вторых, если советник часто обращается к серверу, то счет может быть заблокирован.
Что касается трейлинга... Мда, у меня вся стратегия именно на этом основана, пока советник ВСЕ открытые позиции в безубыток не вывел, то новые не будет открывать...
А стоп-лосс можно контролировать? По моему алгоритму трейлинг-стоп включается уже тогда, когда график выходит в безубыток. Т.е., например, при прибыли ордера 20 пунктов, советник выставляет трейлинг-стоп 15 пунктов. Тогда априори все ордера с трейлинг-стопами будут иметь уже выставленные стоп-лоссы. И тогда достаточно контролировать наличие стопов.
Советник должен выставлять ордера НЕ ЧАЩЕ, чем один раз в три секунды. А там - хоть через час, хоть через два. Считайте это моей прихотью. Просто на одном из форумов прочел, что, во-первых, отсутствие частых обращений к серверу есть одно из правил хорошего тона (в моей стратегии такие обращения возможны), а, во-вторых, если советник часто обращается к серверу, то счет может быть заблокирован.
И это не часто??? Отсутствие частых обращений к серверу - раз в 5-10 минут, не чаще, а "не чаще 1 раза в 3 секунды" рыночный ордер выставлять - чёй-то непонятное. Сомневаюсь что сервер ДЦ будет рад отвечать на запросы клиента чаще 10 раз в минуту :)))
Проверка по времени:
if(TimeLocal()-OrderOpenTime()<30) continue; //по времени клиентского компа прошло меньше 30 секунд от времени открытия ордера - пропускаем этот ордер без обработки.
Насчёт трала, в кодобазе множество скриптов и советников тралящих ордера с уровнем безубытка, можно любой как пример взять, вот хоть такой:
//-------------------------------------------------------------------- extern int TrailingStart = 35; extern int TrailingStop = 15; extern int Trstep = 4; //-------------------------------------------------------------------- int init() { } //-------------------------------------------------------------------- int deinit() { } //-------------------------------------------------------------------- int start() { double OSL,OOP,SL,TP; int OT; // for(int i = OrdersTotal()-1; i >= 0; i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol()) { OT = OrderType(); OSL = OrderStopLoss(); OOP = OrderOpenPrice(); TP = OrderTakeProfit(); // if(OT == OP_BUY) { if(Bid > (OOP + TrailingStart*Point)) if(Bid > (OSL + (Trstep+TrailingStop)*Point)) { SL = NormalizeDouble(Bid - TrailingStop*Point,Digits); if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error ",GetLastError()," Order Modify Buy SL ",OSL,"->",SL); else Print("Order Buy Modify SL ",OSL,"->",SL); } } if(OT == OP_SELL) { if(Ask < (OOP - TrailingStart*Point)) if(Ask < (OSL - (Trstep+TrailingStop)*Point)) { SL = NormalizeDouble(Ask + TrailingStop*Point,Digits); if(!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error ",GetLastError()," Order Modify Sell SL ",OSL,"->",SL); else Print("Order Sell Modify SL ",OSL,"->",SL); } } } } }
И это не часто??? Отсутствие частых обращений к серверу - раз в 5-10 минут, не чаще, а "не чаще 1 раза в 3 секунды" рыночный ордер выставлять - чёй-то непонятное. Сомневаюсь что сервер ДЦ будет рад отвечать на запросы клиента чаще 10 раз в минуту :)))
Проверка по времени:
Насчёт трала, в кодобазе множество скриптов и советников тралящих ордера с уровнем безубытка, можно любой как пример взять, вот хоть такой:
Спасибо, но немного не то.
1. Проверка ордеров. Имеется советник, работающий по некоему алгоритму использующему принцип локирования убыточных позиций. Этот алгоритм выводит по одному все открытые ордера в безубыток, выставляя после достижения некоей прибыли трейлинг-стоп. После того, как советник закончил работу с ордером и выставил трейлинг-стоп, он может "забыть" о нем (ордер в безубытке и боятся, что он упадет в минус не надо, по любому он закроется с плюсом) и выставлять новые ордера. Думаю, что теперь понятно почему я выбрал именно в качестве критерия проверки наличие трейлинга. Локирующие ордера не имеют его, и, следовательно, если есть ордера без трейлинга, то новые ордера выставляться не должны.
2. По времени 3 секунды. Я консультировался со службой технической поддержки ДЦ, где мне сказали, что в принципе они вообще не имеют ничего против ЛЮБОЙ частоты обращений к серверу (хоть несколько тысяч в секунду), но они не гарантируют на таких частотах обращения безсбойной работы. Наиболее оптимальным для моего VPS и их сервера они назвали как раз цифру не чаще одного ордера в три секунды. Еще раз повторяю, НЕ ЧАЩЕ!!! через два часа, через месяц - можно. Через 2,5 секунды - возможны сбои. Ну про время Вы мне дали скрипт. Небольшая доработка - и все нормально. Спасибо Вам за это.
А вот про трейлинг - думаю, что теперь Вам ясно, что это немного не то, что я ищу...
А где кодобаза? дайте ссылочку плз.
Спасибо!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования