hiring a developer

Discussion in 'Automated Trading' started by Cmoss, Mar 30, 2017.

  1. It traded parts of DEC/MARCH. So price history is gappy during that period.
     
    #41     Apr 11, 2017
  2. #region Using declarations
    using System;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Xml.Serialization;
    using NinjaTrader.Cbi;
    using NinjaTrader.Data;
    using NinjaTrader.Indicator;
    using NinjaTrader.Gui.Chart;
    using NinjaTrader.Strategy;
    #endregion
    // This namespace holds all strategies and is required. Do not change it.
    namespace NinjaTrader.Strategy
    {
    /// <summary>
    /// EMA RSI MACD
    /// </summary>
    [Description("EMA RSI MACD")]
    public class CMOSS : Strategy
    {
    #region Variables
    // Wizard generated variables
    private int quantity = 1; // Default setting for Quantity
    private double rSIbuy = 51.000; // Default setting for RSIbuy
    private double mACDbuy = 0.01; // Default setting for MACDbuy
    private int shortEMA = 5; // Default setting for ShortEMA
    private int longEMA = 12; // Default setting for LongEMA
    private double rSIsell = 49.000; // Default setting for RSIsell
    private double mACDsell = -0.5000; // Default setting for MACDsell
    // User defined variables (add any user defined variables below)
    #endregion
    /// <summary>
    /// This method is used to configure the strategy and is called once before any strategy method is called.
    /// </summary>
    protected override void Initialize()
    {
    Add(EMA(Close, ShortEMA));
    Add(EMA(Close, LongEMA));
    Add(RSI(14, 1));
    Add(MACD(12, 26, 9));
    Add(EMA(Close, ShortEMA));
    Add(EMA(Close, LongEMA));
    Add(RSI(14, 1));
    Add(MACD(12, 26, 9));
    CalculateOnBarClose = true;
    }
    /// <summary>
    /// Called on each bar update event (incoming tick)
    /// </summary>
    protected override void OnBarUpdate()
    {
    // Condition set 1
    if (CrossAbove(EMA(Close, ShortEMA), EMA(Close, LongEMA), 1)
    && RSI(14, 1).Avg[0] > RSIbuy
    && MACD(12, 26, 9).Avg[0] > MACDbuy)
    {
    EnterLong(Quantity, "long");
    }
    // Condition set 2
    if (CrossAbove(EMA(Close, ShortEMA), EMA(Close, LongEMA), 1)
    && RSI(14, 1).Avg[0] < RSIsell
    && MACD(12, 26, 9).Avg[0] < MACDsell)
    {
    EnterShort(Quantity, "short");
    }
    }
    #region Properties
    [Description("quantity")]
    [GridCategory("Parameters")]
    public int Quantity
    {
    get { return quantity; }
    set { quantity = Math.Max(1, value); }
    }
    [Description("RSI threshold")]
    [GridCategory("Parameters")]
    public double RSIbuy
    {
    get { return rSIbuy; }
    set { rSIbuy = Math.Max(0.0000, value); }
    }
    [Description("MACD threshold")]
    [GridCategory("Parameters")]
    public double MACDbuy
    {
    get { return mACDbuy; }
    set { mACDbuy = Math.Max(-5, value); }
    }
    [Description("short EMA")]
    [GridCategory("Parameters")]
    public int ShortEMA
    {
    get { return shortEMA; }
    set { shortEMA = Math.Max(0, value); }
    }
    [Description("long EMA")]
    [GridCategory("Parameters")]
    public int LongEMA
    {
    get { return longEMA; }
    set { longEMA = Math.Max(0, value); }
    }
    [Description("RSI threshold")]
    [GridCategory("Parameters")]
    public double RSIsell
    {
    get { return rSIsell; }
    set { rSIsell = Math.Max(0.000, value); }
    }
    [Description("MACD threshold")]
    [GridCategory("Parameters")]
    public double MACDsell
    {
    get { return mACDsell; }
    set { mACDsell = Math.Max(-5.0, value); }
    }
    #endregion
    }
    }
     
    #42     Apr 11, 2017
  3. juneES.png
     
    #43     Apr 11, 2017
  4. juneESgraph.png

    modified code.
     
    #44     Apr 11, 2017
  5. Cmoss

    Cmoss

    thanks!

    does exit on close of session have much impact?
     
    #45     Apr 11, 2017
  6. What I coded above is pretty rudimentary, Ideally, you should always plan on exiting on the close. There is much more versatile technique but like anything, you need to come to your conclusions first based on the evolution of your trading insights. You need to test out different parameters and market conditions and 'learn' the code first. You may find through testing its not ideal. Then you will move on to other techniques. Its very hard for anyone to teach me anything. I needed to get there myself. Its the same way with most people on this path.
     
    Last edited: Apr 11, 2017
    #46     Apr 11, 2017
    Simples likes this.
  7. trendline41117.png
     
    #47     Apr 11, 2017
  8. yesterdays morning trendline setup. trendline41017.png
     
    #48     Apr 11, 2017
  9. Cmoss

    Cmoss

    gotcha, i'll see if i can get this loaded into NT8 through the strategy builder so i can tinker.

    Thanks again
     
    #49     Apr 11, 2017
  10. no problem. You need to look at every scenario. Don't 'curve fit'.. the pnl might look good but it could be from 'curve fitting'.. that's why a discretionary bias where you truly understand price action and what is going on is important.

    laterz,
    Chris
     
    #50     Apr 11, 2017
    userque and Cmoss like this.