FileName:yutori9.java
import java.util.ArrayList;
import java.io.Serializable;
import jp.tradesc.superkaburobo.sdk.driver.RobotDriver;
import jp.tradesc.superkaburobo.sdk.robot.AbstractRobot;
import jp.tradesc.superkaburobo.sdk.trade.EnumAnalysisSpan;
import jp.tradesc.superkaburobo.sdk.trade.InformationManager;
import jp.tradesc.superkaburobo.sdk.trade.MemoManager;
import jp.tradesc.superkaburobo.sdk.trade.OrderManager;
import jp.tradesc.superkaburobo.sdk.trade.PortfolioManager;
import jp.tradesc.superkaburobo.sdk.trade.TradeAgent;
import jp.tradesc.superkaburobo.sdk.trade.analysis.technicalindex.Stochastics;
import jp.tradesc.superkaburobo.sdk.trade.data.Portfolio;
import jp.tradesc.superkaburobo.sdk.trade.data.Stock;
class Memo implements Serializable {
private static final long serialVersionUID = 1L;
private ArrayList<Stock> buy_stocklist = new ArrayList<Stock>();
private ArrayList<Stock> sell_stocklist = new ArrayList<Stock>();
//メモ情報取得
public ArrayList<Stock> getBuyStockList() {
return buy_stocklist;
}
//メモ情報保存
public void setBuyStockList(ArrayList<Stock> stocklist) {
this.buy_stocklist = stocklist;
}
//メモ情報取得
public ArrayList<Stock> getSellStockList() {
return sell_stocklist;
}
//メモ情報保存
public void setSellStockList(ArrayList<Stock> stocklist) {
this.sell_stocklist = stocklist;
}
}
public class yutori9 extends AbstractRobot {
public static void main(String[] args){
RobotDriver.main(new String[]{"-n", yutori9.class.getName()});
}
//初期設定
int HoldingDay = 14; //ホールド期間(日)
double LossCutRate = -7; //損切りレート(%)
double GainRate =10; //利益確定レート(%)
int buynum = 1; //買う株の数
int count = 14; //ストキャスティクスの集計数
double stlow = 80; //ストキャスティクスの買われすぎの基準
double sthigh = 20; //ストキャスティクスの売られすぎの基準
public void order(TradeAgent arg0){
double pK,pD,pKy,pDy;
PortfolioManager portfolioManager = PortfolioManager.getInstance();
OrderManager om = OrderManager.getInstance();
Stochastics st = new Stochastics(EnumAnalysisSpan.DAILY,count,3);
for(Portfolio portfolio: portfolioManager.getPortfolio()){
Stock stock = portfolio.getStock();
double gain = portfolio.getProfitRate();
pK = st.getIndexPercentK(stock);
pD = st.getIndexPercentD(stock);
pKy = st.getIndexPercentK(stock, 1);
pDy = st.getIndexPercentD(stock, 1);
int pastDay = portfolio.getHoldingDays();
if(pK >= sthigh
&& pKy > pDy && pK < pD){
portfolio.orderReverseNowMarketAll();
}
else if(gain >= GainRate){
portfolio.orderReverseNowMarketAll();
}
else if(gain <= LossCutRate){
//om.cancelOrderByStock(portfolio.getStock());
portfolio.orderReverseNowMarketAll();
}
else if(pastDay >= HoldingDay){
//om.cancelOrderByStock(portfolio.getStock());
portfolio.orderReverseNowMarketAll();
}
}
//昨日チェックしていた買いリストを注文する
MemoManager mm = MemoManager.getInstance();
Memo memo = (Memo)mm.getObjectMemo(); //昨日の買いリスト獲得
if(memo == null){
return;
}
//買い注文を実行する
if(memo.getBuyStockList().size() != 0) {
for(Stock stock : memo.getBuyStockList()) {
om.orderActualNowMarket(stock,
buynum*stock.getUnit());
}
}
//メモ情報の全ての要素を削除
memo.getBuyStockList().clear();
memo.getSellStockList().clear();
}
public void screening(TradeAgent arg0) {
Memo memo = new Memo(); //買う予定の銘柄を記憶するクラス
Stochastics st = new Stochastics(EnumAnalysisSpan.DAILY,count,3); //ストキャスティクスのオブジェ
ArrayList<Stock>stockbuy = new ArrayList<Stock>();
InformationManager info = InformationManager.getInstance();
ArrayList<Stock>stocklist = info.getStockList();
for(Stock stock:stocklist){
double pK,pD,pKy,pDy;
pK = st.getIndexPercentK(stock);
pD = st.getIndexPercentD(stock);
pKy = st.getIndexPercentK(stock, 1);
pDy = st.getIndexPercentD(stock, 1);
if((pK <= stlow)
&& (pKy < pDy) && (pK > pD)){
stockbuy.add(stock);
}
}
memo.setBuyStockList(stockbuy);
MemoManager mm = MemoManager.getInstance();
mm.setObjectMemo(memo);
}
}
戻
る