help with wealth-lab 4
Добрый вечер ув. форумчане.
Давно не писал ничего в велс-лабе 4
Сейчас столкнулся с проблемой — допустим у меня есть 4 активные позиции, мне надо закрыть их по частям. Я пишу:
if (условие 1) then SellAtMarket(Bar+1,? ,'');
...
if (условие 4) then SellAtMarket(Bar+1,? ,'');
Что надо написать, чтобы закрывала только последнюю еще активную позицию, а не все разом?
Вопрос вроде не сложный, если кто активно занимается, напишите пожалуйста.
Заранее спасибо.
19
Читайте на SMART-LAB:
Бесшовная интеграция сервисов трейдера: программный комплекс без технического долга
Трейдеры не могут работать с биржей напрямую, для торговли нужны посредники — программные комплексы для проведения финансовых операций....
Можно ли без прогнозов опередить рынок? Взгляд Morning Star
Почему успешному инвестору не нужны прогнозы? Последние годы прекрасно показали, что рынки никогда не стоят на месте. Геополитика менялась в...
📊 АО «Ресейл-АйТи» — первая отчетность по МСФО
АО «Ресейл-АйТи» — IT-компания Группы МГКЛ, развивающая платформу «Ресейл Маркет», — впервые подготовила консолидированную финансовую...
Основные инвест идеи с выступления Mozgovik в Калининграде + презентации с выступления
Доброго дня! В субботу мы ездили в Калининград, выступали перед годовыми подписчиками, обсуждали стратегию и идеи на рынке акций. Спасибо всем, кто...
Есть ф-я перебора по всем позициям PositionCount
Я пишу:
for i := PositionCount — 1 downto 0 do
begin
if PositionActive( i ) then
begin
SellAtMarket( Bar + 1, i, '' );
end;
Но закрываются также все позы
условие входа
buyatclose(bar,"");
запоминаем номер крайней открытой позиции в переменную pos1
попробую код поискать щас
«допустим у меня есть 4 активные позиции»
тут не надо сплитить
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 кроет всю позу
А Вы тестируете с какими настройками, на сделку 1 лот или процент от капитала какой нибудь?
Завтра попробую код прислать.
захожу 4 раза по 20% от эквити
Было бы круто посмотреть на работающий участок кода, где это реализовано, спасибо
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;
1.переделать на торговлю на bar а не на следующем. Проверять исполняется ли условие pricelow(bar)<limit(bar-1) и тогда считать что лимит исполнен и считать позицию открытой.
2.подглядывать исполняется ли условие на следующем баре pricelow(bar+1)<limit
3.использовать bar+1 и на следующем баре смотреть pricelow(bar)<limit(bar-1)
Первый вариант попроще но надо рассчитывать все уровни и условия на предыдущий бар.