// STS v0.10g - Smart Trading Script (c) 2012-2013 NeatPortal.com // WARNING: This script requires NEATBOT 2735+ to run // // The script tries to gain more resources by using spread between bid and ask prices // Algorithm is simplified, but should work reasonably well under broad range of conditions // // Comment out if you want to disable auto start label autorun // uncomment the next line if you are using 2720-2734 build // MAX_TRADE = 9999999 // ===== OPTIONAL CONFIGURATION PARAMETERS ===== // Extra resources to reserve (in addition to city's reserved resources) // food, wood, stone, iron, gold: extra = [ 1m, 1m, 1m, 1m, 100 ] // How aggressive we want to be (lower number would increase trading gains at the cost of potentially slower trade execution) aggr = 2% // Only trade if we expect this much gain gain = 2% // ===== NOTHING TO CONFIGURE BELOW THIS LINE ===== delay = 10 config trade:0 comm = 0.5% maxRes = 990B label nextres res = floor(random() * 4) // choose resource to trade randomly, helps with multiple trading running resName = ResourceIntNames[res] label check if city.tradesArray.length > 8 execute "sleep " + delay if city.tradesArray.length > 8 execute "canceltrade " + city.tradesArray[0].id if city.tradesArray.length > 8 goto check label notready if !m_context.marketReady() goto notready prices = [ Price(res, aggr), Price(res, 1 - aggr), Price(res, aggr) * (1 + comm), Price(res, 1 - aggr) * comm ] resGold = city.reservedResource.gold + extra[4] + max(0, city.resource.gold - city.reservedResource.gold - extra[4]) * 0.8 canSell = (city.resource[resName].amount - city.reservedResource[resName] - extra[res]) * 0.8 sellLimit = (city.resource.gold - resGold) / prices[3] if canSell > 0 if sellLimit >=1 if prices[1] - prices[3] < prices[2] * (1 + gain) goto nextres if sellLimit < 1 sellLimit = min(max(1, (resGold - city.resource.gold) / prices[1] / 2), (city.resource.gold - 1) / prices[3]) // we are low on gold sellVolume = floor(min(canSell, sellLimit, MAX_TRADE - max(0, floor(min(maxRes - city.resource[resName].amount, (city.resource.gold - resGold) / prices[2]))) / 3)) if sellVolume > 0 execute "sell " + res + " " + sellVolume + " " + prices[1] buyVolume = floor(min(maxRes - city.resource[resName].amount, (city.resource.gold - resGold) / prices[2], MAX_TRADE)) if buyVolume > 0 execute "buy " + res + " " + buyVolume + " " + prices[0] goto nextres
Please enter your password of your account at the remote wiki below.
You should trust both wikis because the password could be read by the particular administrators.
Clear message
