private void AddDictionnaire(Monnaie mbase, Monnaie quote, ValeurEchange ve) { BaseEtQuoteToVe.Add(mbase, quote, ve); Pairs.Add(ve); MonnaieTradable.Add(mbase); MonnaieTradable.Add(quote); }
internal TreeSet <TradePivot> TrouveMeilleurEchangeEURUSD(Richesse dispoEuro, Richesse dispoUSD) { TreeSet <TradePivot> ret = new TreeSet <TradePivot>(); foreach (Monnaie monnaiePivot in MonnaieTradableEURUSD) { if (BaseEtQuoteToVe.TryGetValue(EURO, monnaiePivot, out ValeurEchange veEURO) && BaseEtQuoteToVe.TryGetValue(USD, monnaiePivot, out ValeurEchange veUSD)) { TradePivot bestTrade = MeilleurEchangeDepuis(dispoEuro, veEURO, veUSD, monnaiePivot); if (bestTrade == null) { bestTrade = MeilleurEchangeDepuis(dispoUSD, veEURO, veUSD, monnaiePivot); } if (bestTrade != null) { ret.Add(bestTrade); } } } return(ret); }
private TradeCirculaire CalculTradeCirculaire(Monnaie m1, Monnaie m2, Monnaie m3) { if (!BaseEtQuoteToVe.TryGetValue(m1, m2, out ValeurEchange ve12) || !BaseEtQuoteToVe.TryGetValue(m2, m3, out ValeurEchange ve23) || !BaseEtQuoteToVe.TryGetValue(m3, m1, out ValeurEchange ve31)) { return(null); } TradeCirculaire partantDeM1 = CalculTradeCirculaireEnPartantDe(m1, ve12, ve12, ve23, ve31, TradeCirculaire.constructeurFromM1); TradeCirculaire partantDeM2 = CalculTradeCirculaireEnPartantDe(m2, ve23, ve12, ve23, ve31, TradeCirculaire.constructeurFromM2); TradeCirculaire partantDeM3 = CalculTradeCirculaireEnPartantDe(m3, ve31, ve12, ve23, ve31, TradeCirculaire.constructeurFromM3); TradeCirculaire best = partantDeM1; if (best.Gain < partantDeM2.Gain) { best = partantDeM2; } if (best.Gain < partantDeM3.Gain) { best = partantDeM3; } return(best); }