Esempio n. 1
0
        private void SetupRules(double optTrigger)
        {
            ruleDelayAllTrades = new RuleDelayAllTrade();
            ruleDelayBuy       = new RuleDelayBuy();

            ruleForce = new RuleManualForce();

            ruleMinBase      = new RuleMinimumBaseAmount();
            ruleMinBasePost  = new RuleMinimumBaseAmountPost();
            ruleMinQuote     = new RuleMinimumQuoteAmount();
            ruleMinQuotePost = new RuleMinimumQuoteAmountPost();

            ruleMinBaseOrders  = new RuleMinimumBaseAmountOrders();
            ruleMinQuoteOrders = new RuleMinimumQuoteAmountOrders();

            ruleMinSellprice = new RuleMinimumSellPriceGiver();
            ruleStopLoss     = new RuleStopLossSpread(0.9);

            rulePriceDelta = new RulePriceDelta(optTrigger);

            // order doesn't matter
            allRules = new TradeRule[] {
                ruleDelayAllTrades, ruleDelayBuy,      // time delay
                ruleForce,                             // manual utility
                ruleMinBase, ruleMinBasePost,          // minimum base amount
                ruleMinQuote, ruleMinQuotePost,        // minimum quote amount
                ruleMinBaseOrders, ruleMinQuoteOrders, // minimum amounts in orders
                ruleMinSellprice, ruleStopLoss,        // sell rules
                rulePriceDelta
            };                                         // buy rules
        }
Esempio n. 2
0
        /// <summary>
        /// Returns a TradeRule generated with two indicators and a CompareType
        /// </summary>
        /// <param name="indicator1">The first indicator</param>
        /// <param name="compareType">The comparison type</param>
        /// <param name="indicator2">The last indicator</param>
        /// <returns>Returns a new TradeRule object</returns>
        public static TradeRule GenerateTradeRule(string indicator1, IndicatorCompareType compareType, string indicator2)
        {
            try
            {
                TradeRule tr = null;
                switch (compareType)
                {
                case IndicatorCompareType.GT:
                case IndicatorCompareType.LT:
                    tr = new SimpleCompareTradeRule(indicator1, compareType, indicator2);
                    break;

                case IndicatorCompareType.crossesAbove:
                case IndicatorCompareType.crossesBelow:
                    tr = new CrossesCompareTradeRule(indicator1, compareType, indicator2);
                    break;

                case IndicatorCompareType.positiveDiverge:
                case IndicatorCompareType.negativeDiverge:
                    tr = new DivergeCompareTradeRule(indicator1, compareType, indicator2);
                    break;

                default:
                    tr = null;
                    break;
                }

                return(tr);
            }
            catch (TradeRuleException)
            {
                throw;
            }
        }
Esempio n. 3
0
        private void SetupRules()
        {
            ruleDelayAllTrades = new RuleDelayAllTrade();
            ruleDelayBuy       = new RuleDelayBuy();

            ruleDump  = new RuleDump();
            ruleForce = new RuleManualForce();

            ruleMinBase      = new RuleMinimumBaseAmount();
            ruleMinBasePost  = new RuleMinimumBaseAmountPost();
            ruleMinQuote     = new RuleMinimumQuoteAmount();
            ruleMinQuotePost = new RuleMinimumQuoteAmountPost();

            ruleMinSellprice = new RuleMinimumSellPrice();
            ruleSellBand     = new RuleSellBand();
            ruleStopLoss     = new RuleStopLoss();

            ruleBollingerBuy = new RuleBollinger();
            ruleMeanRev      = new RuleMeanRev();

            ruleGlobalTrend = new RuleGlobalDrop("meanRev");

            // order doesn't matter
            allRules = new TradeRule[] {
                ruleDelayAllTrades, ruleDelayBuy,             // time delay
                ruleDump, ruleForce,                          // manual utility
                ruleMinBase, ruleMinBasePost,                 // minimum base amount
                ruleMinQuote, ruleMinQuotePost,               // minimum quote amount
                ruleMinSellprice, ruleSellBand, ruleStopLoss, // sell rules
                ruleBollingerBuy, ruleMeanRev
            };                                                // buy rules
        }
Esempio n. 4
0
        public static void SaveRule(TradeRule rule)
        {
            string filename = rulePath + rule.Name + ".mrl";

            EZAPI.Toolbox.Serialization.Xml.Serialize(rule.SaveData, typeof(XmlSaveRule), filename);
            //Objects.SerializeObject<TradeRule>(rule, filename);
        }
