Я программирую Обучение в MotiveWave, программе, используемой для (дневной) торговли.Исследование - это собственный класс.(информация о SDK MotiveWave находится здесь: https://www.motivewave.com/sdk/javadoc/overview-summary.html)
public class L_V2 extends com.motivewave.platform.sdk.study.Study
В моем исследовании используются 2 разных таймфрейма: 1-часовой и 4-часовой. Оба рассчитываются в разных функциях. Иначе сформулировано: оба используютразные наборы данных, как показано в приведенном ниже коде.
У меня есть два значения, рассчитанные на 4-часовом таймфрейме, называемые «ma9» и «ma11», которые я хотел бы использовать в выражении «if»на 1-часовом таймфрейме.
Это код для 4-часового таймфрейма. Он просто вычисляет 2 скользящие средние
@Override
protected void calculateValues(DataContext ctx)
{
int maPeriodTF2 = getSettings().getInteger(MA_PERIOD_TF2);
int ma2PeriodTF2 = getSettings().getInteger(MA2_PERIOD_TF2);
//Object maInput = getSettings().getInput(MA_INPUT, Enums.BarInput.CLOSE);
BarSize barSizeTF2 = getSettings().getBarSize(MA_BARSIZE_TF2);
DataSeries series2 = ctx.getDataSeries(barSizeTF2);
StudyHeader header = getHeader();
boolean updates = getSettings().isBarUpdates() || (header != null && header.requiresBarUpdates());
// Calculate Moving Average for the Secondary Data Series
for(int i = 1; i < series2.size(); i++) {
if (series2.isComplete(i)) continue;
if (!updates && !series2.isBarComplete(i)) continue;
// MA TF2
Double ma9 = series2.ma(getSettings().getMAMethod(MA_METHOD_TF2), i, maPeriodTF2, getSettings().getInput(MA_INPUT_TF2));
Double ma11 = series2.ma(getSettings().getMAMethod(MA2_METHOD_TF2), i, ma2PeriodTF2, getSettings().getInput(MA2_INPUT_TF2));
series2.setDouble(i, Values.MA9_H4, ma9);
series2.setDouble(i, Values.MA11_H4, ma11);
}
// Invoke the parent method to run the "calculate" method below for the primary (chart) data series
super.calculateValues(ctx);
Теперь я хотел бы использовать эти 2 значения, 'ma9'и 'ma11' в другой функции на 1-часовом таймфрейме:
@Override
protected void calculate(int index, DataContext ctx)
DataSeries series=ctx.getDataSeries();
if (ma9 < ma11 && other conditions)
{ctx.signal(index, Signals.YOU_SHOULD_BUY, "This would be my buying signal", series.getClose(index));
}
Как я могу экспортировать ma9 и ma11, чтобы они стали «глобальными», и я мог повторно использовать их в этой другой функции?