Блог им. roev_ae

help with wealth-lab 4

Добрый вечер ув. форумчане.
Давно не писал ничего в велс-лабе 4
Сейчас столкнулся с проблемой — допустим у меня есть 4 активные позиции, мне надо закрыть их по частям. Я пишу:
if (условие 1) then SellAtMarket(Bar+1,? ,'');
...
if (условие 4) then SellAtMarket(Bar+1,? ,''); 

Что надо написать, чтобы закрывала только последнюю еще активную позицию, а не все разом?

Вопрос вроде не сложный, если кто активно занимается, напишите пожалуйста.
Заранее спасибо. 
19
16 комментариев
sellatclose(bar, номер позиции,"") как то так.
avatar
nfxzhzh, Как узнать номер?
Есть ф-я перебора по всем позициям PositionCount
Я пишу:
for i := PositionCount — 1 downto 0 do
begin
if PositionActive( i ) then
begin
SellAtMarket( Bar + 1, i, '' );
end;
Но закрываются также все позы
roev_ae, не надо узнавать, запоминайте когда открываете позицию в переменную т е что то типа

условие входа
buyatclose(bar,"");
запоминаем номер крайней открытой позиции в переменную pos1

попробую код поискать щас
avatar
pos1:=lastposition;
avatar
nfxzhzh, сча попробую, выглядит. как то что надо)
Ещё можно глянуть в хэлпе WL функцию SplitPosition
avatar
alt, ф-ию нашел, спасибо
alt, если позиция одна то да но по условиям
«допустим у меня есть 4 активные позиции»
тут не надо сплитить
avatar
nfxzhzh, не выходит, пишу:
BuyAtMarket(Bar+1,'one');
pos1:=LastPosition;

BuyAtMarket(Bar+1,'four');
pos4:=LastPosition;

SellAtLimit(Bar+1,fProfitPrice1,pos1,'profit1')

SellAtLimit(Bar+1,fProfitPrice4,pos4,'profit1')

проходит одной пачкой
При чем даже если:
BuyAtMarket(Bar+1,'one');
pos1:=LastPosition;

BuyAtMarket(Bar+1,'four');
pos4:=LastPosition;

SellAtLimit(Bar+1,fProfitPrice1,pos1,'profit1')
Тоже самое, т.е. pos1 кроет всю позу
roev_ae, сейчас не могу проверить но вообще Вы покупаете на следующем баре и позиция еще не открыта.

А Вы тестируете с какими настройками, на сделку 1 лот или процент от капитала какой нибудь?

Завтра попробую код прислать.
avatar
nfxzhzh, Да наверно из-за бар+1 так.
захожу 4 раза по 20% от эквити

Было бы круто посмотреть на работающий участок кода, где это реализовано, спасибо
roev_ae, вот по закрытиям как то так

var Bar: integer;
var pos1position, pos1num, pos2position, pos2num, pos3position, pos3num: integer;

pos1position:=0;
pos2position:=0;
pos3position:=0;

for Bar := 20 to BarCount — 1 do begin

{position1}
case pos1position of
0:
begin
if priceclose(bar)>priceclose(bar-1) then begin
buyatclose(bar,'le1');
pos1position:=1;
pos1num:=lastposition;
end;
end;
1:
begin
if priceclose(bar)<priceclose(bar-1) then begin
sellatclose(bar,pos1num,'lx1');
pos1position:=0;
end;
end;
end;

{position2}
case pos2position of
0:
begin
if priceclose(bar)>priceclose(bar-2) then begin
buyatclose(bar,'le2');
pos2position:=1;
pos2num:=lastposition;
end;
end;
1:
begin
if priceclose(bar)<priceclose(bar-2) then begin
sellatclose(bar,pos2num,'lx2');
pos2position:=0;
end;
end;
end;

{position3}
case pos3position of
0:
begin
if priceclose(bar)>priceclose(bar-3) then begin
buyatclose(bar,'le3');
pos3position:=1;
pos3num:=lastposition;
end;
end;
1:
begin
if priceclose(bar)<priceclose(bar-3) then begin
sellatclose(bar,pos3num,'lx3');
pos3position:=0;
end;
end;
end;

end;
avatar
roev_ae, с лимитами у Вас 3 варианта получается навскидку.

1.переделать на торговлю на bar а не на следующем. Проверять исполняется ли условие pricelow(bar)<limit(bar-1) и тогда считать что лимит исполнен и считать позицию открытой.

2.подглядывать исполняется ли условие на следующем баре pricelow(bar+1)<limit

3.использовать bar+1 и на следующем баре смотреть pricelow(bar)<limit(bar-1)

Первый вариант попроще но надо рассчитывать все уровни и условия на предыдущий бар.
avatar
ну и по сайзу позиций попробуйте отладить сначала торговлю одним лотом, с долей капитала может в какой то момент не хватать (купили 2, в просадке и на 3 не хватает).
avatar
nfxzhzh, спасибо, все разжёвано, попробую сегодня обязательно

Читайте на SMART-LAB:
Фото
Бесшовная интеграция сервисов трейдера: программный комплекс без технического долга
Трейдеры не могут работать с биржей напрямую, для торговли нужны посредники — программные комплексы для проведения финансовых операций....
Фото
Можно ли без прогнозов опередить рынок? Взгляд Morning Star
Почему успешному инвестору не нужны прогнозы? Последние годы прекрасно показали, что рынки никогда не стоят на месте. Геополитика менялась в...
Фото
📊 АО «Ресейл-АйТи» — первая отчетность по МСФО
АО «Ресейл-АйТи» — IT-компания Группы МГКЛ, развивающая платформу «Ресейл Маркет», — впервые подготовила консолидированную финансовую...
Фото
Основные инвест идеи с выступления Mozgovik в Калининграде + презентации с выступления
Доброго дня! В субботу мы ездили в Калининград, выступали перед годовыми подписчиками, обсуждали стратегию и идеи на рынке акций. Спасибо всем, кто...

теги блога Андрей Роев

....все тэги



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