Всем привет! Прошу помощи по функционалу wealth-lab.
Всем привет! Прошу помощи по функционалу wealth-lab.
Я раньше всегда писал торговых роботов на встроенном языке квика qpile, т.к. легкий доступ до данных из таблиц квика. Но уж очень ограниченный язык, а отсутствие возможности протестить систему по истории, дало осознание, что надо искать более серьезную систему для написания роботов.
Начал разбираться с wealth-lab 4.0. Все хорошо, но литературы в интернете крайне мало.
Ребята, кто уже работает с лабом, подскажите пожалуйста пару моментов:
1) Как cовершать сделки внутри свечки?
В купайле я писал: if last_price> x then ...
А в лабе if PriceHigh(Bar)>x then BuyAtMarket(Bar,'') и он покупает или на открытии текущей свечи или на открытии следующей, если BuyAtMarket(Bar+1,'').
Можно ли сделать такое условие, чтоб покупка пошла сразу при достижение определенного уровня?
2)Как варьировать с размеров позиции?
Например, я купил и хочу продать половину или треть.
Я пишу:
BuyAtMarket(Bar+1,'')
P:= LastPosit;
SellAtLimit(Bar+1,x,p/2,'');
Но данная схема не работает. Есть ли какие-либо приемы или встроенные функции?
Заранее спасибо за лигбез.
Есть два типа входов внутри свечи: XAtStop и XAtLimit, где X — это Buy, Sell, Short или Cover. Почему Stop или Limit прочитайте в help, но смысл такой, что открытие свечи может оказаться вне вашей лимитированной цены.
Для разработки т е бектестинга на истории wl4 хороший инструмент, для автоторговли не особо.
«if PriceHigh(Bar)>x then BuyAtMarket(Bar,'')»
Для бектестинга так неправильно. На момент Open мы не знаем PriceHigh. Если Вы хотите стоп ордер протестировать то используем BuyAtstop(bar, уровень, комментарий), если Open выше уровня купит по уровню, если ниже а High выше то по уровню стопа. Но это бектестинг стратегии.
А вот для автоторговли вполне пойдет if pricehigh(bar)>уровня то отправить заявку т к мы работаем с активным баром.
«2)Как варьировать с размеров позиции?
Например, я купил и хочу продать половину или треть.»
Способов куча. Кроме задания размера позиции от капитала можно тупо сделать открывая позицию 2 (3) раза, запоминать position и потом закрывать не #all а конкретные позиции.
«SellAtLimit(Bar+1,x,p/2,'');»
Сейчас под рукой wl4 нет но тут ошибка. wl работает с номером позиции а не размером. Т е никаких p/2 быть не должно.
Кстати надо выбрать в ордерах какой то один вариант либо все делать bar+1 либо bar.
nfxzhzh, спасибо за помощь, все получилось.
Ответьте пожалуйста еще на 1 момент.
Как прописать в коде так, чтоб выход из лонга и вход в шорт осуществлялся на одном баре?
if LastPositionActive then
begin
условия выхода по профиту или стопу
end
else
begin
if not LastPositionActive then
begin
условия для входа в лонг или шорт
end;
end;
— когда срабатывает условие выхода, то программа выходит из позиции и уже not LastPositionActive, но заново не входит в позицию.
Займер сообщает о приобретении двух цифровых платформ
💼 Объявляем о завершении сделок с АО «Киви» по покупке 50% сервисов «Таксиагрегатор» и IntellectMoney. Владельцем остальных 50% долей в обеих компаниях остается АО «Киви». Сервисы позволят...
На прошлой неделе мы организовали поездку для представителей медиа и финансового сообщества на завод лазерной дочки SOFL — VPG LaserONE (входит в наш кластер «СФ Тех»). В экскурсии приняли участие...
Более половины россиянок считают ювелирные украшения инвестицией
Каждая пятая считает покупку ювелирных украшений надежным способом вложения денег, а 26% рассматривают подобный вариант накопления, однако относят его к списку рискованных. При этом свыше...
Мой Рюкзак #63: ВТБ - дальше без меня, меняем на более крепкий банк, дивидендные отсечки близко
Февраль продолжает радовать стоимостных инвесторов, все по стратегии, которую описывал в конце прошлого года
Прошлый пост тут — smart-lab.ru/mobile/topic/1260904/
Было 25,9 млн...
(9–13 февраля 2026 года) торговые позиции инсайдеров и крупных участников рынка нефти На прошедшей неделе (9–13 февраля 2026 года) торговые позиции инсайдеров и крупных участников рынка нефти (согласн...
«Селигдар» готовится к выводу Хвойного на проектную загрузку В январе холдинг «Селигдар» приступил к пусконаладочным работам на золотоизвлекательной фабрике (ЗИФ), построенной им на месторождении Хвой...
ТЦ, которым поплохело Пост больше для себя, чтоб не забыть важные нюансы.
Есть прямо на м. Н. Черемушки объект, без затей названный также. 5км до трешки, юга-запад, все дела.
Но посетителей встреч...
Смогут ли собрать с маркетплейсов в бюджет 1,5 трлн руб. дополнительно в 2027г Помните,
Греф с Набиуллиной в ноябре 2025г говорили, что маркетплейсы не доплачивают 1,5 трлн в год налогов в год.
ya...
Проблема лимонов: как незнание разрушает рынки и вредит всем нам (Часть 1)
🍋 Проблема лимонов — это экономическая концепция, показывающая, что происходит, когда продавец знает о товаре больше...
Для разработки т е бектестинга на истории wl4 хороший инструмент, для автоторговли не особо.
«if PriceHigh(Bar)>x then BuyAtMarket(Bar,'')»
Для бектестинга так неправильно. На момент Open мы не знаем PriceHigh. Если Вы хотите стоп ордер протестировать то используем BuyAtstop(bar, уровень, комментарий), если Open выше уровня купит по уровню, если ниже а High выше то по уровню стопа. Но это бектестинг стратегии.
А вот для автоторговли вполне пойдет if pricehigh(bar)>уровня то отправить заявку т к мы работаем с активным баром.
«2)Как варьировать с размеров позиции?
Например, я купил и хочу продать половину или треть.»
Способов куча. Кроме задания размера позиции от капитала можно тупо сделать открывая позицию 2 (3) раза, запоминать position и потом закрывать не #all а конкретные позиции.
«SellAtLimit(Bar+1,x,p/2,'');»
Сейчас под рукой wl4 нет но тут ошибка. wl работает с номером позиции а не размером. Т е никаких p/2 быть не должно.
Кстати надо выбрать в ордерах какой то один вариант либо все делать bar+1 либо bar.
Ответьте пожалуйста еще на 1 момент.
Как прописать в коде так, чтоб выход из лонга и вход в шорт осуществлялся на одном баре?
if LastPositionActive then
begin
условия выхода по профиту или стопу
end
else
begin
if not LastPositionActive then
begin
условия для входа в лонг или шорт
end;
end;
— когда срабатывает условие выхода, то программа выходит из позиции и уже not LastPositionActive, но заново не входит в позицию.
Спасибо за помощь еще раз.
Буду пробовать.