Beispiel #1
0
		private void SetCrossSignal(string label, string currencyPair, CrossSignal crossSignal)
		{
			if (!crossSignal_dic.ContainsKey(label))
			{
				this.crossSignal_dic.Add(label, crossSignal);
			}
		}
Beispiel #2
0
		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;
			}
		}