Избранные комментарии трейдера Mr_Noname

по

С разрешения Романа: практически готов робот по перевороту от любого уровня с воротами и стопом. Написан на qLua без всяких сторонних библиотек, платформ и т.д.
Робот:
1. Входные параметры (основные): Счет, инструмент, класс инструмента, количество контрактов для позиции, уровень для переворота, размер ворот, размер стопа, количество контрактов на закрытие по стопу, счетчик переворотов, идентификатор графика цены, идентификатор графика уровня, значение уровня (может работать и от уровня константы и от уровня индикатора), количество попыток на выставлении заявок по лучшей цене, время ожидание выставленной заявки, размер проскальзования.
2. Входные параметры (неосновные): ID торговой стратегии (комментарий с транзакции), номер робота (необходимо для генерации транзакции)
3. Работа, сигналы. Смотрим последние 2 закрытых свечи на указанном ТФ (работает на любом ТФ) Если предыдущая свеча была ниже, а последняя закрылась выше или равно+текущая цена тоже выше или равно уровня, то сигнал в лонг, наоборот в шорт. При сигнале выставляем заявку на указанное количество по рынку (отдельная песня) и выставляем ворота против движения на указанную величину и стоп на указанную величину
4. Выставление заявки. Общеизвестная проблема — цена может улететь и заявка не выполнится. Поэтому первые указанное количество попыток — выставление по цене бид/оффер+проскальзование. Ждем указанное число секунд, если не выполнилась до конца, то опять перевыставляем (старую снимаем) опять по текущему бид/оффер+проскальзование. После всех попыток, если все-таки что-то не выполнилось, то уже выставляем по максимальной/минимальной цене.
5. Если по инструменту уже есть (куплены вручную) контракты, то робот: допустим куплены в лонг и робот пересек уровень снизу вверх. В этом случае он ничего не делает, т.к. текущее число контрактов >0 Даже если оно не совпадает с указанным. А вот если сработали ворота, то он закроет все текущие контракты, а откроет указанное число.
6. Выгрузка логов в файл CSV для Excel (сообщения по работе+информация по сделкам).
7. Автоматически считает цену входа позиции по всем купленным контрактам, размер профита при закрытии по стопу или воротам (с учетом стоимости и размера шага, без учета комиссии)
8. Тестовый режим. Робот делает все вышеперечисленное, только не выставляет сами заявки, но все считает и ведет логи. Цена входа — текущая цена без проскальзования.
9. Индикатор уровня можно передвигать в процессе работа робота (изменение настроек уровня в индикаторе, не мышкой), при этом текущие ворота и стоп обнуляются и выставятся после первого сигнала на пробой нового уровня.
Пока все :)
avatar
  • 27 января 2016, 11:46
  • Еще
Андрей, более того, отбоя может и не быть. Именно на этот случай и ставим стопы.

Не забываем, отбой от уровней может быть коротенький.
Поэтому есть две стратегии.
Одна Романа
Половину позы сбрасываем буквально через 150пп, остаток — стоп под минимим/максимум… если цена проходит еще 150-200пп в нужную сторону Роман сбрасывает и остаток.
Вторая комбинированная для жадин.
Треть сбрасываем через 150пп, стоп на остаток под минимум/максимум, еще через 150-200 пп сбрасываем еще треть, еще треть держим либо до стопа либо дпо жадности. Потому что уровень вполне может оказаться не просто отбойным, а локально разворотным.
avatar
  • 27 января 2016, 11:05
  • Еще

Доброе утро! Уровни на сегодня:

Ри 68500, 66900, 67500, 70800, 71000, 74000, 75000

Си 80000, 80600, 81200, 81700дин, 77500, 77000, 83500

Нефть 31, 30,2, 29,2, 32,2, 34дин

avatar
  • 27 января 2016, 10:03
  • Еще
