Example #1
0
        private TradeCirculaire CalculTradeCirculaireEnPartantDe(Monnaie m, ValeurEchange veInitiale, ValeurEchange ve12, ValeurEchange ve23, ValeurEchange ve31,
                                                                 Func <Richesse, ValeurEchange, ValeurEchange, ValeurEchange, TradeCirculaire> constructeurDepuisEtape)
        {
            TradeCirculaire tmp       = null;
            TradeCirculaire bestTrade = constructeurDepuisEtape(new Richesse(0, m), ve12, ve23, ve31);
            int             i         = 0;

            while (tmp == null || tmp.Gain > bestTrade.Gain)
            {
                if (tmp != null)
                {
                    bestTrade = tmp;
                }
                Richesse etape = veInitiale.GetRichesseToTrade(m, i++);
                tmp = constructeurDepuisEtape(etape, ve12, ve23, ve31);
            }
            return(bestTrade);
        }
Example #2
0
        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);
        }