Судя по отзывам, классический усреднятор многим понравился.
Чуть допилил и выложил на гитхаб.
Самая большая проблема и опасность любого Мартина — это слив депо.
Защитимся от этого параметром MaxDrillDown (суть стоплосс).
Если сумма всех убыточных позиций по деньгам достигает этого значения, то вся набранная поза сбрасывается, все счетчики обнуляются, и поиск начальной точки входа начинается заново.
Теперь скрипт лежит, однако, здеся:
https://github.com/tp55/TurboMartin/blob/master/TurboMartin.lua
Пользуйтесь, не обляпайтесь.
Будут ошибки — обязательно пишите, хоть сюда, хоть в личку.
C:\QUIK_AD\Quik\LuaIndicators\TurboMartin.lua:233: attempt to index local 'ff' (a nil value)
1. DoFire на 174 строке лишнее os.date() при выводе в лог. В логирующей функции уже вставляется дата;
2. SetValueToFile сделать с тремя параметрами (третий параметр это тип доступа), а в WLOG уже ее дергать, а для сохранения позиций сделать метод из которого уже дергать SetValueToFile, если будет лень дописывать третий параметр при вызове?
3. Есть цикл сохранения PosList, а разве нельзя сделать склейку значений в одну строку и потом сохранить ее через SetValueToFile? Меньше кода (особенно копипастов), меньше багов :)
4. В слове «Параемтр» опечатка;
5. Может логировать не «We are here», а более понятное сообщение согласно коменту надо вызовом логирования?
6. Есть еще кучка старнного типа названия переменной «PositionList», но по факту это имя файла.
В ближайших планах — вывод всех функций для всех роботов в общую внешнюю библиотеку, чтобы упростить самих роботов и сделать их предельно компактными.
Мартин на наших акциях сверхрискован!
Мало того, что его нельзя использовать с плечом, лучше его вообще не использовать, или, на крайний случай, как небольшое дополнение к портфелю трендовиков.
Авотору респект за работу, но будьте осторожны.
Сколько раз цикл усреднение — стоп может случиться, скажем, в ситуации а-ля 2008 год?
В такой ситуации, при прочих равных, лучше несколько раз сбросить позу и начать заново, чем раскормить экспоненциального лося.
Если выбрать StepSize=2 рубля, и начать с 1 лота, то по газику можно открыть менее 80 лотов, со средней ценой ~80, даже если бумага будет = нулю. Для этого надо всего 64000 рублей.
Вот условия для «несливайки».
Все остальное для меня мат. ожидания от страты:)
Кстати Вас много лет вижу на СЛ. Возник только что вопрос к вам.
Мне на днях понадобилась Вижл студио профессиональная, Прежде чем покупать подписку хотелось бы узнать есть ли возможность получить VS pro бесплатно?=)
Sofiana, почему именно Про, а не Коммьюнити? Или не Xamarin на худой конец?
Не совсем по адресу вопрос. Я не занимаюсь продажей Студий, тонкостей лицензирования не знаю.
Если выбрать StepSize=2 рубля, и начать с 1 лота, то по газику можно открыть менее 80 лотов, со средней ценой ~80, даже если бумага будет = нулю. Для этого надо всего 64000 рублей.
Вот условия для «несливайки».
У меня вопрос. В твоих роботах всегда функция 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
Не работает… если не сложно, можешь подсказать?
при запуске скрипта получаю «TurboPascal.lua:119: attempt to index field '?' (a nil value)», идентификаторы цены _Price и скользящей _MA указанный, папки для логирования созданы, в фаил «CurrentState» записывается значение MARTIN. Версия quik 7.16.2.5 demo сервер.
Понимаю, что вместо цены ничего не получаем.
Подскажите, где я мог ошибиться ?
Спасибо