/// <summary> /// チャネルブレイクアウト戦略 /// 成行版 /// </summary> /// <param name="exchangeId">取引所ID</param> /// <param name="status">BOTの状態</param> public ChannelBreakOutStrategyNonStop(int exchangeId, BotStatusManager status, string baseChannelKey, List <double> parameter) : base(exchangeId, status, parameter) { orderCounter = new Counter(ExecutePeriod); //interval = new CountDown(60); //interval.InitCount(); //baseHistory1SKey = HistoryProperty.GetKey(HistoryKind.HISTORY, 1, "1s"); //this.baseChannelKey = baseChannelKey; // 単体ポジション管理 positionManager = new SinglePositionManager(OrderAmount, Client); }
/// <summary> /// SMAでトラリピ売買 /// パラメータ /// 0:SfdMode SFDの時は一方向のみ 0 /// 1:executePeriod 処理の周期(秒)60 /// 2:baseOrderHeight 値幅の基本値 4000 /// 3:orderAmount 1回の注文量 0.01 /// 4:CancelMinute キャンセルまでの時間(分) 15 /// 5:StopLossMinute 損切りまでの時間(分) 10080 /// 6:価格参照キー /// 7:SMA短期キー /// 8:SMA長期キー /// 9:SFDキー(null可) /// </summary> /// <param name="exchangeId">取引所ID</param> /// <param name="status">BOTの状態</param> /// <param name="status">パラメータ</param> public SmaTrapStrategy(int exchangeId, BotStatusManager status, List <double> parameter) : base(exchangeId, status, parameter) { orderCounter = new Counter(ExecutePeriod); //baseHistory1SKey = HistoryProperty.GetKey(HistoryKind.HISTORY, 1, "1s"); //// SMA //baseSmaShort = HistoryProperty.GetKey(HistoryKind.SMA, 5, "5m"); //baseSmaLong = HistoryProperty.GetKey(HistoryKind.SMA, 6, "5m"); //// SFD //baseSfd = HistoryProperty.GetKey(HistoryKind.SFD, 1, "1s"); // トラリピの注文管理 tpm = new TrapPositionManager(Client, CancelMinute, StopLossMinute); }
/// <summary> /// 初期化 /// </summary> public void Initialize() { // BOTステータス初期化 status = new BotStatusManager(dbContextOptions); // 各種アルゴリズム初期化 InitializeAlgorithm(); // 試作品アルゴリズム初期化 //var wip2 = new SmaTrapStrategy(bitflyer, status); //AlgorithmList.Add(1, wip2); //var wip2 = new TradeByVol(bitflyerFX, status); //AlgorithmList.Add(1, wip2); // TODO:一時的にアルゴリズム4を割り当てる // データ取るのでコメントアウト ////AlgorithmList.Add(2, wip2); // TODO:一時的にアルゴリズム2を割り当てる //var key1 = HistoryProperty.GetKey(HistoryKind.CHANNEL, 5, "15m"); //var wip1 = new ChannelBreakOutStrategyNonStop(bitflyerFX, status, key1); //AlgorithmList.Add(1, wip1); // TODO:一時的にアルゴリズム1を割り当てる //var key2 = HistoryProperty.GetKey(HistoryKind.CHANNEL, 6, "30m"); //var wip2 = new ChannelBreakOutStrategyNonStop(bitflyerFX, status, key2); //AlgorithmList.Add(2, wip2); // TODO:一時的にアルゴリズム2を割り当てる //var key3 = HistoryProperty.GetKey(HistoryKind.CHANNEL, 7, "30m"); //var wip3 = new ChannelBreakOutStrategyNonStop(bitflyerFX, status, key3); //AlgorithmList.Add(3, wip3); // TODO:一時的にアルゴリズム3を割り当てる //var key4 = HistoryProperty.GetKey(HistoryKind.CHANNEL, 8, "1h"); //var wip4 = new ChannelBreakOutStrategyNonStop(bitflyerFX, status, key4); //AlgorithmList.Add(4, wip4); // TODO:一時的にアルゴリズム4を割り当てる // 非同期なタスクを生成 var task = Task.Run(async() => { try { Logger.Log("メインロジックを開始します"); await MainLogic(); } catch (Exception ex) { Logger.Log("Error: " + ex.Message); } }); task.Wait(); }
/// <summary> /// 売買アルゴのスーパークラス /// </summary> /// <param name="exchangeId">取引所ID</param> /// <param name="status">BOTの状態</param> /// <param name="status">パラメータ</param> public Algorithm(int exchangeId, BotStatusManager status, List <double> parameter) { Parameter = parameter; this.exchangeId = exchangeId; this.status = status; }