Блог им. turbo_pascal

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

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

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

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

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

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

Будут ошибки — обязательно пишите, хоть сюда, хоть в личку.
★29 | ₽ 10
Паскалик, ну может накидаешь мне кодик?))
Денис Михайлов, ну я ж писал в личке — опишите четко алгоритм, может на досуге накидаю. За сроки не ручаюсь, поэтому за деньги писать не буду.
avatar

Turbo Pascal

в мт4/5 будет пахать?
Антон Иванов, нет, только квик.
avatar

Turbo Pascal

Паскаль, какой IDE пользуетесь?
avatar

podbelski

podbelski, никакой, Notepad++.
avatar

Turbo Pascal

podbelski, очевидно турбопаскалевским редактором
avatar

oerlikon

Из скрипта не понятно как параметр MaxDrillDown связан с деньгами( if (MaxDrillDown>Summa) then)?
avatar

legion73

legion73, да, косячок. Неправильно считало. Исправил ошибку.
avatar

Turbo Pascal

А как его в квик грузить? Где-то есть инструкция?
avatar

oerlikon

что может быть пишет:
C:\QUIK_AD\Quik\LuaIndicators\TurboMartin.lua:233: attempt to index local 'ff' (a nil value)
avatar

dennet

dennet, проверяйте имя файла. Папка должна существовать. Двойные слеши.
avatar

Turbo Pascal

Поглядел по быстрому:
1. DoFire на 174 строке лишнее os.date() при выводе в лог. В логирующей функции уже вставляется дата;
2. SetValueToFile сделать с тремя параметрами (третий параметр это тип доступа), а в WLOG уже ее дергать, а для сохранения позиций сделать метод из которого уже дергать SetValueToFile, если будет лень дописывать третий параметр при вызове?
3. Есть цикл сохранения PosList, а разве нельзя сделать склейку значений в одну строку и потом сохранить ее через SetValueToFile? Меньше кода (особенно копипастов), меньше багов :)
4. В слове «Параемтр» опечатка;
5. Может логировать не «We are here», а более понятное сообщение согласно коменту надо вызовом логирования?
6. Есть еще кучка старнного типа названия переменной «PositionList», но по факту это имя файла.
avatar

nskez

nskez, да, есть над чем работать.
В ближайших планах — вывод всех функций для всех роботов в общую внешнюю библиотеку, чтобы упростить самих роботов и сделать их предельно компактными.
avatar

Turbo Pascal

ВНИМАНИЕ!
Мартин на наших акциях сверхрискован!
Мало того, что его нельзя использовать с плечом, лучше его вообще не использовать, или, на крайний случай, как небольшое дополнение к портфелю трендовиков. 
Авотору респект за работу, но будьте осторожны.
avatar

SergeyJu

SergeyJu, всё под контролем, там есть СТОП! )
avatar

oerlikon

oerlikon, который, по моим расчетам, делает алгоритм еще хуже. 
Сколько раз цикл усреднение — стоп может случиться, скажем, в ситуации а-ля 2008 год? 
avatar

SergeyJu

SergeyJu, может сколько угодно, но насколько я понял посыл автора, должен он случаться ОДИН раз. После этого одного раза, если трейдер не наигрался, жалеть его никто не будет )
avatar

oerlikon

SergeyJu, 
 стоп может случиться, скажем, в ситуации а-ля 2008 год? 

В такой ситуации, при прочих равных, лучше несколько раз сбросить позу и начать заново, чем раскормить экспоненциального лося.
avatar

Turbo Pascal

Turbo Pascal, Вы пробовали протестить этот алгоритм, скажем, с 2007 года по настоящее время? Было бы интересно увидеть статистику бэктеста. Неважно, по сберу, или лукойлу или газпрому.
avatar

SergeyJu

SergeyJu, не-а, не тестил. Но...
Если выбрать StepSize=2 рубля, и начать с 1 лота, то по газику можно открыть менее 80 лотов, со средней ценой ~80, даже если бумага будет = нулю. Для этого надо всего 64000 рублей.
Вот условия для «несливайки».
avatar

Turbo Pascal

Turbo Pascal, там лот 10 акций, нет? То есть надо 640 тыр в пределе.
avatar

ch5oh

ch5oh, нет, лот по 10 акция я уже посчитал. 64т.
avatar

Turbo Pascal

Хех. Ты выложил код  для тестирования :D на подопытных смартлаба)

avatar

Sofiana

Sofiana, а Вы хотите, чтобы Вам грааль готовый выложили? =)
avatar

ch5oh

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

avatar

Sofiana

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


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

avatar

ch5oh

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

avatar

Sofiana

Sofiana, «Грааль — это формализованный алгоритм, реализованный в законченном виде в коде, с достаточно большим количеством сделок и достаточно большим матожиданием».
avatar

ch5oh

Sofiana, зачем «проф» версия. Что в ней необходимо, чего нет в commutiny edition?
avatar

Turbo Pascal

Turbo Pascal, Не чего на сколько мне известно. Во всяком случае для небольшой группы (команды) пользователей.
avatar

Sofiana

Кстати, чисто теоретически, раз только лонг, то можно рассчитать входы, чтоб на бесконечном времени не слиться никогда. Только если бумагу снимут.
avatar

MS

MS, да, выше уже писАл:
Если выбрать StepSize=2 рубля, и начать с 1 лота, то по газику можно открыть менее 80 лотов, со средней ценой ~80, даже если бумага будет = нулю. Для этого надо всего 64000 рублей.
Вот условия для «несливайки».
avatar

Turbo Pascal

Привет. Спасибо, что выкладываешь открытый код роботов в свободный доступ. Можно многому научится)

У меня вопрос. В твоих роботах всегда функция 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

Igor Sorokin

На шорты бы… подобное
Добрый день,

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

avatar

Алексей


....все тэги
UPDONW