Esempio n. 5
0
        private void SetupRules()
        {
            ruleDelayAllTrades = new RuleDelayAllTrade();
            ruleDelayBuy       = new RuleDelayBuy();

            ruleForce = new RuleManualForce();

            ruleMinBase      = new RuleMinimumBaseAmount();
            ruleMinBasePost  = new RuleMinimumBaseAmountPost();
            ruleMinQuote     = new RuleMinimumQuoteAmount();
            ruleMinQuotePost = new RuleMinimumQuoteAmountPost();

            ruleMinSellprice = new RuleMinimumSellPrice();
            ruleSellBand     = new RuleSellBand();
            ruleStopLoss     = new RuleStopLoss();

            rulePriceDelta = new RulePriceDelta();

            // order doesn't matter
            allRules = new TradeRule[] {
                ruleDelayAllTrades, ruleDelayBuy,             // time delay
                ruleForce,                                    // manual utility
                ruleMinBase, ruleMinBasePost,                 // minimum base amount
                ruleMinQuote, ruleMinQuotePost,               // minimum quote amount
                ruleMinSellprice, ruleSellBand, ruleStopLoss, // sell rules
                rulePriceDelta
            };                                                // buy rules
        }
Esempio n. 6
0
        public static TradeRule LoadRule(string ruleFileName)
        {
            TradeRule rule = null;

            try
            {
                XmlSaveRule xsr = (XmlSaveRule)EZAPI.Toolbox.Serialization.Xml.Deserialize(typeof(XmlSaveRule), ruleFileName);

                rule        = new TradeRule(xsr.Name, xsr.RuleCombination, xsr.RuleType);
                rule.Active = xsr.Active;

                foreach (var xsrc in xsr.RuleConditions)
                {
                    IDataProvider dataProvider1 = MonkeyFactory.CreateDataProviderInstance(xsrc.Value1.Name);
                    IDataProvider dataProvider2 = MonkeyFactory.CreateDataProviderInstance(xsrc.Value2.Name);
                    dataProvider1.SaveData = xsrc.Value1;
                    dataProvider2.SaveData = xsrc.Value2;

                    RuleValue       value1    = new RuleValue(dataProvider1);
                    RuleValue       value2    = new RuleValue(dataProvider2);
                    IRuleComparison compare   = MonkeyFactory.CreateRuleComparisonInstance(xsrc.Compare.Name);
                    RuleCondition   condition = new RuleCondition(value1, compare, value2);

                    rule.AddRuleCondition(condition);
                }
            }
            catch (Exception ex)
            {
                // If there is a problem loading the rule, then we return null (not some partial rule).
                rule = null;
                ExceptionHandler.TraceException(ex);
            }

            return(rule);
        }
Esempio n. 7
0
        /// <summary>
        /// Cross the buy trade conditions.
        /// </summary>
        /// <param name="chromosome1">First chromosome to cross.</param>
        /// <param name="chromosome2">Second chromosome to cross.</param>
        private void CrossBuyTradeConditions(TradeSystemChromosome chromosome1, TradeSystemChromosome chromosome2)
        {
            int       c1   = GetRandomPosition(chromosome1.ChromosomeValue.BuyCondition.TradeRules.Count);
            int       c2   = GetRandomPosition(chromosome2.ChromosomeValue.BuyCondition.TradeRules.Count);
            TradeRule c1tr = chromosome1.ChromosomeValue.BuyCondition.TradeRules[c1];
            TradeRule c2tr = chromosome2.ChromosomeValue.BuyCondition.TradeRules[c2];

            chromosome1.ChromosomeValue.BuyCondition.TradeRules[c1] = c2tr;
            chromosome2.ChromosomeValue.BuyCondition.TradeRules[c2] = c1tr;
        }
Esempio n. 8
0
        public static List <TradeRule> LoadAllRules()
        {
            List <TradeRule> result = new List <TradeRule>();

            string[] filePaths = Directory.GetFiles(rulePath);
            foreach (string pathname in filePaths)
            {
                TradeRule rule = LoadRule(pathname);
                if (rule != null)
                {
                    result.Add(rule);
                }
            }

            return(result);
        }
 private void btnNewRule_Click(object sender, EventArgs e)
 {
     this.Opacity       = .3;
     parentForm.Opacity = .3;
     using (var form = new RuleBuilderForm())
     {
         var result = form.ShowDialog();
         if (result == DialogResult.OK)
         {
             TradeRule tradeRule = form.Rule;
             ruleSheet.AddRule(tradeRule);
             MonkeyIO.SaveRule(tradeRule);
         }
     }
     this.Opacity       = 1.0;
     parentForm.Opacity = 1.0;
 }
Esempio n. 10
0
        // ------------------------------

        public void Setup()
        {
            GUI.GUIManager.AddStrategyScreenPair(this.pair);

            // ----------------------------------

            ruleDelayAllTrades = new RuleDelayAllTrade();
            ruleDelayBuy       = new RuleDelayBuy();

            ruleMinBase      = new RuleMinimumBaseAmount();
            ruleMinBasePost  = new RuleMinimumBaseAmountPost();
            ruleMinQuote     = new RuleMinimumQuoteAmount();
            ruleMinQuotePost = new RuleMinimumQuoteAmountPost();

            ruleMinSellprice = new RuleMinimumSellPrice();
            ruleSellBand     = new RuleSellBand();
            ruleStopLoss     = new RuleStopLoss();

            rulePriceDelta = new RulePriceDelta();
            ruleMeanRev    = new RuleMeanRev();
            ruleMACD       = new RuleMACD();
            ruleADX        = new RuleADX();

            // order doesn't matter
            allRules = new TradeRule[] {
                ruleDelayAllTrades, ruleDelayBuy,             // time delay
                ruleMinBase, ruleMinBasePost,                 // minimum base amount
                ruleMinQuote, ruleMinQuotePost,               // minimum quote amount
                ruleMinSellprice, ruleSellBand, ruleStopLoss, // sell rules
                rulePriceDelta, ruleMeanRev, ruleADX, ruleMACD
            };                                                // buy rules

            // ----------------------------------

            LastBuyTime    = 0;
            TradeTimeBlock = 30;
            LastSellTime   = 0;

            LastBuyTime  = 0;
            openPosition = 0;

            predictorExtremes = new Data.Predictors.PriceExtremes(pair);
        }
Esempio n. 11
0
        private void SetupRules()
        {
            ruleDelayAllTrades = new RuleDelayAllTrade();
            ruleDelayBuy       = new RuleDelayBuy();

            ruleForce = new RuleManualForce();

            ruleMinBase      = new RuleMinimumBaseAmount();
            ruleMinBasePost  = new RuleMinimumBaseAmountPost();
            ruleMinQuote     = new RuleMinimumQuoteAmount();
            ruleMinQuotePost = new RuleMinimumQuoteAmountPost();

            ruleMinQuoteOrders = new RuleMinimumQuoteAmountOrders();

            ruleMinSellprice = new RuleMinimumSellPrice();
            ruleSellBand     = new RuleSellBand();
            ruleStopLoss     = new RuleStopLoss(0.85);

            ruleMinSellPriceDump = new RuleMinimumSellPriceDump();
            ruleDump             = new RuleDump();

            ruleMACD    = new RuleMACD();
            ruleVolume  = new RuleVolumeRatio(5);
            ruleMeanRev = new RuleMeanRev(2.5);

            // order doesn't matter
            allRules = new TradeRule[] {
                ruleDelayAllTrades, ruleDelayBuy,             // time delay
                ruleForce,                                    // manual utility
                ruleMinBase, ruleMinBasePost,                 // minimum base amount
                ruleMinQuote, ruleMinQuotePost,               // minimum quote amount
                ruleMinQuoteOrders,                           // minimum orders amount
                ruleMinSellprice, ruleSellBand, ruleStopLoss, // sell rules
                ruleMinSellPriceDump, ruleDump,               // dump rules
                ruleMACD, ruleVolume, ruleMeanRev
            };                                                // buy rules
        }
 public void AddRule(TradeRule rule, bool Active = true)
 {
     rule.Active = Active;
     bindingSource.Add(rule);
     gridRules.Refresh();
 }
 public RuleSelectEventArgs(TradeRule rule)
 {
     this.tradeRule = rule;
 }
Esempio n. 14
0
 public void AddRule(TradeRule rule, bool Active = true)
 {
     ruleSheet.AddRule(rule, Active);
 }