Warning! Executing cBots downloaded from this section may result in loss of funds. Use them at your own risk.
Notification Publishing copyrighted material is strictly prohibited. If you believe there is copyrighted material in this section you may use the Copyright Infringement Notification form to submit a claim.
How to install
Martingale Robot
by alexk
free  18 Dec 2013
This robot is based on the martingale strategy. This code is a cAlgo API sample. The "Sample Martingale Robot" creates a random Sell or Buy order. If the Stop loss is hit, a new     order of the same type (Buy / Sell) is created with double the Initial Volume amount. The robot will continue to double the volume amount for  all orders created until one of them hits the take Profit. After a Take Profit is hit, a new random Buy or Sell order is created with the Initial Volume amount.
free  10 Jun 2014
This cBots dumps trendbars data to CSV file. Instructions: create an instance open backtesting tab choose max available date range backtest cBot CSV format: time, open, high, low, close, volume In OnStop method cBot will flush all market series data to the CSV file on your Desktop.
Zelphin Scalper II
free  27 Jun 2015
programme original de Mark Jensen Zelphin Scalper Author : Abdallah HACID Solution Visual studio   Uses simple moving average and stochastic oscillator to find a good trade opportunity tested using GBPUSD symbol and 5m chart.     Symbole            =    GBPUSD     Timeframe        =    m5     Source            =    Open     Period            =    35     Volume            =    100k     TakeProfit        =    300     StopLoss        =    53     TrailStart        =    29     Trail            =    3     MaType            =    Exponential     K Period        =    5     D Period        =    3     K Slowing        =    3     Results :           Resultats            =    entre le 01/04/2011 et 17/7/2014 a 19:00 gain de 5303 euros(+11%).             Net profit            =    5303,01 euros             Ending Equity        =    5303,01 euros             Ratio de Sharpe        =    0.13             Ratio de Storino    =    0.17 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////                                               Use at own risk /////////////////////////////////////////////////////////////////////////////////////////////////////////////// Ne pas oublier de changer       la Source en Open,       le timeframe en m5,       le MaType en Exponentiel.
free  23 Dec 2014
Runs as a bot  that writes tick data to a  external CSV file  that can be read by other processes.    I needed this because our AI algorithm exists outside of calgo and needs fresh data every tick to make it's predictions.     I will eventually build the plumbing to allow external buy / sell recommendations to be read back from another stream using a separate bot. For those who want bar data instead of tick data.  Look for DataExportBars. Enhanced 2014-12-21 - Added the num_bid, num_ask and vol_adj_ask, vol_adj_bid columns based on market depth also removed some columns that have values that never changed.   I think  vol_adj_bid and vol_adj_ask show where the market really is with less gaming.  I like this because it shows where the bulk of the real orders are concentrated.   That way the odd sell at a very low or very high price people use to try and game the system are averaged out because they typically do not use large volumes for this kind of gaming.   It may be even better to throw away the statistical outliers and average the rest. Enhanced:2014-12-21 - Reverse spread for vol_adj_price and added a price adjust volume to provide a basic bull vs bear indicator based on where the bulk the open order book is hanging.   When used against backtest it can download historical data.  (See instructions in source) but the Market depth values I use to set num_bid, num_ask, vol_adj_ask, vol_adj_bid are not available during back test which is a real shame because I think these would be really handle for Machine learning algorithms.   The output file name is constructed from the Symbol plus the length of the moving average.  An example is: exp-EURUSD-ma30-ticks.csv   The moving average is included as an additional field just to show how it can be merged with the tick data. Sample Output: date,ask,bid,spread,num_ask,num_bid,vol_adj_ask,vol_adj_bid,vol_adj_spread 2014-12-22 06:51:29.746,1.225520,1.225410,0.000110,11,10,1.225600,1.225347,-0.000252 2014-12-22 06:51:36.527,1.225520,1.225420,0.000100,9,8,1.225590,1.225356,-0.000234 2014-12-22 06:51:44.308,1.225520,1.225430,0.000090,8,10,1.225584,1.225355,-0.000229 2014-12-22 06:51:44.621,1.225520,1.225440,0.000080,7,11,1.225588,1.225357,-0.000231 2014-12-22 06:51:47.621,1.225540,1.225440,0.000100,9,10,1.225594,1.225358,-0.000235 2014-12-22 06:51:49.371,1.225540,1.225460,0.000080,12,9,1.225635,1.225345,-0.000290 2014-12-22 06:51:49.621,1.225550,1.225460,0.000090,12,13,1.225662,1.225332,-0.000330 2014-12-22 06:51:50.371,1.225560,1.225460,0.000100,12,11,1.225675,1.225336,-0.000339 2014-12-22 06:51:50.605,1.225570,1.225460,0.000110,11,13,1.225682,1.225334,-0.000348 2014-12-22 06:51:50.918,1.225550,1.225450,0.000100,11,12,1.225684,1.225337,-0.000348 2014-12-22 06:51:51.168,1.225570,1.225490,0.000080,11,15,1.225667,1.225319,-0.000348 2014-12-22 06:51:51.480,1.225600,1.225520,0.000080,13,12,1.225723,1.225392,-0.000331 2014-12-22 06:51:51.621,1.225620,1.225520,0.000100,11,11,1.225703,1.225413,-0.000290 2014-12-22 06:51:52.418,1.225610,1.225520,0.000090,9,12,1.225676,1.225436,-0.000241 Sample in Excel When ran live can save new inbound ticks to the file as they arrive where a external process can pick them up.   I opened the file in shared mode so both processes can access the file simultaneously. It delivers a poor mans pipe for freshly arriving bar data.    I tested this in Lua and it will sit there waiting for new bars to show up at the end of the file and seems to catch them every time they arrive.     When using in this mode I recommend using a fast SSD or Ramdisk to minimize IO latency to disk. I apologize to those who want to use it internationally since I know the comma delimiter will mess up your formatting.  I tried changing it to a Tab delimited format but then it takes 5 extra clicks to load into excel.  There are only two lines where you have to change the , to tab to make  it work internationally.  I did not try to fix the back fill data problem for ticks like I did with bars because my application did not find them essential.  Let me know if you want this feature we can not duplicate it exactly but should be able to get close except for being able to backfill the gaps between end of back-test and real time.  Note:  To avoid saving ticks that had no order book I added a If Statement if ((volAdjAsk == 0.0) && (volAdjBid == 0.0)) it will have to be commented if you want to use it to download historical bars.  Want to collaborate:     www.linkedin.com/pub/joe-ellsworth/0/22/682/ or     http://bayesanalytic.com No Promises,  No Warranty.  Terms of use MIT http://opensource.org/licenses/MIT
free  22 Dec 2014
Exports chosen bars for Symbol at chosen at the chosen bar size from calgo to CSV file in Directory specified.      Files can be imported by excel but do not open in  when trying to update as excel takes an exclusive lock which will crash the process. OK: Help Needed:   When I run this in Backtest mode with 1 minute bars I get something that looks like valid volumes.  When I run it with 10 tick bars I get the same volume in every bar.    How do we get valid volume for the smaller duration bars.  Question:  How do you convert (MarketSeries.TickVolume to actual Transaction volume for the Bar. I want Total number of units traded during the bar.   I think transaction volume is a more meaningful input for momentum because a small transaction of a fractional unit doesn't mean as much as if a 100 million $ changed hands during the same change in price.  Recommended used is to use the Backtester to download as much historical data as possible in a back-test then switch over to activating the strategy live.  It will auto-backfill the data between end of Backtest and live data but use the Backtest to get as much of the data as possible first as it's lastBar semantic is simplistic.  I have found that tickvolume is only accurate when the Backtest is using the "Tick Data from Server"       The system is smart enough to add new data from current Backtest to end of existing data and it will not overwrite or duplicate the older data but it is not smart enough to detect gaps if the user runs a Backtest covering a couple of months then skips a few months and runs a different Backtest. When used live it will write a new bar whenever a bar has been completed for as long as the cbot is active.    The files are opened in shared mode so a separate process can read new data from them as they arrive.  I needed this because our AI prediction engine needs new data as it arrives and can not run inside of calgo.  I will eventually  write the reverse plumbing to allow predictions from the external engine to be picked up by calgo and executed as trades. When used in back-tester will export the data in the time-frame specified by the backtest.   I tested it back to Jan-1-2011 and all the data seemed to show up.         File name is derived from the symbol, bar duration and chosen moving average and looks like:  exp-EURUSD-Minute-ma3-bars.b1.csv Data  Looks as follows: datetime,open,close,high,low,volume,weighted_val,rsi,stddev,spread 2014-01-27 00:00:00.000,1.368700,1.368630,1.368730,1.368610,23.000000,1.368650,67.318063,0.000223,0.000050 2014-01-27 00:01:00.000,1.368620,1.368590,1.368630,1.368590,15.000000,1.368600,66.005144,0.000282,0.000050 2014-01-27 00:02:00.000,1.368570,1.368860,1.368880,1.368490,41.000000,1.368773,70.226266,0.000365,0.000060 2014-01-27 00:03:00.000,1.368880,1.368980,1.369010,1.368880,29.000000,1.368963,71.896500,0.000438,0.000050 2014-01-27 00:04:00.000,1.368970,1.368980,1.368980,1.368970,4.000000,1.368978,71.896500,0.000483,0.000030 2014-01-27 00:05:00.000,1.369010,1.368810,1.369010,1.368810,20.000000,1.368860,65.829147,0.000504,0.000070 2014-01-27 00:06:00.000,1.368800,1.368610,1.368810,1.368610,28.000000,1.368660,59.470578,0.000500,0.000080 2014-01-27 00:07:00.000,1.368590,1.368970,1.368980,1.368550,36.000000,1.368868,65.862483,0.000511,0.000060 2014-01-27 00:08:00.000,1.368980,1.368990,1.369000,1.368980,6.000000,1.368990,66.181582,0.000512,0.000060 In Excel it looks like: Note: To auto parse the dates when loading in excel change the code to replace T between dateTime with a space. Enhanced Dec-21-2014: To only add bars newer than what are already present in the file but it is still missing the code  to detect gaps and try to fill them in.   Enhanced Dec-212-2014 - To attempt to backfill bars between current bar and the last bar it finds in the file.  This is needed because the the back tester in CAglo always runs a little behind the current data and would create a gap of some very critical missing current data.     This process calculates how many are missing and attempts to backfile from current series.   I have tested it over a weekend but not over longer periods of times.     Want to collaborate:   www.linkedin.com/pub/joe-ellsworth/0/22/682/  or http://BayesAnalytic.com No Promises,  No Warranty.  
free  06 Jan 2015
Reversion & Trend trading robot. Utilizes threshold to determine entry. Includes trailing stop loss. Reversion & Trend trading robot. Utilizes threshold to determine entry. Includes trailing stop loss.
by Waxy
free  11 Dec 2017
This bot is useful in breakouts, handling fake breakouts and reducing risk exposure.   Instead of risking 100 pips to make 100 pips, its better to risk 10 pips 10 times if you know the price is going to move significantly away from your entry, for example the break change of a trading session or a technical breakout. Characteristics It can handle both long and short and it displays the number of tries and total profit from all trades. Can work on a single side (only buy/sell on breakout) Can work as an OCO, this means whichever side triggers first will remain until there's profit or the numbers or meets the number of attemps, example: Buy Stop Executed, so the sell stop will be closed and the bot will work with buy orders only. Without an OCO, the sell stop order would remain, and the bot will stop until there's a profit or meets the number of attemps. Can work with multiple instances simultaneously. Can work as a martingale with parameter ("Increment Volume each # of times") example: Parameter is 3, so bot will double position size each time it has 3 losses in a row. Parameter is 1, bot will double position size after each loss. This feature can be disabled. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Tips on how to use it This is not a standalone system, it's only a bot to increase your opportunities and potential profit in definite market conditions. Use a small stop loss. Know the breakout range according to your technical perspective. This is a bot for when market changes from choppy to trending. Set a realistic TP and number of attemps. Be careful since this is a martingale Breakouts or volatile scenarios may cause slippage, wide spreads, nothing can be done about it, include it in yorur trading plan. Safe stops in case settings are not correct Stop losses must not be greater than the width of the breakout band, if there's only one direction (long or short) on your settings, this won't matter. Ask price must be smaller than your long entry price. Bid price must be bigger than your short entry price. If there's an error while placing an order, the bot will stop and display such error on the log. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- I've decided to rebuild the bot from the ground up. Removed limit orders since this is mainly a breakout bot, last version was flawed in that aspect and confusing for users, will create another bot apart for limit orders. In case there's a bug, error or suggestion, please write to: waxavi@outlook.com If you want a custom bot made from this or any other type of strategy/indicator, my services are available on freelancer. (Bot may have bugs - please report if some bug is found) USE THIS BOT AT YOUR OWN RISK AND USE ONLY WITH REAL MONEY IF YOU FULLY UNDERSTAND IT
free  10 Jul 2015
This robot is a fork of Robot_Forex. It is hosted on Github and gives good results. If you want to have the last evolutions of the bot, take it here It manages a stop loss, a money management , a tralling stop and dynamic grid to her positions. For the parameters to use go to Github A video a.bout this bot is on youtube  
Smart Grid
by SaifBD
free  01 Jul 2015
Smart Grid cBot will open first position based on trend. Next positions will be added using 'PipStep' parameter. Dynamic Volume Exponent & 1 trade per 1 bar to minimize draw-down risk. Follow trend direction manually & open Buy Sell your choice. 
free  08 Jul 2017
This is a complete trade manager. It manages your open positions automatically. It has a jumping stop-loss, partial closure, breakeven, and automatic SL&TP. Guide: https://github.com/hyahfoufi/cTraderManager
by Waxy
free  28 Jan 2021
This is a Bot that handles OSO Type Orders, it works only for 2 orders, you Type if you wanna Buy or Sell, the prices and the bot will handle the rest. For more info on how OSO Orders work please check Investopedia's page:  http://www.investopedia.com/university/intro-to-order-types/conditional-orders.asp 08/06/?? - Fixed Bug where Order would send before time 01/27/2021 - Updated settings to use the latest parameter features ---- Made by Waxy
Memory Manager Bot
free  27 Aug 2015
The memory manager when attached as robot periodically (configurable) frees the memory used by cAlgo thus keeping it down pressured. Don't set the "Reclaim Period" to very low values which may effect the performance of cAlgo. On each tick received it displays the current working set (memory used by cAlgo) and the last memory reclaimed. Since it's checking to free or not on tick received event on slow trading hours the text will be updated less frequent. The bot needs "FullAccess" permission to work, so you need to allow them when asked.