Я пытаюсь перевести код pine-script в двухполюсный осциллятор торгового представления BigBeluga для использования на своих графиках cTrader. Код Trading View находится здесь:
https://www.tradingview.com/script/2Ssn ... BigBeluga/
Я создал следующий код в cTrader с помощью Visual Studio, но результаты на графиках, которые я сравнивал, не совпадают (представление торговли с индикатором и представление cTrader с моей переведенной версией индикатор), и я не могу понять, где/что я делаю не так с моим кодом C# для cTrader.
Например, на всех телевизионных графиках, которые я смотрел, кривые красивые и плавные; по сравнению с cTrader, линии осциллятора в половине случаев выглядят неровными и более заостренными, чем гладкая кривая.
Поэтому я надеюсь, что кто-нибудь сможет указать на какие-либо проблемы или что-то, что могло быть «потеряно при переводе» при моей попытке преобразовать сценарий pine в структуру индикаторов C# cTrader.
Я даю ему разрешения «полного доступа», чтобы я мог попробовать отладку в VS, чтобы увидеть, даст ли это мне что-нибудь подсказки о том, где могут быть проблемы.
Вот мой код C# cTrader:
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
namespace cAlgo.Indicators
{
[Indicator(IsOverlay = false, TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)]
public class TwoPoleOscillator : Indicator
{
[Parameter("Filter Length", DefaultValue = 20, MinValue = 1)]
public int length { get; set; }
// === OUTPUTS ===
[Output("two_p", LineColor = "#55ffda", Thickness = 1)]
public IndicatorDataSeries two_p { get; set; }
[Output("two_pp")]
public IndicatorDataSeries two_pp { get; set; }
[Output("buy", PlotType = PlotType.Points, LineColor = "#55ffda", Thickness = 3)]
public IndicatorDataSeries buy_plot { get; set; }
[Output("sell", PlotType = PlotType.Points, LineColor = "#8c5bff", Thickness = 3)]
public IndicatorDataSeries sell_plot { get; set; }
// === SERIES ===
private IndicatorDataSeries sma_n1;
private IndicatorDataSeries sma_closeMinusSma1;
private IndicatorDataSeries smooth1;
private IndicatorDataSeries smooth2;
private SimpleMovingAverage sma1;
private SimpleMovingAverage sma_norm;
private StandardDeviation stdev_norm;
protected override void Initialize()
{
#if DEBUG
var result = System.Diagnostics.Debugger.Launch();
#endif
sma_n1 = CreateDataSeries();
sma_closeMinusSma1 = CreateDataSeries();
smooth1 = CreateDataSeries();
smooth2 = CreateDataSeries();
sma1 = Indicators.SimpleMovingAverage(Bars.ClosePrices, 25);
sma_norm = Indicators.SimpleMovingAverage(sma_closeMinusSma1, 25);
stdev_norm = Indicators.StandardDeviation(sma_closeMinusSma1, 25, MovingAverageType.Simple);
}
public override void Calculate(int index)
{
//if (index < 30)
// return;
// === CALCULATIONS ===
sma_closeMinusSma1[index] = (Bars.ClosePrices[index] - sma1.Result[index]);
sma_n1[index] = ((Bars.ClosePrices[index] - sma1.Result[index]) - (sma_norm.Result[index])) / stdev_norm.Result[index];
// === TWO-POLE FILTER ===
double alpha = 2.0 / (length + 1);
if (double.IsNaN(smooth1[index - 1]))
smooth1[index] = sma_n1[index];
else
smooth1[index] = (1 - alpha) * smooth1[index] + alpha * sma_n1[index];
if (double.IsNaN(smooth2[index - 1]))
smooth2[index] = sma_n1[index];
else
smooth2[index] = (1 - alpha) * smooth2[index] + alpha * smooth1[index];
two_p[index] = smooth2[index];
two_pp[index] = index >= 4 ? two_p[index - 4] : double.NaN;
// === SIGNALS ===
bool buy =
index > 4 &&
two_p[index - 1] < two_pp[index - 1] &&
two_p[index] > two_pp[index] &&
two_p[index] < 0;
bool sell =
index > 4 &&
two_p[index - 1] > two_pp[index - 1] &&
two_p[index] < two_pp[index] &&
two_p[index] > 0;
buy_plot[index] = buy ? two_p[index] : double.NaN;
sell_plot[index] = sell ? two_p[index] : double.NaN;
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... -my-charts
Создание двухполюсного осциллятора в cTrader для использования на моих графиках ⇐ C#
Место общения программистов C#
1770635682
Anonymous
Я пытаюсь перевести код pine-script в двухполюсный осциллятор торгового представления BigBeluga для использования на своих графиках cTrader. Код Trading View находится здесь:
https://www.tradingview.com/script/2Ssn4yDZ-Two-Pole-Oscillator-BigBeluga/
Я создал следующий код в cTrader с помощью Visual Studio, но результаты на графиках, которые я сравнивал, не совпадают (представление торговли с индикатором и представление cTrader с моей переведенной версией индикатор), и я не могу понять, где/что я делаю не так с моим кодом C# для cTrader.
Например, на всех телевизионных графиках, которые я смотрел, кривые красивые и плавные; по сравнению с cTrader, линии осциллятора в половине случаев выглядят неровными и более заостренными, чем гладкая кривая.
Поэтому я надеюсь, что кто-нибудь сможет указать на какие-либо проблемы или что-то, что могло быть «потеряно при переводе» при моей попытке преобразовать сценарий pine в структуру индикаторов C# cTrader.
Я даю ему разрешения «полного доступа», чтобы я мог попробовать отладку в VS, чтобы увидеть, даст ли это мне что-нибудь подсказки о том, где могут быть проблемы.
Вот мой код C# cTrader:
using cAlgo.API;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;
namespace cAlgo.Indicators
{
[Indicator(IsOverlay = false, TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess)]
public class TwoPoleOscillator : Indicator
{
[Parameter("Filter Length", DefaultValue = 20, MinValue = 1)]
public int length { get; set; }
// === OUTPUTS ===
[Output("two_p", LineColor = "#55ffda", Thickness = 1)]
public IndicatorDataSeries two_p { get; set; }
[Output("two_pp")]
public IndicatorDataSeries two_pp { get; set; }
[Output("buy", PlotType = PlotType.Points, LineColor = "#55ffda", Thickness = 3)]
public IndicatorDataSeries buy_plot { get; set; }
[Output("sell", PlotType = PlotType.Points, LineColor = "#8c5bff", Thickness = 3)]
public IndicatorDataSeries sell_plot { get; set; }
// === SERIES ===
private IndicatorDataSeries sma_n1;
private IndicatorDataSeries sma_closeMinusSma1;
private IndicatorDataSeries smooth1;
private IndicatorDataSeries smooth2;
private SimpleMovingAverage sma1;
private SimpleMovingAverage sma_norm;
private StandardDeviation stdev_norm;
protected override void Initialize()
{
#if DEBUG
var result = System.Diagnostics.Debugger.Launch();
#endif
sma_n1 = CreateDataSeries();
sma_closeMinusSma1 = CreateDataSeries();
smooth1 = CreateDataSeries();
smooth2 = CreateDataSeries();
sma1 = Indicators.SimpleMovingAverage(Bars.ClosePrices, 25);
sma_norm = Indicators.SimpleMovingAverage(sma_closeMinusSma1, 25);
stdev_norm = Indicators.StandardDeviation(sma_closeMinusSma1, 25, MovingAverageType.Simple);
}
public override void Calculate(int index)
{
//if (index < 30)
// return;
// === CALCULATIONS ===
sma_closeMinusSma1[index] = (Bars.ClosePrices[index] - sma1.Result[index]);
sma_n1[index] = ((Bars.ClosePrices[index] - sma1.Result[index]) - (sma_norm.Result[index])) / stdev_norm.Result[index];
// === TWO-POLE FILTER ===
double alpha = 2.0 / (length + 1);
if (double.IsNaN(smooth1[index - 1]))
smooth1[index] = sma_n1[index];
else
smooth1[index] = (1 - alpha) * smooth1[index] + alpha * sma_n1[index];
if (double.IsNaN(smooth2[index - 1]))
smooth2[index] = sma_n1[index];
else
smooth2[index] = (1 - alpha) * smooth2[index] + alpha * smooth1[index];
two_p[index] = smooth2[index];
two_pp[index] = index >= 4 ? two_p[index - 4] : double.NaN;
// === SIGNALS ===
bool buy =
index > 4 &&
two_p[index - 1] < two_pp[index - 1] &&
two_p[index] > two_pp[index] &&
two_p[index] < 0;
bool sell =
index > 4 &&
two_p[index - 1] > two_pp[index - 1] &&
two_p[index] < two_pp[index] &&
two_p[index] > 0;
buy_plot[index] = buy ? two_p[index] : double.NaN;
sell_plot[index] = sell ? two_p[index] : double.NaN;
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79866654/creating-two-pole-oscillator-in-ctrader-to-use-on-my-charts[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия