Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Как запомнить цену входа? Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Евгений



Зарегистрирован: 13.12.2010
Сообщения: 45

СообщениеДобавлено: Пт Май 24, 2013 2:48 pm Ответить с цитатой Вернуться к началу

Здравствуйте. Подскажите. Запоминаю цену входа :

BP = ValueWhen(Buy, BuyPrice);//цена входа в лонг

В течение этого дня цена входа помнится, а при переносе позиции на другой день уже нет.....Подскажите как исправить?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Май 24, 2013 6:16 pm Ответить с цитатой Вернуться к началу

В данном случае цена будет помнится не день, а до следующего сигнала Buy.
Любой следующий сигнал на покупку собьет эту память, даже если в тестере не используется т.к. позу уже открыта.
Та много разных вариантов. Напиши зачем запоминаешь цену и что дальше с ней будешь делать. В зависимости от этого подскажу как поступить.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Евгений



Зарегистрирован: 13.12.2010
Сообщения: 45

СообщениеДобавлено: Сб Май 25, 2013 12:42 am Ответить с цитатой Вернуться к началу

При переносе позиции через ночь я в конце дня учитываю возможный Гэп утром против моей позиции. Для этого в конце дня (например в 23-40) беру текущую цену, прибавляю возможный Гэп (например 2%) и проверяю условие: чтобы возможный Гэп не выходил за пределы моей цены входа. Если выходит, то закрываю позицию. Вот для этого и нужна цена входа. (Если можно запомнить уровень стопа при входе в позицию, то я бы мог использовать и его для расчета Гэпа)/
P.S.
Еще хотелось бы помнить цену входа для расчета выхода из позиции по некоторой цели.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Май 25, 2013 1:25 am Ответить с цитатой Вернуться к началу

В таком случае лучше и проще использовать функцию ApplyStop()

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Евгений



Зарегистрирован: 13.12.2010
Сообщения: 45

СообщениеДобавлено: Сб Май 25, 2013 1:39 am Ответить с цитатой Вернуться к началу

К сожалению не знаю как это сделать. Функцию ApplyStop() я использую для выставления стопа, а как запомнить уровень этого стопа и использовать его в моих расчетах?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Сб Май 25, 2013 7:35 am Ответить с цитатой Вернуться к началу

Опиши подробно что именно надо сделать. Не хочешь тут пиши в личку.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Евгений



Зарегистрирован: 13.12.2010
Сообщения: 45

СообщениеДобавлено: Вс Май 26, 2013 5:09 pm Ответить с цитатой Вернуться к началу

Да почему не хочу?.....Просто вроде все написал. Нужно запомнить или цену входа или хотя бы уровень стопа. Вы ответили, что лучше через ApplyStop. У меня в коде прописано
ApplyStop (stopTypeLoss,stopModePoint,Stop,ExitAtStop = 1)
Stop - это размер стопа, а как мне для расчетов получить уровень стопа?
Посмотреть профиль Отправить личное сообщение
Евгений



Зарегистрирован: 13.12.2010
Сообщения: 45

СообщениеДобавлено: Пн Май 27, 2013 7:43 pm Ответить с цитатой Вернуться к началу

Неужели никто не знает ответа на мой вопрос? Отзовитесь, пожалуйста!
Посмотреть профиль Отправить личное сообщение
Mechanic



Зарегистрирован: 10.06.2008
Сообщения: 359

СообщениеДобавлено: Пн Май 27, 2013 7:54 pm Ответить с цитатой Вернуться к началу

Да непонятно, что вам нужно. Вот вы в момент покупки запомнили цену входа:

BP = ValueWhen(Buy, BuyPrice);

Она не изменится до следующего сигнала Buy. Проверяйте на здоровье эту позицию в конце дня на возможный гэп, цена входа у вас для этого есть. В чём именно проблема-то?
Посмотреть профиль Отправить личное сообщение ICQ Number
Евгений



Зарегистрирован: 13.12.2010
Сообщения: 45

СообщениеДобавлено: Вт Май 28, 2013 1:44 am Ответить с цитатой Вернуться к началу

Позиция держится несколько дней. В день входа я могу запомнить цену входа и проверить условие на гэп, допустим оно меня устраивает и я переношу позицию на следующий день. Но в конце следующего дня мне опять нужно проверить это условие, а если были сигналы на вход, то цена входа настоящая обнуляется. Вот в этом и есть проблема.
Посмотреть профиль Отправить личное сообщение
yser



Зарегистрирован: 30.11.2011
Сообщения: 76

СообщениеДобавлено: Вт Май 28, 2013 10:38 am Ответить с цитатой Вернуться к началу

Евгений писал(а):
Позиция держится несколько дней. В день входа я могу запомнить цену входа и проверить условие на гэп, допустим оно меня устраивает и я переношу позицию на следующий день. Но в конце следующего дня мне опять нужно проверить это условие, а если были сигналы на вход, то цена входа настоящая обнуляется. Вот в этом и есть проблема.


тут нужно:
1. отфильтровать ненужные сигналы покупок
2. если был сигнал на закрытие от доп. проверок (например геп), нужно повторить расчет сигналов buy/sell

вот накидал пример как сделал бы сам:

Код:

buy2  = O<C AND Ref(O<C,-1) AND Ref(O<C,-2);  //все сигналы открытия
sel2a = O>C AND Ref(O>C,-1) AND Ref(O>C,-2) AND Ref(O>C,-3);  //основные сигналы закрытия
sel2b = 0; //сигналы закрытия от доп.условий (например геп)

for(i=1;i<=3;i++) {

  sel2  = sel2a OR sel2b; //все сигналы закрытия

  buy2cnt = BarsSince(buy2); //кол-во баров между покупками
  sel2cnt = BarsSince(sel2); //кол-во баров между продажами

  Buy  = IIf(Ref(sel2cnt < buy2cnt, -1), buy2, 0); // если предыдущий сигнал был продажей, то разрешаем покупку
  Sell = IIf(Ref(buy2cnt < sel2cnt, -1), sel2, 0); // если предыдущий сигнал был покупкой, то разрешаем продажу

  BP = ValueWhen(Buy, BuyPrice);

  // тут необходимые проверки (запишеш свою проверку на геп) и если нужно закрыть позиции, то записываем
  // в sel2b, а после нужно повторить все вычисления buy/sell заного (думаю трех повторений достаточно)
  sel2b = (TimeNum() > 234000) AND (BP > (C - C*0.5/100));

}

PlotShapes(Buy  * shapeSmallUpTriangle, colorGreen, 0, H);
PlotShapes(Sell * shapeSmallDownTriangle, colorRed, 0, L);
PlotShapes(buy2 * shapeSmallCircle, colorGreen, 0, H, -20);
PlotShapes(sel2 * shapeSmallCircle, colorRed, 0, L, 20);

Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
Посмотреть профиль Отправить личное сообщение
Евгений



Зарегистрирован: 13.12.2010
Сообщения: 45

СообщениеДобавлено: Вт Май 28, 2013 11:12 am Ответить с цитатой Вернуться к началу

Спасибо огромное, поразбираюсь.
Посмотреть профиль Отправить личное сообщение
Евгений



Зарегистрирован: 13.12.2010
Сообщения: 45

СообщениеДобавлено: Вт Май 28, 2013 12:12 pm Ответить с цитатой Вернуться к началу

yser писал(а):
Евгений писал(а):
Позиция держится несколько дней. В день входа я могу запомнить цену входа и проверить условие на гэп, допустим оно меня устраивает и я переношу позицию на следующий день. Но в конце следующего дня мне опять нужно проверить это условие, а если были сигналы на вход, то цена входа настоящая обнуляется. Вот в этом и есть проблема.


тут нужно:
1. отфильтровать ненужные сигналы покупок
2. если был сигнал на закрытие от доп. проверок (например геп), нужно повторить расчет сигналов buy/sell

вот накидал пример как сделал бы сам:

Код:

