private void SetCrossSignal(string label, string currencyPair, CrossSignal crossSignal) { if (!crossSignal_dic.ContainsKey(label)) { this.crossSignal_dic.Add(label, crossSignal); } }
private TradeSignal checkTradeSignal(string label, DateTime today, CrossSignal crossSignal, double price) { CrossSignal targetSignal = crossSignal_dic[label]; double position = notional_dic[label]; string currencyPair = currencyPair_dic[label]; if (targetSignal == crossSignal) { TradeSignal tradeSignal = tradingSignal_dic[label]; if (tradeSignal == TradeSignal.Long) { double nowlongNotional = this.portfolio_dic[today].Position(currencyPair).LongNotional; if (nowlongNotional < MaxLongPosition) { return TradeSignal.Long; } else { return TradeSignal.None; } } else if (tradeSignal == TradeSignal.Short) { double nowshortNotional = this.portfolio_dic[today].Position(currencyPair).LongNotional; if (nowshortNotional < MaxShortPosition) { return TradeSignal.Short; } else { return TradeSignal.None; } } else if (tradeSignal == TradeSignal.Exit) { double nowNetNotional = this.portfolio_dic[today].Position(currencyPair).NetNotional; double costPrice = this.portfolio_dic[today].Position(currencyPair).CostPrice; if (nowNetNotional > 0) { if (costPrice > price) // long will loss { return TradeSignal.StopLoss; } else { return TradeSignal.TakeProfit; } } else if (nowNetNotional < 0) { if (costPrice < price) { return TradeSignal.StopLoss; } else { return TradeSignal.TakeProfit; } } else { return TradeSignal.None; } } else { return TradeSignal.None; } } else { return TradeSignal.None; } }