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


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

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

А зачем весь этот геморой? Почему не использовать просто ApplyStop() ???

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



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

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

Вот щщет, эта хрень работает! Я думал на это только тестер реагирует... Спасибо! Very Happy
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Стоп. А тебе для чего надо? Не для робота случайно?

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



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

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

Да не, индюк уже год работает, стрелки только по сигналам рисует, без анализатора. Торгую рученками, ибо к потным рученкам деньги липнут! )))

Чет я рано обрадовался. Изменил в коде строчки "вход" на
Цитата:
// - вход---------------------------------------------------------
DwSig = DwSigOk; // вход в шорт
CloseDw = CloseDwOk OR UpSigOk OR ApplyStop( 2, 1, Tsl, 0 );

UpSig = UpSigOk; // вход в лонг
CloseUp = CloseUpOk OR DwSigOk OR ApplyStop( 2, 1, Tsl, 0 );


появились двойные входы и нет реакции на размер лосса - Tsl. Не подскажешь как корректно ввернуть туда ApplyStop?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Лучше конечно видеть весь код целиком. Что не хочешь светить лучше убери, но желательно видеть всю цепочку.
Вот так не делается
Код:
CloseDw = CloseDwOk OR UpSigOk OR ApplyStop( 2, 1, Tsl, 0 );

Лучше так
Код:
CloseDw = CloseDwOk OR UpSigOk;
ApplyStop( 2, 1, Tsl, 0 );

ApplyStop работает так.

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



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

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

Так тоже не сработало. Готовлю код чтоб выложить.

Вот он, упрощен, но рабочий. Если кинуть на дневки акций газпрома, видно, что не отрабатывает трейлингстоп например в сентябре 2012.


Код:
_SECTION_BEGIN("1. -b PA Tr");
SetBarsRequired(sbrAll, sbrAll);
SetChartOptions(0,chartShowArrows|chartShowDates);
GraphXSpace = 10;
Level = Param("Вход", 2, 1, 10, 1);
Level_out = Param("Выход", 0, -10, 10, 1);
mtdSL = ParamToggle("Stop метод", "indx|Trail",1);
Tsl=Param("Stop пунктов", 1, 0, 5, 1);
PMA= Param("Период MA", 30, 10, 100, 10);
//===========Расчеты=======================
mom=(C-Ref(C,-1))/Ref(C,-1)*100;
Cpr=Cum(mom);
RCpr=Ref(Cpr,-1);
Mid = MA(Cpr,PMA); uplvl=Mid+Level; dwlvl=Mid-Level;
RMId=Ref(Mid,-1); Ruplvl=Ref(uplvl ,-1); Rdwlvl=Ref(dwlvl ,-1);

//                  ==============Сигналы=============
// - короткие позиции
DwSigOk = mom < 0 AND  RCpr>Ruplvl; // условие шорт
// Стоп по TrailStop или ниже indx
CloseDwOk = IIf(mtdSL,
Cpr>RCpr AND Cpr>LLV(Cpr,BarsSince(DwSigOk))+Tsl,
Cpr>RCpr AND RCpr<RMId);

// - длинные позиции---------------------------------
UpSigOk = mom > 0 AND  RCpr<Rdwlvl;   // условие лонг
// Стоп по TrailStop или выше indx
CloseUpOk = IIf(mtdSL,
Cpr<RCpr AND Cpr<HHV(Cpr,BarsSince(UpSigOk))-Tsl,
Cpr<RCpr AND RCpr>RMId);

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

UpSig = UpSigOk; // вход в шорт
CloseUp = CloseUpOk OR DwSigOk; // выход или stoploss

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

//--Индикация позиции с тригерами залипания и Life--
US = Flip(UpSig, CloseUp);
CU = Flip(CloseUp, UpSig);
DS = Flip(DwSig, CloseDw);
CD = Flip(CloseDw, DwSig);
pos= WriteIf(US,"Buy",WriteIf(DS,"Sell",""));
Life=Min(BarsSince(UpSig),BarsSince(DwSig));