buy2  = O<C AND Ref(O<C,-1) AND Ref(O<C,-2);  //все сигналы открытия
sel2a = O>C AND Ref(O>C,-1) AND Ref(O>C,-2) AND Ref(O>C,-3);  //основные сигналы закрытия
sel2b = 0; //сигналы закрытия от доп.условий (например геп)

for(i=1;i<=3;i++) {

  sel2  = sel2a OR sel2b; //все сигналы закрытия

  buy2cnt = BarsSince(buy2); //кол-во баров между покупками
  sel2cnt = BarsSince(sel2); //кол-во баров между продажами

  Buy  = IIf(Ref(sel2cnt < buy2cnt, -1), buy2, 0); // если предыдущий сигнал был продажей, то разрешаем покупку
  Sell = IIf(Ref(buy2cnt < sel2cnt, -1), sel2, 0); // если предыдущий сигнал был покупкой, то разрешаем продажу

  BP = ValueWhen(Buy, BuyPrice);

  // тут необходимые проверки (запишеш свою проверку на геп) и если нужно закрыть позиции, то записываем
  // в sel2b, а после нужно повторить все вычисления buy/sell заного (думаю трех повторений достаточно)
  sel2b = (TimeNum() > 234000) AND (BP > (C - C*0.5/100));

}

PlotShapes(Buy  * shapeSmallUpTriangle, colorGreen, 0, H);
PlotShapes(Sell * shapeSmallDownTriangle, colorRed, 0, L);
PlotShapes(buy2 * shapeSmallCircle, colorGreen, 0, H, -20);
PlotShapes(sel2 * shapeSmallCircle, colorRed, 0, L, 20);

Plot( C, "Close", ParamColor("Color", colorDefault ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );



1. Не понятно почему есть только Bay и Sell, а где Short и Cover ? (по аналогии надо дописать самому наверное....)
2. Перестали вообще открываться длинные позиции. Я с циклами не дружу, может я не туда его вставляю......

Код:

Ks =5;//кол-во сделок в день
Kgap=0.02;//коэффициент гэпа

Cond101=DayOfYear() ==365;// день года выхода

Stop=****;//размер стопа

ApplyStop (stopTypeLoss,stopModePoint,Stop,ExitAtStop = 1);//стоп-лосс

Size = 1; //max количество контрактов
SetPositionSize( Size, spsShares );// объем открываемой позиции

Cond1 = Cross(C,VL);// условия покупки
BuySignal = Cond1 ; 
BuyPrice = Close;
SellSignal = Cond101;
Sell = SellSignal;
SellPrice = Close;

Cond11 = Cross(VS,C);// условия продажи
ShortSignal = Cond11 ;
ShortPrice = Close;
CoverSignal  = Cond101;
Cover = CoverSignal;
CoverPrice = Close+skolz;
Buy = BuySignal;
Short = ShortSignal;

Equity(1);

Buy = BuySignal AND Sum(Buy ,BarsSince( BeginDay )) <= Ks;//ограничение по кол-ву сделок в день;
Short = ShortSignal AND Sum(Short ,BarsSince( BeginDay )) <= Ks;//ограничение по кол-ву сделок в день


buy2  = Cross(C,VL) AND InDay;  //все сигналы открытия
sel2a = Cond101;  //основные сигналы закрытия
sel2b = 0; //сигналы закрытия от доп.условий (например геп)

for(i=1;i<=3;i++) {

  sel2  = sel2a OR sel2b; //все сигналы закрытия

  buy2cnt = BarsSince(buy2); //кол-во баров между покупками
  sel2cnt = BarsSince(sel2); //кол-во баров между продажами

  Buy  = IIf(Ref(sel2cnt < buy2cnt, -1), buy2, 0); // если предыдущий сигнал был продажей, то разрешаем покупку
  Sell = IIf(Ref(buy2cnt < sel2cnt, -1), sel2, 0); // если предыдущий сигнал был покупкой, то разрешаем продажу

  BP = ValueWhen(Buy, BuyPrice);

  // тут необходимые проверки (запишеш свою проверку на геп) и если нужно закрыть позиции, то записываем
  // в sel2b, а после нужно повторить все вычисления buy/sell заного (думаю трех повторений достаточно)
  sel2b = (TimeNum() >= 234000) AND (C < (BP + BP*Kgap));

}


Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Май 31, 2013 12:21 am Ответить с цитатой Вернуться к началу

Код:

Kgap = 0.02; //коэффициент гэпа
GapTime = 234000; // тут поставить время проверки на гэп
time = TimeNum();
skolz = ****;
Stop = ****;//размер стопа

Size = 1; //max количество контрактов
SetPositionSize( Size, spsShares );// объем открываемой позиции

VL = ****;
VS = ****;

BuySignal = Cross(C, VL);// условия покупки
ShortSignal = Cross(VS,C);// условия продажи 
BuyPrice = Close;
ShortPrice = Close;
SellPrice = Close; // а где skolz?
CoverPrice = Close + skolz;

pos = 0;
OpenPrice = C[0];
for( i = 1; i < BarCount; i++ )
{
  if(pos == 0)
  {
    if(BuySignal[i])
    {
      Buy[i] = 1;
      OpenPrice = BuyPrice[i];
      pos = 1;
    }
    else if(ShortSignal[i])
    {
      Short[i] = 1;
      OpenPrice = ShortPrice[i];
      pos = -1;
    }
  }
  else if(pos == 1)
  {
    if(L[i] < OpenPrice - Stop) // стоп
    {
      Sell[i] = 1;
      SellPrice[i] = OpenPrice - Stop;
      pos = 0;
    }
    else if(GapTime == time[i])// время проверки на гэп
    {
      if(C[i]*(1-Kgap) < OpenPrice) // проверка на гэп
      {
        Sell[i] = 1;
        pos = 0; // SellPrice не задаем т.к. задана до цикла
      }
    }
  }
  else if(pos == -1)
  {
    if(H[i] > OpenPrice + Stop) // стоп
    {
      Cover[i] = 1;
      CoverPrice[i] = OpenPrice + Stop;
      pos = 0;
    }
    else if(GapTime == time[i])// время проверки на гэп
    {
      if(C[i]*(1+Kgap) > OpenPrice) // проверка на гэп
      {
        Cover[i] = 1;
        pos = 0; // CoverPrice не задаем т.к. задана до цикла
      }
    }
  }
}

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
GREEN_X5



Зарегистрирован: 13.04.2012
Сообщения: 136

СообщениеДобавлено: Пт Авг 23, 2013 5:11 pm Ответить с цитатой Вернуться к началу

Олег, выручай Very Happy , мозг врывается, ввинтил простенький трэйлинг, но он как и положено в моем случае - дает сбой при некоторых рыночных условиях.

Image

Подправь пожалуйста, нужен нормальный трэйлингстоп вместо моего LLV(spr,BarsSince(DwSigOk))

Код:
//                  ==============Сигналы=============
// - короткие позиции
DwSigOk = mom < 0 AND  Rspr>Ruplvl;     // условие шорт
CloseDwOk =  spr>Rspr AND spr>LLV(spr,BarsSince(DwSigOk)); // Стоп по TrailStop на развороте

// - длинные позиции----------------------------------------------
UpSigOk = mom > 0 AND  Rspr<Rdwlvl;    // условие лонг
CloseUpOk = spr<Rspr AND spr<HHV(spr,BarsSince(UpSigOk)); // Стоп по TrailStop на развороте

// - вход---------------------------------------------------------
DwSig = DwSigOk; // вход в шорт
CloseDw = CloseDwOk OR UpSigOk; // выход реверсом или TrailStop

UpSig = UpSigOk; // вход в лонг
CloseUp = CloseUpOk OR DwSigOk; // выход реверсом или TrailStop

//--удаляем лишние сигналы
UpSig = ExRem(UpSig, CloseUp);
CloseUp = ExRem(CloseUp, UpSig);
DwSig = ExRem(DwSig, CloseDw);
CloseDw = ExRem(CloseDw, DwSig);

Спасибо!
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen