#12237 - Wed Sep 08 2010 09:53 PM
Библиотека для трейлинга!
|
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, хорошо прокомментированы. Может, что-нибудь из этого реализуется со временем в виде кубиков ТСЛаб?
|
Наверх
|
|
|
|
#36619 - Sat Jan 28 2012 02:37 PM
Re: Библиотека для трейлинга!
[Re: Nektodron]
|
member
Registered: Thu Mar 17 2011
Записи: 133
|
ну так API есть, все можно сделать а я вот несогласен с таким подходом. я не программист, и кубики предназначены для широкой массы пользователей. В Ваших интересах тоже развивать стандартные функции для большей аудитории. Но не буду учить как делать бизнес, Вам виднее. Я за себя радею, пользуюсь тслабом давно, и ведь хочется какого то развития в части кубиков тоже..о трейле давно все жалуются, что он не удобно оптимизируем, так как приходится стаивть 2 для покупок и продаж, и он один, без всяких там удавок...
Отредактировано Antonatoss (Sat Jan 28 2012 02:38 PM)
|
Наверх
|
|
|
|
#36630 - Sat Jan 28 2012 05:22 PM
Re: Библиотека для трейлинга!
[Re: Antonatoss]
|
Pooh-Bah
Registered: Sun Feb 21 2010
Записи: 2331
Loc: Ухта
|
|
Наверх
|
|
|
|
#37242 - Sat Feb 11 2012 05:07 PM
Re: Библиотека для трейлинга!
[Re: usas]
|
Pooh-Bah
Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
|
вопрос интересный
дайте код стандартного трейла,а? и доработаем
|
Наверх
|
|
|
|
#37469 - Fri Feb 17 2012 03:38 PM
Re: Библиотека для трейлинга!
[Re: vito333]
|
member
Registered: Sun Aug 14 2011
Записи: 136
|
вопрос интересный
дайте код стандартного трейла,а? и доработаем 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)
|
Наверх
|
|
|
|
#42564 - Wed Jun 06 2012 06:01 PM
Re: Библиотека для трейлинга!
[Re: Lucky7]
|
newbie
Registered: Fri Mar 30 2012
Записи: 47
|
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: Вася]
|
Pooh-Bah
Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
|
переделал немного P1000R, возьми последний сборник, попробуй и отпишись [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]
|
newbie
Registered: Fri Mar 30 2012
Записи: 47
|
переделал немного P1000R, возьми последний сборник, попробуй и отпишись [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: Вася]
|
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]
|
newbie
Registered: Fri Mar 30 2012
Записи: 47
|
... вызывай метод 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: Вася]
|
Pooh-Bah
Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
|
выкладываю в ветке сборника исходник трейла P1000R, делай с ним что хочешь
|
Наверх
|
|
|
|
#42611 - Thu Jun 07 2012 02:28 PM
Re: P1000R
[Re: vito333]
|
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: Вася]
|
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]
|
newbie
Registered: Fri Mar 30 2012
Записи: 47
|
переделал немного P1000R, возьми последний сборник, попробуй и отпишись Отписываюсь: результаты на одной из систем очень близки при стопе P1000R и при TrailStopStd, попробую позже на другой системе.
|
Наверх
|
|
|
|
#42643 - Fri Jun 08 2012 01:24 PM
Re: P1000R
[Re: Вася]
|
Pooh-Bah
Registered: Wed Oct 26 2011
Записи: 2108
Loc: botland
|
|
Наверх
|
|
|
|
#77537 - Thu Apr 14 2016 08:21 AM
Re: P1000R
[Re: vito333]
|
stranger
Registered: Tue Sep 23 2014
Записи: 1
|
Vito, выложи сорцы какие-нить. мне трейлинги позарез нужны как внешний скрипт либа с vvtsltools на 64бит не пашет к тому же
|
Наверх
|
|
|
|
|
|