A test EA generated by Expert Advisor Studio (3rd pattern)

This EA is generated by Expert Advisor Studio. It is based on the third pattern: Main vs Signal.

A test EA generated by Expert Advisor Studio (3rd pattern)

registerEA(
   "sample_using_macd",
   "A test EA based on macd",
   [{ // parameters
       name: "fasteEMA",
       value: 12,
       required: true,
       type: PARAMETER_TYPE.INTEGER,
       range: [1, 100]
   }, {
       name: "slowEMA",
       value: 26,
       required: true,
       type: PARAMETER_TYPE.INTEGER,
       range: [1, 100]
   }, {
       name: "signalSMA",
       value: 9,
       required: true,
       type: PARAMETER_TYPE.INTEGER,
       range: [1, 100]
   }],
   function (context) { // Init()
       var account = getAccount(context, 0)
       var brokerName = getBrokerNameOfAccount(account)
       var accountId = getAccountIdOfAccount(account)
       var symbolName = "EUR/USD"
       getQuotes(context, brokerName, accountId, symbolName)
       window.chartHandle = getChartHandle(context, brokerName, accountId, symbolName, TIME_FRAME.M1)
       var fasteEMA = getEAParameter(context, "fasteEMA")
       var slowEMA = getEAParameter(context, "slowEMA")
       var signalSMA = getEAParameter(context, "signalSMA")
       window.indiHandle = getIndicatorHandle(context, brokerName, accountId, symbolName, TIME_FRAME.M1, "macd",
       [{
           name: "fasteEMA",
           value: fasteEMA
       },{
           name: "slowEMA",
           value: slowEMA
       },{
           name: "signalSMA",
           value: signalSMA
       }])
   },
   function(context) { // Deinit()
       delete window.currTime
   },
   function(context) { // OnTick()
       var arrTime = getData(context, window.chartHandle, DATA_NAME.TIME)
       if (typeof window.currTime == "undefined") {
           window.currTime = arrTime[arrTime.length - 1]
       } else if (window.currTime != arrTime[arrTime.length - 1]) {
           window.currTime = arrTime[arrTime.length - 1]
       } else {
           return
       }
       var account = getAccount(context, 0)
       var brokerName = getAccountIdOfAccount(account)
       var accountId = getAccountIdOfAccount(account)
       var symbolName = "EUR/USD"
       var arrMain = getData(context, window.indiHandle, "main")
       var arrSignal = getData(context, window.indiHandle, "signal")
       var ask = getAsk(context, brokerName, accountId, symbolName)
       var bid = getBid(context, brokerName, accountId, symbolName)
       var limitPrice = 0.0003
       var stopPrice = 0.0003
       var volume = 0.01
       if (arrMain[arrMain.length - 3] < arrSignal[arrSignal.length - 3] && arrMain[arrMain.length - 2] > arrSignal[arrSignal.length - 2]) {
           sendOrder(brokerName, accountId, symbolName, ORDER_TYPE.OP_BUYLIMIT, ask - limitPrice, 0, volume, ask + limitPrice, bid - 3 * stopPrice, "")
       } else if (arrMain[arrMain.length - 3] > arrSignal[arrSignal.length - 3] && arrMain[arrMain.length - 2] < arrSignal[arrSignal.length - 2]) {
           sendOrder(brokerName, accountId, symbolName, ORDER_TYPE.OP_SELLLIMIT, bid + limitPrice, 0, volume, bid - limitPrice, ask + 3 * stopPrice, "")
       }
    }
)