Javaの同じ概念の同様の実装です。

`` Java
java.util.arraylistをインポートします。
java.util.listをインポートします。

パブリッククラスBuysellStrategy {
    public static void main（string [] args）{
        リスト<double> closeprices = new ArrayList <>（）;
        //ストックデータをロードして、ClosePricesリストに追加します

        // MACDラインと信号線を計算します
        double [] macd = new double [closeprices.size（）];
        double [] signal = new double [closeprices.size（）];
        double [] hist = new double [closeprices.size（）];
        int fastperiod = 12;
        int slowperiod = 26;
        int signalperiod = 9;
        // MACD計算の実装はここにあります

        // MACD値を保存する新しいリストを作成します
        リスト<double> macdlist = new ArrayList <>（）;
        リスト<double> Signallist = new ArrayList <>（）;
        リスト<double> histlist = new ArrayList <>（）;
        for（int i = 0; i <macd.length; i ++）{
            macdlist.add（macd [i]）;
            Signallist.Add（Signal [i]）;
            histlist.add（hist [i]）;
        }
        
        //取引信号を保存する新しいリスト「位置」を作成する
        List <Integer> positions = new ArrayList <>（）;
        for（int i = 0; i <macdlist.size（）; i ++）{
            if（macdlist.get（i）> signallist.get（i））{
                positions.add（1）;
            } それ以外 {
                positions.add（-1）;
            }
        }
        
        //現在の日の信号を避けるために信号を1でシフトします
        positions.remove（0）;
        positions.add（0、0）;
        
        //戦略の累積リターンを保存するための新しいリスト「戦略」を作成する
        リスト<double>戦略= new ArrayList <>（）;
        for（int i = 0; i <closeprices.size（）; i ++）{
            double cumreturn =（closeprices.get（i） -  closeprices.get（i -1）） / closeprices.get（i -1）;
            Strategy.Add（Cumreturn * positions.get（i -1））;
        }
        
        //戦略の累積リターンをプロットします
        //このためにライブラリをプロットする必要があります
    }
} `` `
Here is a similar implementation of the same concept in Java:

```java
import java.util.ArrayList;
import java.util.List;

public class BuySellStrategy {
    public static void main(String[] args) {
        List<Double> closePrices = new ArrayList<>();
        // Load the stock data and add to the closePrices list

        // Calculate the MACD line and signal line
        double[] macd = new double[closePrices.size()];
        double[] signal = new double[closePrices.size()];
        double[] hist = new double[closePrices.size()];
        int fastPeriod = 12;
        int slowPeriod = 26;
        int signalPeriod = 9;
        // Implementation of MACD calculation goes here

        // Create a new list to store the MACD values
        List<Double> macdList = new ArrayList<>();
        List<Double> signalList = new ArrayList<>();
        List<Double> histList = new ArrayList<>();
        for (int i = 0; i < macd.length; i++) {
            macdList.add(macd[i]);
            signalList.add(signal[i]);
            histList.add(hist[i]);
        }
        
        // Create a new list 'positions' to store the trading signal
        List<Integer> positions = new ArrayList<>();
        for (int i = 0; i < macdList.size(); i++) {
            if (macdList.get(i) > signalList.get(i)) {
                positions.add(1);
            } else {
                positions.add(-1);
            }
        }
        
        // Shift the signal by 1 to avoid the signal for the current day
        positions.remove(0);
        positions.add(0, 0);
        
        // Create a new list 'strategy' to store the cumulative return of the strategy
        List<Double> strategy = new ArrayList<>();
        for (int i = 0; i < closePrices.size(); i++) {
            double cumReturn = (closePrices.get(i) - closePrices.get(i - 1)) / closePrices.get(i - 1);
            strategy.add(cumReturn * positions.get(i - 1));
        }
        
        // Plot the cumulative return of the strategy
        // Plotting library needs to be added for this
    }
}```