Sample JavaScript Strategy
This is a sample Moving Average Crossover strategy.
It shows the basic usage of the event handler functions, trading order classes, indicators and global properties.
/* * Moving Average Crossover */ var length1 = 7; var length2 = 21; var qty = 50; var stopPercent = 5; var sma1; var sma2; var entryEnabled = true; var stopExitEnabled = false; var lossTarget; function onStrategyStart() { if (instrument == instruments['F.MI']) { qty = 90; } else if (instrument == instruments['MB.MI']) { qty = 35; } else if (instrument == instruments['MS.MI']) { qty = 90; } sma1 = new SMA(length1); sma2 = new SMA(length2); } function onBar(bar) { cross = sma1.crosses(sma2, bar); if (entryEnabled) { if (cross == Above) { marketOrder = new MarketOrder(Buy, qty, "Entry"); marketOrder.send(); entryEnabled = false; } } else { if (cross == Below) { marketOrder = new MarketOrder(Sell, qty, "Crossover Exit"); marketOrder.send(); stopExitEnabled = false; } } } function onTrade(trade) { if (hasPosition() && stopExitEnabled) { if (trade.price < lossTarget) { marketOrder = new MarketOrder(Sell, qty, "Stop Target"); marketOrder.send(); stopExitEnabled = false; entryEnabled = true; } } } function onPositionOpened() { lossTarget = position.price - (stopPercent / 100 * position.price); stopExitEnabled = true; } function onPositionClosed() { entryEnabled = true; stopExitEnabled = false; }
