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, "")
}
}
)