У вас не стоит Flash Player
Настройки
#12237 - Wed Sep 08 2010 09:53 PM Библиотека для трейлинга!
TrendCatcher Offline
addict

Registered: Fri Feb 12 2010
Записи: 495
Loc: Москва, Россия
Собственно, вот!

Сейчас мы имеем лишь стандартный топорный трейлинг, а вариантов трейлинга, оказывается, вон оно сколько!!!

1. Трейлинг по теням N последних баров.
2. Трейлинг по Х-барным фракталам.
3. Трейлинг стандартный-'ступенчатый'.
4. Трейлинг стандартный-'удавка'.
5. Трейлинг по времени.
6. Трейлинг по ATR.
7. 'Храповой' трейлинг (по Баришпольцу).
8. Трейлинг по ценовому каналу.
9. Трейлинг по скользящему среднему.
10. Трейлинг "половинящий" (Fifty-fifty trailing).
11. Трейлинг "KillLoss".

Все функции в коде mql4, хорошо прокомментированы. Может, что-нибудь из этого реализуется со временем в виде кубиков ТСЛаб? wink

Наверх
#12243 - Wed Sep 08 2010 10:31 PM Re: Библиотека для трейлинга! [Re: TrendCatcher]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
ну так API есть, все можно сделать smile

Наверх
#36619 - Sat Jan 28 2012 02:37 PM Re: Библиотека для трейлинга! [Re: Nektodron]
Antonatoss Offline
member

Registered: Thu Mar 17 2011
Записи: 133
Originally Posted By: Nektodron
ну так API есть, все можно сделать smile


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

Но не буду учить как делать бизнес, Вам виднее.

Я за себя радею, пользуюсь тслабом давно, и ведь хочется какого то развития в части кубиков тоже..о трейле давно все жалуются, что он не удобно оптимизируем, так как приходится стаивть 2 для покупок и продаж, и он один, без всяких там удавок...


Отредактировано Antonatoss (Sat Jan 28 2012 02:38 PM)

Наверх
#36630 - Sat Jan 28 2012 05:22 PM Re: Библиотека для трейлинга! [Re: Antonatoss]
usas Offline
Pooh-Bah

Registered: Sun Feb 21 2010
Записи: 2331
Loc: Ухта
Уже выпрашивал - послали...:-((
http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=34299#Post34299

Наверх
#37242 - Sat Feb 11 2012 05:07 PM Re: Библиотека для трейлинга! [Re: usas]
vito333 Offline
Pooh-Bah

Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
вопрос интересный

дайте код стандартного трейла,а? и доработаем

Наверх
#37469 - Fri Feb 17 2012 03:38 PM Re: Библиотека для трейлинга! [Re: vito333]
Lucky7 Offline
member

Registered: Sun Aug 14 2011
Записи: 136
Originally Posted By: vito333
вопрос интересный

дайте код стандартного трейла,а? и доработаем



using System;
using System.Linq;
using TSLab.Script.Realtime;

// ReSharper disable UnusedAutoPropertyAccessor.Global
// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable UnusedMember.Global
namespace TSLab.Script.Handlers
{
[HandlerName("Entry Price")]
[HandlerCategory("Position")]
[HandlerName("Trail Stop")]
[HandlerCategory("Position")]
public class TrailStop : IPosition2Double
{
[HandlerParameter(true, "1.5", Min = "0.1", Max = "5", Step = "0.1", Name = "Stop Loss")]
public double StopLoss { get; set; }

[HandlerParameter(true, "0.5", Min = "0.1", Max = "3", Step = "0.1", Name = "Trail Enable")]
public double TrailEnable { get; set; }

[HandlerParameter(true, "0.5", Min = "0.1", Max = "3", Step = "0.1", Name = "Trail Loss")]
public double TrailLoss { get; set; }

public double Execute(IPosition pos, int barNum)
{
if (pos == null)
{
return 0;
}
double stop;
var curProfit = pos.OpenMFEPct(barNum);
if (curProfit > TrailEnable)
{
double shift = (curProfit - TrailLoss) / 100;
stop = pos.EntryPrice * (1 + (pos.IsLong ? shift : -shift));
}
else
{
double shift = (0 - StopLoss) / 100;
stop = pos.EntryPrice * (1 + (pos.IsLong ? shift : -shift));
}
var lastStop = pos.GetStop(barNum);
if(lastStop == 0)
{
return stop;
}
return pos.IsLong ? Math.Max(stop, lastStop) : Math.Min(stop, lastStop);
}
}

[HandlerName("Trail Stop Abs")]
[HandlerCategory("Position")]
public class TrailStopAbs : IPosition2Double
{
[HandlerParameter(true, "150", Min = "10", Max = "500", Step = "5")]
public double StopLoss { get; set; }

[HandlerParameter(true, "50", Min = "10", Max = "500", Step = "5")]
public double TrailEnable { get; set; }

[HandlerParameter(true, "50", Min = "10", Max = "500", Step = "5")]
public double TrailLoss { get; set; }

public double Execute(IPosition pos, int barNum)
{
if (pos == null)
{
return 0;
}
double stop;
var curProfit = pos.OpenMFE(barNum) / pos.Shares;
if (curProfit > TrailEnable)
{
double shift = curProfit - TrailLoss;
stop = pos.EntryPrice + (pos.IsLong ? shift : -shift);
}
else
{
double shift = -StopLoss;
stop = pos.EntryPrice + (pos.IsLong ? shift : -shift);
}
var lastStop = pos.GetStop(barNum);
if (lastStop == 0)
{
return stop;
}
return pos.IsLong ? Math.Max(stop, lastStop) : Math.Min(stop, lastStop);
}
}


Отредактировано Lucky7 (Fri Feb 17 2012 03:40 PM)

Наверх
#39835 - Wed Apr 04 2012 03:25 PM Re: Библиотека для трейлинга! [Re: Lucky7]
vito333 Offline
Pooh-Bah

Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
для тех, кто наткнётся на ветку - часть трейлов реализована, смотрите тут:
http://www.tslab.ru/ubb/ubbthreads.php?ubb=showflat&Number=39833#Post39833

Наверх
#42564 - Wed Jun 06 2012 06:01 PM Re: Библиотека для трейлинга! [Re: Lucky7]
Вася Offline
newbie

Registered: Fri Mar 30 2012
Записи: 47
Originally Posted By: Lucky7


using System;
using System.Linq;
using TSLab.Script.Realtime;
....

.....


Может кто сгрузит кодик стопа типа:
TrailStop P1000A - начинает работать как обычный трейл, но по достижении определённого профита (ProfitLimit) начинает трейлить с другим размером трейлинга (TrailLoss2).
TrailStop P1000A-2 - то же, но с двумя доп. уровнями профита-трейлинга.
TrailStop P1000R и TrailStop P1000R-2 - то же, что предыдущие два, но параметры в %%

Чтоб через API можно было подцепить, особенно два выделенных интересуют.

Наверх
#42583 - Thu Jun 07 2012 08:42 AM Re: P1000R [Re: Вася]
vito333 Offline
Pooh-Bah

Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
переделал немного P1000R, возьми последний сборник, попробуй и отпишись
Code:
[HandlerName("TrailStop P1000R")]
[HandlerCategory("vvPosClose")]
public class TrailStopP1000r : IPosition2Double
{
  [HandlerParameter(true, "1.5", Min = "0.1", Max = "0.6", Step = "0.05", Name = "StopLoss")]
  public double StopLoss { get; set; }
  [HandlerParameter(true, "0.5", Min = "0.1", Max = "0.6", Step = "0.05", Name = "TrailEnable")]
  public double TrailEnable { get; set; }
  [HandlerParameter(true, "0.5", Min = "0.1", Max = "0.6", Step = "0.05", Name = "TrailLoss")]
  public double TrailLoss { get; set; }
  //---- 2 параметра для второго уровня профита-трейллосса
  [HandlerParameter(true, "0", Min = "0", Max = "0.6", Step = "0.05", Name = "ProfitLimit")]
  public double ProfitLimit { get; set; }
  [HandlerParameter(true, "0", Min = "0", Max = "0.6", Step = "0.05", Name = "TrLoss2")]
  public double TrailLoss2 { get; set; }

  public static double GenTrailStopP1000r(IPosition _pos, int _barNum, double _StopLoss, double _TrailEnable, double _TrailLoss, double _ProfitLimit, double _TrailLoss2)



Отредактировано vito333 (Thu Jun 07 2012 10:30 AM)

Наверх
#42601 - Thu Jun 07 2012 12:15 PM Re: P1000R [Re: vito333]
Вася Offline
newbie

Registered: Fri Mar 30 2012
Записи: 47
Originally Posted By: vito333
переделал немного P1000R, возьми последний сборник, попробуй и отпишись
Code:
[HandlerName("TrailStop P1000R")]
[HandlerCategory("vvPosClose")]
public class TrailStopP1000r : IPosition2Double
{
  [HandlerParameter(true, "1.5", Min = "0.1", Max = "0.6", Step = "0.05", Name = "StopLoss")]
  public double StopLoss { get; set; }
  [HandlerParameter(true, "0.5", Min = "0.1", Max = "0.6", Step = "0.05", Name = "TrailEnable")]
  public double TrailEnable { get; set; }
  [HandlerParameter(true, "0.5", Min = "0.1", Max = "0.6", Step = "0.05", Name = "TrailLoss")]
  public double TrailLoss { get; set; }
  //---- 2 параметра для второго уровня профита-трейллосса
  [HandlerParameter(true, "0", Min = "0", Max = "0.6", Step = "0.05", Name = "ProfitLimit")]
  public double ProfitLimit { get; set; }
  [HandlerParameter(true, "0", Min = "0", Max = "0.6", Step = "0.05", Name = "TrLoss2")]
  public double TrailLoss2 { get; set; }

  public static double GenTrailStopP1000r(IPosition _pos, int _barNum, double _StopLoss, double _TrailEnable, double _TrailLoss, double _ProfitLimit, double _TrailLoss2)


Добавил в конце ; и }
В Handles бросил dll от 06/06/2012 и пробовал с предыдущей размером 343 КБ и 341 КБ соответст.
В ссылки-добавить ссылку в SharpDevel добавил vvTSLtools.dll
При запуске:
'TSLab.MySystems.TrailStopP1000r' does not implement interface member 'TSLab.Script.Handlers.IPosition2Double.Execute(TSLab.Script.IPosition, int)' (CS0535) - C:\Documents and Settings\....cs:137,14
'TSLab.MySystems.TrailStopP1000r.GenTrailStopP1000r(TSLab.Script.IPosition, int, double, double, double, double, double)' must declare a body because it is not marked abstract, extern, or partial (CS0501) - C:\Documents and Settings\....cs:151,24

Наверх
#42604 - Thu Jun 07 2012 12:36 PM Re: P1000R [Re: Вася]
vito333 Offline
Pooh-Bah

Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
Вася, ты не понял
вызывай метод GenTrailStopP1000r класса TrailStopP1000r с приведёнными параметрами
я тебе просто всё подготовил и показал, чтобы из сборника прямо подключать этот трейл, типа var stop = TrailStopP1000r.GenTrailStopP1000r(параметры);


Отредактировано vito333 (Thu Jun 07 2012 12:42 PM)

Наверх
#42607 - Thu Jun 07 2012 01:36 PM Re: P1000R [Re: vito333]
Вася Offline
newbie

Registered: Fri Mar 30 2012
Записи: 47
Originally Posted By: vito333

...
вызывай метод GenTrailStopP1000r класса TrailStopP1000r с приведёнными параметрами
...


Вообщем сделал так:
В "ссылки"-"добавить ссылку" в SharpDevel добавил vvTSLtools.dll
//
using vvTSLtools; // стр. 30
//
public OptimProperty TrailEnable = new OptimProperty(1.5, 0.1, 5, 0.2);
public OptimProperty TrailLoss = new OptimProperty(0.5, 0.1, 5, 0.2);
public OptimProperty StopLoss = new OptimProperty(0.5, 0.1, 5, 0.2);
public OptimProperty ProfitLimit = new OptimProperty(0, 0.1, 0.6, 0.2);
public OptimProperty TrailLoss2 = new OptimProperty(0, 0.1, 0.6, 0.2);
//
readonly TrailStopP1000r _trailp1000r = new TrailStopP1000r(); // стр 191
//
_trailp1000r.StopLoss = StopLoss;
_trailp1000r.TrailEnable = TrailEnable;
_trailp1000r.TrailLoss = TrailLoss;
_trailp1000r.ProfitLimit = ProfitLimit;
_trailp1000r.TrailLoss2 = TrailLoss2;
//

На это SharpDevelop не ругается, а вот TSLab гневно рисует:

13:29:04.98 120 Элемент 'ВнешнСкрипт' содержит ошибку:
c:\Documents and Settings\.....cs(30,7) : error CS0246: Не удалось найти имя типа или пространства имен 'vvTSLtools' (возможно, пропущена используемая директива или ссылка на сборку)
c:\Documents and Settings\.....cs(191,23) : error CS0246: Не удалось найти имя типа или пространства имен 'TrailStopP1000r' (возможно, пропущена используемая директива или ссылка на сборку)

vvTSLtools не подключилась ...

О, а GenTrailStopP1000r я так и не вызывал, заигрался, забыл про него.


Отредактировано Вася (Thu Jun 07 2012 01:45 PM)

Наверх
#42609 - Thu Jun 07 2012 02:14 PM Re: P1000R [Re: Вася]
vito333 Offline
Pooh-Bah

Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
выкладываю в ветке сборника исходник трейла P1000R, делай с ним что хочешь

Наверх
#42611 - Thu Jun 07 2012 02:28 PM Re: P1000R [Re: vito333]
Вася Offline
newbie

Registered: Fri Mar 30 2012
Записи: 47
Спасибо.


Отредактировано Вася (Thu Jun 07 2012 02:38 PM)

Наверх
#42612 - Thu Jun 07 2012 02:30 PM Re: P1000R [Re: Вася]
vito333 Offline
Pooh-Bah

Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
смотри код, там статичный метод
можешь поправить сам

вызывать как стандартный трейл ТСЛаб не нужно


Отредактировано vito333 (Thu Jun 07 2012 02:30 PM)

Наверх
#42641 - Fri Jun 08 2012 12:47 PM Re: P1000R [Re: vito333]
Вася Offline
newbie

Registered: Fri Mar 30 2012
Записи: 47
Originally Posted By: vito333
переделал немного P1000R, возьми последний сборник, попробуй и отпишись


Отписываюсь: результаты на одной из систем очень близки при стопе P1000R и при TrailStopStd, попробую позже на другой системе.

Наверх
#42643 - Fri Jun 08 2012 01:24 PM Re: P1000R [Re: Вася]
vito333 Offline
Pooh-Bah

Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
работает - и хорошо

Наверх
#77537 - Thu Apr 14 2016 08:21 AM Re: P1000R [Re: vito333]
galaxer Offline
stranger

Registered: Tue Sep 23 2014
Записи: 1
Vito, выложи сорцы какие-нить.
мне трейлинги позарез нужны
как внешний скрипт либа с vvtsltools на 64бит не пашет к тому же

Наверх


Moderator:  ViL, sar