Название верное, многие скорее всего согласятся. По меркам западных финансовых консультантов стоимость покупаемого автомобиля не должна превышать 10% годового дохода домохозяйства или отдельно живущего гражданина, иначе автокредит становится первым шагом к банкротству. А теперь нужно просто посмотреть вокруг и представить у кого из соседей по стоянке, родственников или сослуживцев стоимость купленного автомобиля не превышает 10% от годового дохода и всё сразу станет ясно и понятно.
avatar
  • 26 января 2016, 00:22
  • Еще
Ребята. Ну вы даете. Каждую неделю этот вопрос обмусоливают.

Все сделки сессии по валютным контрактам пересчитываются по курсу основного клиринга. Включая сделки прошедшей вечерки.

Курс доллара падет => цена шага уменьшается => ваши маржи уменьшаются.
avatar
  • 22 января 2016, 18:49
  • Еще
важно не кто как считает — а кто как торгует
avatar
  • 22 января 2016, 17:08
  • Еще
Интересно, что за инсайдер работает в России? Сначала он продавал на весь стакан от 33 до 32, а сегодня в 13:05 откупился до 28.
avatar
  • 21 января 2016, 21:10
  • Еще
Fry (Антон), будем считать, что это ты понял.
Теперь следующий важный момент.
Существует две совершенно разные вещи, которые постоянно путаются в голове, если люди не понимают синтаксис предложения Си-подобного языка (именно Си, а не C++!).

Объявление — оно необходимо для компилятора, чтобы тот знал с каким типом данных связать конкретную переменную или функцию.

Определение — это значение. То есть байты которыми будет заполнена функция или переменная.
Для функции определение — это её тело (код функции).
Для переменной определение — это присвоение значения. В простейшем случае v=1 — это присвоение ячейке памяти, которую мы условно именуем v, состояния = 1.
При этом где-то раньше компилятору должно быть __объявлено__, что ячейка эта размером, скажем, 4 байта или 8 байт и только тогда он точно будет знать, что надо сформировать команду ассемблера, которая обнулит все эти 4 или 8 байта и лишь в младший бит поставит 1. Поэтому без объявления не обойтись.
Но тут начинается укороченная форма записи, когда например пишут:
int v=1;
Здесь сразу в одной строке идёт и объявление и определение переменной.
Точно так же можно сделать с функцией(методом) объявить и сразу определить. Но полная форма записи всё равно выглядит так:
int v;
v=1;

Возвращаемся к ООП.
int — это самый простой базовый тип данных, но там же может быть и класс (если не понял ещё раз читай прошлый камент).
Допустим:
StServerClass SmartServer;
Что это значит?
Ага. Именно так:
тип_данных имя
То есть, «сложная переменная»(оно и есть _объект_) по имени SmartServer теперь будет типа StServerClass.
При этом определения ещё не было! Это только объявление!
А вот объявление с определением в одну строку было у тебя в документации, но в примере кода они разделены на две строки.
Определение идёт дальше:
SmartServer = new StServerClass();

То есть сложной переменной (объекту) SmartServer присваивается значение StServerClass(). Прямо как в случае с v=1, только здесь не единица, а целый класс вместе с методами и данными.
Оператор new как раз означает для компилятора, что на этом месте во время выполнения программы надо будет в памяти развернуть(в смысле создать) экземпляр класса StServerClass.

Оператор try означает защиту от обращения в неопределённые области памяти. Это низкоуровневые технические заморочки.
Если, допустим, внутри блока try{} происходит попытка чтения/записи в память, которая защищена или вообще эти адреса не доступны, тогда программа не будет аварийно закрываться из-за такой ошибки. Это как бы сознательная попытка «тыкнуть» в некоторую облать памяти (по указателю) и проверить, а оно нам доступно?
Для чего это надо.
Опять таки, если с объявлением/определением объекта было что-то не так, тогда указатель на него физически будет мёртвым, так как объект не создан. На этапе компиляции программы не всегда можно гарантировать правильное создание любого объекта, вот и приходится использовать try.


* в этом каменте понятие «определение» я использовал некорректно (подзабыл сам, спасибо professor facepalm вразумил) и по сути спутал «определение» с «инициализацией», так что перечитать камент придётся ещё разок другой =), но всё равно в нём есть польза.
avatar
  • 14 января 2016, 06:32
  • Еще

Тимофей Мартынов, ну вот. Что-то ведь знаешь =)
У всего есть фундаментальная причина. Думай как компилятор. Что ему надо знать, чтобы собрать программу? Тип данных необходим.

Простые типы — это:
во-первых, размер памяти выделяемый под них в файле и во время исполнения программы;
во-вторых, применимые к ним операции ассемблера.
Один и тот же набор битов означает разные сущности (разный смысл закодирован) в зависимости от типа данных.
То есть, в памяти хранится некий набор нулей и единиц, но в зависимости от того какая операция ассемблера будет выполнена (для целых без знака, со знаком, для вещественных чисел...) на выходе мы получим разный результат.
Поэтому компилятору надо знать тип данных.

Далее. Входных параметров у функции может быть много, а возврат всегда один (при этом результатом действия функции может быть много разных изменений, но возврат только один).
Когда объявляется функция у неё тоже обязательно объявляется тип данных, это и есть тип возврата.
В этом смысле переменная и функция подобны по синтаксису.
переменная так: тип_данных имя = значение
функция так: тип_данных имя(параметры)
Это должно быть кристально ясно, чтобы можно было переходить к абстракциям ООП. На самом деле ты должен сразу в голове выделять как компилятор все составляющие «предложения». В рамках камента не влезает, надо развивать дальше тот же путь (понять весь синтаксис предложения любого С-подобного языка программирования). По сути каждая команда ассемблера — функция. То есть всё сверху до самого процессора подобно одно другому (и внутри процессора), но дробится на более мелкие субстанции. Так что если понимаешь один уровень, поймёшь и другой.


Затем переходим к ООП.
функция = метод.
Класс — это сложный тип «данных», который на самом деле физически отличает от простого типа данных только то, что класс допускает совокупность не просто данных (переменных, грубо говоря), но и включает в себя исполняемый код, то есть методы закреплённые за этими данными.
Такая концепция позволяет создавать более сложные программы с меньшим гемором.
Объект – это конкретное воплощение класса (экземпляр).

Ещё раз:

тип_данных имя

Если тип_данных – это класс, а не простой тип, тогда «имя» — это объект (экземпляр класса).

Ясно?

avatar
  • 14 января 2016, 03:52
  • Еще
Тимофей Мартынов, лучше Герберта Шилдта почитай, он хорошо основам учит.
avatar
  • 14 января 2016, 01:51
  • Еще
Я больше расскажу- году в 2000  меня попросили целый семестр преподавать Си +  , женщина препод ушла в декрет. И зная мой авантюрный характер, декан попросил меня семестр продержаться. И что вы думаете… Я легко продержался. Причем я и понятия не имел о языке. 
Допустим, я приходил на семинар и задавал работу- описать метод монте- карло на Си +… Я знал алгоритм, мне был известен ответ и меня не волновали операторы… Я с умным видом смотрел на скобки, описания объектов… Потом надувая губы говорил, что у петрова эта реализация выполнена красивее… Не хотите ли оптимизировать код?
И если приходили с просьбой помочь при написание алгоритма на языке… То я брался засучив рукава… Потом минут через пять придирался к какой нибудь переменной… И глядишь- студента осеняло самого… И так я провел 16 семинаров… в семестре.
avatar
  • 14 января 2016, 01:48
  • Еще
Тимофей ничем не отличается от большинства выпускников экс-советских ВУзов. Набивание руки и быстрый разбор кода приходит только с практикой.  Главное, что есть фундамент базового образования, дальше нужно только набирать опыт и  все систематизировать. Рассчитывать, что это можно сделать за день-два упорной работы, всё равно что рассчитывать, что за это же время можно научиться трейдингу.
:-)) 

хорошо, если программировал раньше, но сейчас занимаешься чем-то другим.
думаю, что свои навыки программирования на C# верну за месяц активного штудирования материала и выполнения задач с усложнением. На что-то более древнее, вроде LiSPa уйдет с месяца два-три.


«Одаренные ребята, увлеченные с детства программированием, просто продолжали развивать свои навыки, а я так и не смог «поджечь нефть».» Нельзя обьять необьятное, если хочешь добиться успеха, надо концентрироваться на конкретном направлении. И даже это не гарантирует успех в жизни.
У нас неодаренные ребята учили английский на всех парах и имели кучу хвостов в том числе по программированию с риском отчисления. Благо корочка и факультет с его конкурсом производили впечатление на работодателей а беглый английский и опыт работы с банковскими системами открывали двери для стажировок. Потом курсе на 4 уходили во всякие Citigroup. А одаренные сейчас в байкерах и мобилизованы на утилизацию зеленых человечков на Донбасе или оказывают консалтинговые услуги, перебиваясь заказами раз в два месяца. Так что не всегда даже одаренность и успешность в студенческие годы — гарантия безбедного будущего.
avatar
  • 14 января 2016, 01:45
  • Еще
Lafert, на самом деле, очень токсичная работа, хоть и менее токсичная чем трейдинг или работа на урановом руднике. Поэтому, я когда слышу про учителей и врачей и бюджетников, которые недополучают денег, хочется плюнуть в лицо этому человеку. Учителя и врачи просто в райских условиях находятся на своем рабочем месте, социальная реализация не сопоставима.
avatar
  • 14 января 2016, 01:13
  • Еще
Возьми учителя, время сэкономишь раз в 100, чем сам будешь со всей библиотекой разбираться.


ЗЫ Стратегия хоть есть, которую кодить собрался?

ЗЫЗЫ Приходи учить Lua, через 20 часов гарантирую будешь в КВИКЕ роботов писать.
avatar
  • 14 января 2016, 00:56
  • Еще
если бы ты потратил время не на это пост, а на изучение основ ООП, то не пух бы как винни-пух

ты делаешь ту же ошибку, что и в институте

кодить с АПИ надо уже имея нормальный опытв языке, тк АПИ как правило глючные, не говоря уже, что сам шарп не без греха

а главное — зачем? если есть торговый алгоритм — пиши на скрипте потом уже узкие места выясняй  не спеша и переписывай частями и без гуя

avatar
  • 14 января 2016, 00:54
  • Еще
Стресс прогноз по бюджету в районе 30-35$ за барель делался, так что пока предпосылок к росту нет. Путина об этом уведомляли, и он говорил мол ОК, разрулим. Вот если пробьет 30$ за барель брента, вот тогда рубль пойдет вверх и начнется паника, и ЦБ уже начнет впрягаться со своими рычагами. Но до тех пор пока это не произошло, и нарастает конфликт Иран — Саудовцы, все будет штилем или мелким колебанием. 
avatar
  • 07 января 2016, 00:08
  • Еще

Находясь в жопе, ты можешь сделать две вещи. Во-первых — постараться понять, почему ты в ней находишься. Во-вторых — вылезти оттуда. Ошибка отдельных людей и целых народов в том, что они думают, будто эти два действия как-то связаны между собой. А это не так. И вылезти из жопы гораздо проще, чем понять, почему ты в ней находишься. Почему? Вылезти из жопы надо всего один раз, и после этого про неё можно забыть. А чтобы понять, почему ты в ней находишься, нужна вся жизнь. Которую ты в ней и проведёшь.

Пелевин «Священная книга оборотня»

avatar
  • 07 января 2016, 00:05
  • Еще
....все тэги
UPDONW
Новый дизайн