//================Рисовать=============================

 Plot(Cpr, "price", colorBlue, styleThick);
 Plot(Mid,"",colorDarkGrey,styleLine, styleNoLabel);
 Plot(Mid+Level, "", colorGreen, styleNoLabel);
 Plot(Mid+Level_out, "", colorDarkGrey, styleLine, styleNoLabel);
 Plot(Mid-Level, "", colorRed, styleLine, styleNoLabel);
 Plot(Mid-Level_out, "", colorDarkGrey, styleLine, styleNoLabel);

//--Рисуем флаги--
 PlotShapes( IIf( UpSig, shapeUpTriangle, shapeNone ), colorGreen );
 PlotShapes( IIf( DwSig, shapeDownTriangle, shapeNone ), colorRed );
 PlotShapes( IIf( CloseUp, shapeDownArrow, shapeNone ), colorDarkGrey );
 PlotShapes( IIf( CloseDw, shapeUpArrow, shapeNone ), colorDarkGrey );


_N(Title ="\\c241. -b PA Tr  \\c16"+"= "+C+"  ("+Prec(mom,2)+"%)  "+
"\\c24   momentum=  \\c16"+Prec(Mom,2)+"\\c24  вход \\c16"+Level+
"\\c24     выход \\c16"+ Level_out+"\\c24     стоп \\c16"+Tsl+
"\\c24           позиция= \\c16"+pos+WriteIf(US OR DS,"\\c24   life= \\c16","")+
IIf(US OR DS,Life,0)+
"\n    \\c24  период MA= \\c16"+PMA
);


edit
тэээкс..., нашел одну ошЫбку, у Ами приоритет + и - перед > и <, исправляем скобками
Код:
Cpr<(HHV(Cpr,BarsSince(UpSigOk))-Tsl)


edit 2
отладкой нашел ещё Smile
Код:
Cpr<(HHV(Cpr,BarsSince(UpSigOk)+1)-Tsl)


edit 3
ну и перенос стопа в безубыток
Код:
Cpr<(HHV(Cpr,BarsSince(UpSigOk)+1)-IIf(Cpr>Mid,0,Tsl))
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

В таком случае лучше всего написать трейлинг циклом. Это идеальный вариант. Либо в воскресенье либо в понедельник сделаю.

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


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

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

Проверяй работу.
Код:

тут была фигня

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.

