Блог им. turbo_pascal

TurboMartin, обновление

Судя по отзывам, классический усреднятор многим понравился.

Чуть допилил и выложил на гитхаб.

Самая большая проблема и опасность любого Мартина — это слив депо.
Защитимся от этого параметром MaxDrillDown (суть стоплосс).
Если сумма всех убыточных позиций по деньгам достигает этого значения, то вся набранная поза сбрасывается, все счетчики обнуляются, и поиск начальной точки входа начинается заново.

Теперь скрипт лежит, однако, здеся: https://github.com/tp55/TurboMartin/blob/master/TurboMartin.lua

Пользуйтесь, не обляпайтесь.

Будут ошибки — обязательно пишите, хоть сюда, хоть в личку.
★30
37 комментариев
Паскалик, ну может накидаешь мне кодик?))
Денис Михайлов, ну я ж писал в личке — опишите четко алгоритм, может на досуге накидаю. За сроки не ручаюсь, поэтому за деньги писать не буду.
avatar
в мт4/5 будет пахать?
avatar
Антон Иванов, нет, только квик.
avatar
Паскаль, какой IDE пользуетесь?
podbelski, никакой, Notepad++.
avatar
podbelski, очевидно турбопаскалевским редактором
avatar
Из скрипта не понятно как параметр MaxDrillDown связан с деньгами( if (MaxDrillDown>Summa) then)?
avatar
legion73, да, косячок. Неправильно считало. Исправил ошибку.
avatar
А как его в квик грузить? Где-то есть инструкция?
avatar
что может быть пишет:
C:\QUIK_AD\Quik\LuaIndicators\TurboMartin.lua:233: attempt to index local 'ff' (a nil value)
avatar
dennet, проверяйте имя файла. Папка должна существовать. Двойные слеши.
avatar
Поглядел по быстрому:
1. DoFire на 174 строке лишнее os.date() при выводе в лог. В логирующей функции уже вставляется дата;
2. SetValueToFile сделать с тремя параметрами (третий параметр это тип доступа), а в WLOG уже ее дергать, а для сохранения позиций сделать метод из которого уже дергать SetValueToFile, если будет лень дописывать третий параметр при вызове?
3. Есть цикл сохранения PosList, а разве нельзя сделать склейку значений в одну строку и потом сохранить ее через SetValueToFile? Меньше кода (особенно копипастов), меньше багов :)
4. В слове «Параемтр» опечатка;
5. Может логировать не «We are here», а более понятное сообщение согласно коменту надо вызовом логирования?
6. Есть еще кучка старнного типа названия переменной «PositionList», но по факту это имя файла.
avatar
nskez, да, есть над чем работать.
В ближайших планах — вывод всех функций для всех роботов в общую внешнюю библиотеку, чтобы упростить самих роботов и сделать их предельно компактными.
avatar
ВНИМАНИЕ!
Мартин на наших акциях сверхрискован!
Мало того, что его нельзя использовать с плечом, лучше его вообще не использовать, или, на крайний случай, как небольшое дополнение к портфелю трендовиков. 
Авотору респект за работу, но будьте осторожны.
avatar
SergeyJu, всё под контролем, там есть СТОП! )
avatar
oerlikon, который, по моим расчетам, делает алгоритм еще хуже. 
Сколько раз цикл усреднение — стоп может случиться, скажем, в ситуации а-ля 2008 год? 
avatar
SergeyJu, может сколько угодно, но насколько я понял посыл автора, должен он случаться ОДИН раз. После этого одного раза, если трейдер не наигрался, жалеть его никто не будет )
avatar
SergeyJu, 
 стоп может случиться, скажем, в ситуации а-ля 2008 год? 

В такой ситуации, при прочих равных, лучше несколько раз сбросить позу и начать заново, чем раскормить экспоненциального лося.
avatar
Turbo Pascal, Вы пробовали протестить этот алгоритм, скажем, с 2007 года по настоящее время? Было бы интересно увидеть статистику бэктеста. Неважно, по сберу, или лукойлу или газпрому.
avatar
SergeyJu, не-а, не тестил. Но...
Если выбрать StepSize=2 рубля, и начать с 1 лота, то по газику можно открыть менее 80 лотов, со средней ценой ~80, даже если бумага будет = нулю. Для этого надо всего 64000 рублей.
Вот условия для «несливайки».
avatar
Turbo Pascal, там лот 10 акций, нет? То есть надо 640 тыр в пределе.
avatar
ch5oh, нет, лот по 10 акция я уже посчитал. 64т.
avatar
Хех. Ты выложил код  для тестирования :D на подопытных смартлаба)

avatar
Sofiana, а Вы хотите, чтобы Вам грааль готовый выложили? =)
avatar
ch5oh, Я Верю только в один грааль, это тот который основан на инсайде))
Все остальное для меня мат. ожидания от страты:)
Кстати Вас много лет вижу на СЛ. Возник только что вопрос к вам.
Мне на днях понадобилась Вижл студио профессиональная, Прежде чем покупать подписку хотелось бы узнать есть ли возможность получить  VS pro бесплатно?=)

avatar

Sofiana, почему именно Про, а не Коммьюнити? Или не Xamarin на худой конец?


Не совсем по адресу вопрос. Я не занимаюсь продажей Студий, тонкостей лицензирования не знаю.

avatar
ch5oh, Не зачем. Захотелось про. чтоб стояло. Раньше была возможность получать лицензию почти бесплатно. Да, стоит Коммьюнити.

avatar
Sofiana, «Грааль — это формализованный алгоритм, реализованный в законченном виде в коде, с достаточно большим количеством сделок и достаточно большим матожиданием».
avatar
Sofiana, зачем «проф» версия. Что в ней необходимо, чего нет в commutiny edition?
avatar
Turbo Pascal, Не чего на сколько мне известно. Во всяком случае для небольшой группы (команды) пользователей.
avatar
Кстати, чисто теоретически, раз только лонг, то можно рассчитать входы, чтоб на бесконечном времени не слиться никогда. Только если бумагу снимут.
avatar
MS, да, выше уже писАл:
Если выбрать StepSize=2 рубля, и начать с 1 лота, то по газику можно открыть менее 80 лотов, со средней ценой ~80, даже если бумага будет = нулю. Для этого надо всего 64000 рублей.
Вот условия для «несливайки».
avatar
Привет. Спасибо, что выкладываешь открытый код роботов в свободный доступ. Можно многому научится)

У меня вопрос. В твоих роботах всегда функция HaveOpenPosition заточена под фьючерсы.  Как можно использовать аналогичную функцию под акции? 


function HaveLongOpenPosition()for i = 0,getNumberOf(«FIRM_HOLDING») — 1 doif getItem(«FIRM_HOLDING»,i).sec_code == SEC_CODE thenif getItem(«FIRM_HOLDING»,i).currentpos > 0 thenreturn trueendendendend


Не работает… если не сложно, можешь подсказать?
avatar
На шорты бы… подобное
Добрый день,

при запуске скрипта получаю «TurboPascal.lua:119: attempt to index field '?' (a nil value)», идентификаторы цены _Price и скользящей _MA указанный, папки для логирования созданы, в фаил «CurrentState» записывается значение MARTIN. Версия quik 7.16.2.5 demo сервер.
Понимаю, что вместо цены ничего не получаем.
Подскажите, где я мог ошибиться ?
Спасибо

avatar

теги блога Turbo Pascal

....все тэги



UPDONW
Новый дизайн