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 }
/// <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; } }
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 }
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); }
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 }
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); }
/// <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; }
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; }
// ------------------------------ 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); }
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; }
public void AddRule(TradeRule rule, bool Active = true) { ruleSheet.AddRule(rule, Active); }