Последний раз редактировалось: 000 (Вт Авг 27, 2013 6:42 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
GREEN_X5



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

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

Ты здесь трейл только для лонгов написал? Работает вроде, попробую вникнуть в алгоритм, спасибо!
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Нет. И для лонгов и для шортов.

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



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

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

Тогда пороюсь на досуге, в этом виде код отрабатывает трейл только на лонгах.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Вечером проверю.

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


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

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

Хм. Странно, что оно вообще работало. Пробуй теперь
Код:

снова не правильно

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.

Последний раз редактировалось: 000 (Ср Авг 28, 2013 12:25 am), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
GREEN_X5



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

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

= в if заменить на == я и в прошлый раз догадался. Smile
Только в лонгах трейлинг работает.

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


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

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

Код:
SetBarsRequired(sbrAll, sbrAll);
SetChartOptions(0,chartShowArrows|chartShowDates);
GraphXSpace = 10;
Level = Param("Вход", 2, 1, 10, 1);
Level_out = Param("Выход", 0, -10, 10, 1);
mtdSL = ParamToggle("Stop метод", "indx|Trail", 1);
Tsl=Param("Stop пунктов", 1, 0, 5, 1);
PMA= Param("Период MA", 30, 10, 100, 10);
//===========Расчеты=======================
mom=(C-Ref(C,-1))/Ref(C,-1)*100;
Cpr=Cum(mom);
RCpr=Ref(Cpr,-1);
Mid = MA(Cpr,PMA);
uplvl=Mid+Level;
dwlvl=Mid-Level;
RMId=Ref(Mid,-1);
Ruplvl=Ref(uplvl, -1);
Rdwlvl=Ref(dwlvl, -1);

//                  ==============Сигналы=============
// - короткие позиции
DwSigOk = mom<0 AND RCpr>Ruplvl; // условие шорт

// - длинные позиции---------------------------------
UpSigOk = mom>0 AND RCpr<Rdwlvl;   // условие лонг

// - вход--------------------------------------------
trSt = UpSig = DwSig = CloseUp = CloseDw = pos = 0;

for(i = 0; i < BarCount; i++)
{
  if(pos == 0)
  {
    if(UpSigOk[i])
    {
      UpSig[i] = 1;
      pos = 1;
      trSt = Cpr[i] - Tsl;
    }
    else if(DwSigOk[i])
    {
      DwSig[i] = 1;
      pos = -1;
      trSt = Cpr[i] + Tsl;
    }
  }
  else if(pos == 1)
  {
    trSt = Max(Cpr[i] - Tsl, trSt);
    if(DwSigOk[i])
    {
      CloseUp[i] = 1;
      DwSig[i] = 1;
      pos = -1;
      trSt = Cpr[i] + Tsl;
    }
    else if(mtdSL == 1)
    {
      if(Cpr[i]<RCpr[i] AND Cpr[i]<trSt)
      {
        CloseUp[i] = 1;
        pos = 0;
      }
    }
    else if(mtdSL == 0)
    {
      if(Cpr[i]<RCpr[i] AND RCpr[i]>RMId[i])
      {
        CloseUp[i] = 1;
        pos = 0;
      }
    }
  }
  else if(pos == -1)
  {
    trSt = Min(Cpr[i] + Tsl, trSt);
    if(UpSigOk[i])
    {
      CloseDw[i] = 1;
      UpSig[i] = 1;
      pos = 1;
      trSt = Cpr[i] - Tsl;     
    }
    else if(mtdSL == 1)
    {
      if(Cpr[i]>RCpr[i] AND Cpr[i]>trSt)
      {
        CloseDw[i] = 1;
        pos = 0;
      }
    }
    else if(mtdSL == 0)
    {
      if(Cpr[i]>RCpr[i] AND RCpr[i]<RMId[i])
      {
        CloseDw[i] = 1;
        pos = 0;
      }
    }
  }
}

//--Индикация позиции с тригерами залипания и Life--
US = Flip(UpSig, CloseUp);
CU = Flip(CloseUp, UpSig);
DS = Flip(DwSig, CloseDw);
CD = Flip(CloseDw, DwSig);
pos= WriteIf(US,"Buy",WriteIf(DS,"Sell",""));
Life=Min(BarsSince(UpSig),BarsSince(DwSig));

//================Рисовать=============================

 Plot(Cpr, "price", colorBlue, styleThick);
 Plot(Mid,"",colorDarkGrey,styleLine, styleNoLabel);
 Plot(Mid+Level, "", colorGreen, styleNoLabel);
 Plot(Mid+Level_out, "", colorDarkGrey, styleLine, styleNoLabel);
 Plot(Mid-Level, "", colorRed, styleLine, styleNoLabel);
 Plot(Mid-Level_out, "", colorDarkGrey, styleLine, styleNoLabel);
  //--Рисуем флаги--
 PlotShapes( IIf( UpSig, shapeUpTriangle, shapeNone ), colorGreen );
 PlotShapes( IIf( DwSig, shapeDownTriangle, shapeNone ), colorRed );
 PlotShapes( IIf( CloseUp, shapeDownArrow, shapeNone ), colorDarkGrey );
 PlotShapes( IIf( CloseDw, shapeUpArrow, shapeNone ), colorDarkGrey );

_N(Title ="\\c241. -b PA Tr  \\c16"+"= "+C+"  ("+Prec(mom,2)+"%)  "+
"\\c24   momentum=  \\c16"+Prec(Mom,2)+"\\c24  вход \\c16"+Level+
"\\c24     выход \\c16"+ Level_out+"\\c24     стоп \\c16"+Tsl+
"\\c24           позиция= \\c16"+pos+WriteIf(US OR DS,"\\c24   life= \\c16","")+
IIf(US OR DS,Life,0)+
"\n    \\c24  период MA= \\c16"+PMA
);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen