Waxy's avatar
Xavier R
¨You are not what you have done, you are what you have overcome.¨ - Anonymous
Xavier R's avatar


Name:Xavier R
Member since: 12 May 2015

Favorite symbols:



Engineer, Trader & Programmer. If you want to build a bot or project you can contact me at waxavi@outlook.com Support my work on ko-fi to create more tools: https://ko-fi.com/waxycodes


¨You are not what you have done, you are what you have overcome.¨ - Anonymous

Last Algorithm Comments

@Self updated Asia/Europe/US Market Hours:  14 Nov 2019, 07:45

Hello, try re-downloading or simply download htmlagilitypack from their website


@Order Cancels Order (OCO):  12 Apr 2019, 22:45

Hello, I've updated it to work with decimals.

@Self updated Asia/Europe/US Market Hours:  11 Dec 2017, 05:20

Hola Axeldos87,

Prueba volver a bajar el indicador, obviamente el codigo esta disponible.

Si aun no te funciona, simplemente copia el codigo en un nuevo indicador y luego lo compilas.

@Brute Force Breakout Bot (BETA):  11 Dec 2017, 05:06

I've just uploaded this bot after a long time, rebuilt it from scratch, old bugs reported are gone.
Made it breakout only, will build another bot for limit orders instead so it's easier for users.
I hope it's useful for the CTDN community.

Best Regards,

@Tunneling Martingale:  16 Sep 2016, 20:41

This is not a standalone system, it's more of a breakout setup with multiple attemps.

To get it working in backtesting, the starting price at the backtesting date must be between the long and short entry parameters, that's how you can make it work for a backtesting, example:

Starting price of EURUSD on 1/Jun: 1.1330

Long Entry at: 1.1350
Short Entry at: 1.1310

@Multiple Entries Robot:  19 Jan 2016, 18:48

Hello ThePhantomRaven

My fault for not checking this out, didn't know you don't receive email notifications for these posts.

I'll check this out and fix it as soon as I can.

@Multiple Entries Robot:  28 May 2015, 17:46

Well let me clarify, Short Star Level Parameter is the entry level for the sell orders.

The updated version will work for both limit and stop orders and I'll add an OCO Mode.

@Multiple Entries Robot:  28 May 2015, 15:46

It only works for stop orders, maybe you're placing a short price above current level?

I can make it optional to work as limit order as well.

@Multiple Entries Robot:  28 May 2015, 15:40


I've tested the bot and the sell orders are executed according to the rules, please be more specific about the bug?

Thank you

Last Forum Posts

@Bug when drawing an object (Property IsHidden) doesn't work:  08 Jun 2023, 09:44

Hello Spotware,
I'm having this issue on cTrader where If I declare an object and set its property to Hidden at start, it doesn't work.

I'm using Spotware 4.7.9

Please fix.

Thanks for your support.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo;

[Indicator(IsOverlay = true, AccessRights = AccessRights.None)]
public class TestHiding : Indicator
    protected override void Initialize()
        var line = Chart.DrawHorizontalLine("Line", Ask, Color.Yellow);
        line.IsHidden = true;

    public override void Calculate(int index)

@Bug when retrieving History from Indicator:  08 Jun 2023, 09:00

Hello Spotware,

I have the following bug which affects some programs, when I try to request Historical trades it throws me zero, despite I have many trades done historically.

using cAlgo.API;

namespace cAlgo;

[Indicator(AccessRights = AccessRights.None)]
public class NewIndicator : Indicator
    protected override void Initialize()

    public override void Calculate(int index)

This get's fixed somehow by going to the history tab and selecting All History

I think this should not be happening, History.Count should always retrieve all values regardless of what is selected in the user interface


@What's the default Optimization Fitness Formula?:  23 Mar 2023, 05:13

I'd like to replicate the same fitness values as when using the standard and default optimization criteria, but withing my custom option.
I'd like to know how this formula was calculated by Spotware under the hood, as I haven't been able to replicate it.

These are different metrics, one is $, other is DD % and the other is number of winning trades, so not sure how these are merged together.

Thanks in advance

@LocalStorage Feedback:  25 Jan 2023, 01:10

Hello Spotware, 

I think LocalStorage is a great addition and would help develop new ideas.

Would it be possible to add Event Listeners to Local Storage for these?

- Created
- Updated
- Deleted

With args including all data found in the json, as well as the storage scope

Edit: I thought LocalStorage had a bug so this is why I put it here instead of suggestions, then I realized it was an issue with my code or the example provided and all was good.


@VS2022 and cAlgo; Trouble with debugging:  23 Jan 2023, 06:48

Hello Spotware, sorry for the late reply.

I'm unable to replicate the same behavior, I'm getting this window now:

Here are the Logs of System.Core.Lib but I don't know if they will be useful now

C:\Users\USUARIO\AppData\Local\Spotware\cTrader\abb70432efbee65d18af69e79fe8efe1\app_4.5.7.12682\x64\System.Private.CoreLib.pdb: Cannot find or open the PDB file.
C:\Users\USUARIO\AppData\Local\Spotware\dotnet\shared\Microsoft.NETCore.App\6.0.0\System.Private.CoreLib.pdb: Cannot find or open the PDB file.
D:\a\_work\1\s\artifacts\obj\coreclr\System.Private.CoreLib\x64\Release\System.Private.CoreLib.pdb: Cannot find or open the PDB file.
C:\Users\USUARIO\AppData\Local\Temp\SymbolCache\System.Private.CoreLib.pdb\57c2d4282221452cad4df86bbd5d6fa0ffffffff\System.Private.CoreLib.pdb: Cannot find or open the PDB file.
C:\Users\USUARIO\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\System.Private.CoreLib.pdb\57c2d4282221452cad4df86bbd5d6fa0ffffffff\System.Private.CoreLib.pdb: Cannot find or open the PDB file.
C:\Users\USUARIO\AppData\Local\Temp\SymbolCache\System.Private.CoreLib.pdb\57c2d4282221452cad4df86bbd5d6fa01\System.Private.CoreLib.pdb: Cannot find or open the PDB file.
C:\Users\USUARIO\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\System.Private.CoreLib.pdb\57c2d4282221452cad4df86bbd5d6fa01\System.Private.CoreLib.pdb: Cannot find or open the PDB file.

SYMSRV:  UNC: C:\Users\USUARIO\AppData\Local\Temp\SymbolCache\System.Private.CoreLib.pdb\57C2D4282221452CAD4DF86BBD5D6FA0ffffffff\System.Private.CoreLib.pdb - file not found

SYMSRV:  UNC: C:\Users\USUARIO\AppData\Local\Temp\SymbolCache\System.Private.CoreLib.pdb\57C2D4282221452CAD4DF86BBD5D6FA0ffffffff\System.Private.CoreLib.pd_ - file not found

SYMSRV:  UNC: C:\Users\USUARIO\AppData\Local\Temp\SymbolCache\System.Private.CoreLib.pdb\57C2D4282221452CAD4DF86BBD5D6FA0ffffffff\file.ptr - file not found

SYMSRV:  HTTPGET: /download/symbols/index2.txt

SYMSRV:  HttpQueryInfo: 80190194 - HTTP_STATUS_NOT_FOUND

SYMSRV:  HTTPGET: /download/symbols/System.Private.CoreLib.pdb/57C2D4282221452CAD4DF86BBD5D6FA0ffffffff/System.Private.CoreLib.pdb

SYMSRV:  HttpQueryInfo: 801900c8 - HTTP_STATUS_OK

SYMSRV:  System.Private.CoreLib.pdb from https://msdl.microsoft.com/download/symbols: 1633924 bytes 

SYMSRV:  PATH: C:\Users\USUARIO\AppData\Local\Temp\SymbolCache\System.Private.CoreLib.pdb\57C2D4282221452CAD4DF86BBD5D6FA0ffffffff\System.Private.CoreLib.pdb

SYMSRV:  RESULT: 0x00000000

https://msdl.microsoft.com/download/symbols: Symbols downloaded from symbol server.
C:\Users\USUARIO\AppData\Local\Temp\SymbolCache\System.Private.CoreLib.pdb\57C2D4282221452CAD4DF86BBD5D6FA0ffffffff\System.Private.CoreLib.pdb: Symbols loaded.

@cAlgo.API - Allow us to pause backtesting programmatically:  22 Jan 2023, 04:13

Sometimes when we backtest and develop robots we like to check a specific example on the chart when something happens, like when opening a trade or when a signal is triggered.

Using the debugger is helpful in it's own way but it freezes the platform and you're not able to scroll or check the logs.

@cAlgo.API - Give us access to know when something is printed to the log (Print Event):  22 Jan 2023, 04:09


Sometimes we'd like to export data from logs in cTrader easily or aggregate the messages that cTrader prints by default, like when a trade is opened or closed, these messages show up:

The API could expose an event handler that would give us this info:
Time, Type of Message, Bot/Indicator Name and Message

@ctrader.fom/forum/ issue, always logs me out:  11 Jan 2023, 05:00

Hello Spotware,

This is an issue with this website actually, if I want to use the forums, I have to log in multiple times in a day, it doesn't remember I've logged in.
I'd like that if I check this forum tomorrow, my login session would still be open.

I'm not sure if someone else is experiencing the same problem, I'd appreciate your support.


@VS2022 and cAlgo; Trouble with debugging:  10 Jan 2023, 21:34

Spotware said:

Dear Waxy,

Can you please change the setting to "Load all modules" and try his scenario one more time? 

Best regards,

cTrader Team

Hello Spotware, 

You can see I have Load all modules checked, but still, it doesn't work, would appreciate your support:


@Can a cBot coded to use an indicator also "Output" or render that indicators on chart.?:  23 Dec 2022, 22:23

This isn't possible, you can use indicator data from a bot but you cannot use attributes like Output inside a bot.

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.
by Waxy
free  06 Feb 2023
UPDATE I've edited this indicator in following aspects... - It can use the new Color Parameters - Filled rectangles are optional - It can show (optional) Session Range - It can also show historical Averages, Minimum and Maximum per sessions More updates coming soon, and suggestions are welcome! This Indicator uses http://forex.timezoneconverter.com/ to retrieve open and close of market times, so you don't need to update it as it will update itself. If you spot a bug, malfunctioning or have a suggestion feel free to contact me: waxavi@outlook.com This is a free indicator, please help me make more and improve tools like this one by supporting me on Ko-Fi  
Average Wick Indicator
by Waxy
free  11 Feb 2016
I decided to make a simple indicator to see how wicks behave, some cool patterns seem to emerge. You can see for example Upwicks tend to be bigger in downtrends and viceversa.
Warning! Executing cBots downloaded from this section may result in loss of funds. Use them at your own risk.
by Waxy
free  02 Mar 2023
Long ago I tried to get this done but wasn't able to. Here's an example of how to use it with cTrader, the example given is with a RollingFileAppender 1 - Add Nuget Package for Log4Net 2 - Add App.config File to your project (using Visual Studio) <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net configSource="log4netconfig.config" /> <!--<startup> <supportedRuntime version="v6.0" sku=".NETFramework,Version=v6.0" /> </startup>--> </configuration> 3 - Add log4netconfig.config File (Cannot be inside the cAlgo's execution folder) Here's an example, I put mine inside "C:\TestApp\log4netconfig.config" <?xml version="1.0" encoding="utf-8"?> <log4net> <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> <file type="log4net.Util.PatternString" value="C:\XLogs\MyApp.log" /> <appendToFile value="false" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> <root> <level value="ALL" /> <appender-ref ref="RollingFile" /> </root> </log4net> When you run the bot either live or backtesting, the log file should be located inside the "C:\XLogs\" directory or the one you have chosen. Suggestions or Feedback are welcome. If you found this helpful, please consider supporting me on Kofi Buy Waxy a Coffee. ko-fi.com/waxycodes - Ko-fi ❤️ Where creators get support from fans through donations, memberships, shop sales and more! The original 'Buy Me a Coffee' Page.
Tunneling Martingale
by Waxy
free  15 Sep 2016
This bot is useful when you don't know direction, but there's a big move on either direction expected. Since it's a tunneling strategy, it's only a martingale if the # of attemps is absurdely high, like 10 or more. Would recommend 4 to 5 attemps at most. Please let me know if there's any bug I'll quickly fix it. Mail: waxavi@outlook.com  
Iceberg bot
by Waxy
free  29 Jan 2016
DEFINITION of 'Iceberg Order' from Investopedia A large single order that has been divided into smaller lots, usually through the use of an automated program, for the purpose of hiding the actual order quantity. Read more: Iceberg Order Definition | Investopedia http://www.investopedia.com/terms/i/icebergorder.asp#ixzz3yaphczPe  Sometimes a trader wants to place a big order into smaller pieces, this bot makes it possible, using timer it places an orders each number of seconds you can define. Please let me know in case of any bug.
by Waxy
free  28 Jan 2021
Similar to my previous OSO Bot, the OCO Bot handle 2 order, if any of those orders is executed the remaining order will be canceled. Type Buy or Sell and the prices and the Bot will take care if it's limit or stop order by itself. If you find any issue send an email to waxavi@outlook.com -01/27/2020: I have updated this bot to use the latest parameter features
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
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