|
0 registered members (),
5,207
guests, and 4
spiders. |
|
Key:
Admin,
Global Mod,
Mod
|
|
|
|
01/13/26 13:53
I finally resolved it. Now it connect correctly
3
62
Read More
|
|
|
01/13/26 11:16
Yes, I have. And I run Trading Station from FXCM, it can connect to FXCM correctly with clash vpn.
3
62
Read More
|
|
|
01/13/26 09:39
Have you unpacked the fxcm.zip?
3
62
Read More
|
|
|
01/13/26 02:32
I registered a fxcm demo account. I filled it in Accounts.csv, see the attachment. I ran zorro and selected demo and FXCM. Then I clicked Trade, it gave the following errors, any idea?
Login 0 FXCM.. !Login - Login failed. Can't connect!
I am in China mainland. I use windows 10. I use a clash vpn to access foreign web sites. I have set enviroment variable: set HTTP_PROXY=http://127.0.0.1:7890 set HTTPS_PROXY=http://127.0.0.1:7890
3
62
Read More
|
|
01/12/26 09:39
OK. "camera always goes up" solved with small texture animation demo: So as a result of my research about a upwards moving camera I like to share the results with you: 1. It is correct: You need a hmp (Ground) below your level geometry to avoid an upgoing camera/player camera. Strangely enough. Note the hmp in my 3DGitt demo screenshot. 2. I created a small demo level with a Guard-player with the t_player action attached to the model. The t_player action has been modified by me so that you can hear footsteps when walking. The cube with the black and white texture animation has been created separately in WED as a simple map, saved out and loaded in the main level with >add map entity<. Because this map entity had no collision detection I put a level prefab block into the map entity to get a stop collision. The barrel has a fx_uvspeed attached, You can see it working. The lava stream at the bottom of the level, again, is a separately created block entity with a texture animation (+0lava to +9lava). It was also build as a simple mesh and then imported. To avoid falling through the lava block I placed a level primitive inside the lava block. The lava stream movement was created in PCXanim. It is not a uvspeed fx. The whole level was compiled with >create meshes< set. Script choice was "Flythrough" t_player.c modified externaly in SED for footstep sounds. Collision sound not yet implemented but planned. Project manager used to add "player parameters". T7 scripts used. You can download the small tech demo 3DGitt.cd here: 3DGitt/A8 tech demo downloadBest wishes ! NeoDumont A7 Extra Edition (Sybex) A8 Extra Edition
4
866
Read More
|
|
01/11/26 13:42
Changes: - Fixed null pointer exception in logger initialization for Zorro versions prior to 2.48 - Refactored version management: removed external version file, now using CMakeLists.txt directly - Simplified versioning scheme from 4-part to 3-part semantic versioning (MAJOR.MINOR.PATCH) - Added GitHub release workflow to build both 32-bit and 64-bit binaries with matrix strategy https://github.com/kzhdev/alpaca_zorro_plugin/releases/tag/v1.5.2
0
40
Read More
|
|
|
01/11/26 13:38
Sorry for the late response. The settings dialog appears while the strategy is running.
3
856
Read More
|
|
|
01/11/26 00:01
There is currently no built-in option or flag in Zorro to enable digit grouping (thousands separators) in the console or logs.
Zorro's output is primarily designed to be machine-readable and CSV-compatible, which is likely why this hasn't been implemented as a core feature yet.
Your best bet is to post this as a feature request in the Suggestions subforum.
1
267
Read More
|
|
|
01/10/26 23:58
You should keep WFO enabled. The goal of the MRC is to validate the out-of-sample (OOS) equity curve produced by the WFO process.
Recommended workflow:
Perform a normal [Train] of your strategy first to generate the .par files. Run MRC.c in [Test] mode. This validates if your out-of-sample results are statistically significant or just due to luck.
Running MRC.c in [Train] mode is even more rigorous as it also checks for "selection bias" (overfitting during the optimization process itself), but it is computationally very expensive and can take a long time with WFO.
1
225
Read More
|
|
|
01/10/26 23:50
You don't need to rename your files or use complex wildcards. Zorro provides a specific variable for this purpose called SymbolHist.
There are two ways to achieve this:
1. Using the script (easiest): After calling asset(), you can manually redirect the history to your specific file name by setting SymbolHist:
c asset("ES_Z"); SymbolHist = "ESeod"; // Zorro will now look for ESeod.t6 instead of ES_Z.t6
2. Using the Asset List (cleanest for many assets): In your .csv asset list, you can use a colon-separated syntax in the Symbol column (the 12th column). The format is BrokerSymbol:HistorySymbol.
For your case, set the Symbol column for that asset to: ES_Z:ESeod
Zorro will then automatically use ES_Z for all broker commands (trading) and ESeod for all history commands (loading .t6 files).
Important Note: Make sure your History variable is set to the correct extension (usually .t6 by default). If you set SymbolHist = "ESeod", Zorro will look for ESeod.t6 in your Data folder."
1
267
Read More
|
|
|
01/10/26 23:46
The default BarOffset = 940 for daily bars (BarPeriod = 1440) is an internal setting that Zorro only applies automatically if the asset is identified as a Stock (Type 1) in your asset list.
Here are the most likely reasons why you are seeing 0:
Asset Type: Check your .csv asset list. If the Type column is set to 0 (Generic/Forex) or any other value besides 1, Zorro uses the universal default of 0 (alignment at 00:00). For US stocks, ensure the Type is set to 1. Order of Execution: If you print BarOffset at the very beginning of the run function before calling asset(), it will still show the global default. The asset-specific offset is only loaded after the asset is selected. Data Source: Even if your historical data consists of minute bars, Zorro won't change the BarOffset unless the asset type specifically triggers it.
Recommendation: While Zorro aims to set these defaults, it is best practice to define the alignment explicitly in your script to avoid confusion across different brokers or asset lists:
c void run() { BarPeriod = 1440; BarOffset = 9*60 + 40; // 940: Align with US market close (15:40 ET) ... }
Note that 940 is the standard offset for US stocks because the last 1-minute bar of the session starts at 15:59 and ends at 16:00. 940 minutes after midnight is 15:40, which matches the bar timestamping logic (timestamp = bar start time).
1
177
Read More
|
|
|
01/09/26 21:12
if(Train) MaxLong = whatever, and TrainMode |= LIMITS.
1
94
Read More
|
|
|
01/09/26 00:20
The manual says: MaxLong, the maximum numbers are ignored in [Train] mode when the NOMAX flag is set. But if I use set(NOMAX), zorro says NOMAX undeclared identifier. I want to enable MaxLong in [Train] mode, is it possible? Any idea?
1
94
Read More
|
|
01/08/26 20:03
Sorry, it was my configuration mistake. When I printed PIP, I noticed that its value was 0.01, which is wrong for GBPUSD. The reason is that I was not using Zorro’s built-in history, but instead loaded my broker’s own historical data under the symbol “GBPUSD”. However, in Zorro’s packaged history data the symbol is “GBP/USD”, and in the AssetFix list has this exact symbol. But there is no entry for “GBPUSD”. Therefore no asset parameters were found for my symbol, and Zorro apparently fell back to the default, which was PIP = 0.01. Zorro actually even warned me about this in the logs, and I overlooked: "Warning 034: GBPUSD not in asset list" However, there is still something that appears to be a bug. In my ZorroFix.ini I have:
HistoryFolder = "myHistory"
But regardless of what I put into "myHistory/AssetFix.csv", Zorro always use the file "History/AssetFix.csv". So the custom AssetFix file in the custom history folder seems to be ignored.
1
107
Read More
|
|
01/08/26 09:49
Hello, I am encountering a confusing and apparently inconsistent price-rounding behaviour in Zorro. When placing limit entries, stop loss and take profit levels, Zorro seems to internally round the actual order prices. On top of that, the rounded execution prices are sometimes inconsistent with what is visually displayed on the chart. Entry rounding (yellow marks):- I placed the limit order at 1.27162
- The console log reports that the trade was opened at 1.27200
- Visually, the chart also shows the entry at 1.27200
TP rounding mismatch (blue marks):- I placed the TP at 1.27317
- The console log reports that the trade was closed at 1.27317
- Visually, the chart shows the close at 1.27300
So in this second case, the console and the chart do not even agree with each other. - Why are order prices rounded at all?
- What rounding logic is used for entry, SL and TP prices?
- Why can the chart display differ from the console log?
- Which one reflects the actual executed price?
- How can one make visual display and actual execution strictly consistent?
Additional details: - Version: 2.70
- Fill mode not set (left as default)
- Spread = Commission = Slippage = RollLong = RollShort = 0 (for testing)
- all trade price variables (Entry, Stop, TakeProfit) are double
- set(LOGFILE, PLOTNOW, TICKS); so intrabar entry/exit is enabled
Thank you for your clarifications.
1
107
Read More
|
|
|
01/07/26 15:14
Looking for new games to work on!
101
57,515
Read More
|
|
|
01/07/26 13:33
A strategy DLL cannot be released after a run, since it is still needed for chart and panel functions. It is released when the source has a newer timestamp, or when you run a different strategy, or close Zorro. If you debug it with VC++, you can simply click on the "Restart" button after modifying the code. It will then automatically close Zorro, compile, and restart it with the new DLL.
1
103
Read More
|
|
01/07/26 12:11
Hello, After a longer break, I recently started developing new algos again and updated to Zorro 2.70. I am using VS Code, so the compiled DLL files are produced “externally” and are therefore not directly managed by Zorro. My workflow is the following: I modify the code, compile it, and run it in Zorro. However, after making further changes and compiling again, I frequently get this error from the C++ compiler: LINK : fatal error LNK1104: cannot open file 'C:\zorro\myStrategy\myDownloader.dll' It appears that Zorro does not release the DLL after a run, so the system cannot overwrite it. This happens with both Zorro and Zorro64. The workarounds I have found so far are restarting Zorro, or running a different script first, and only then compiling and running the updated one. I am not sure when this behavior started to occur, but is there a way to explicitly unload or unlock the DLL after a Zorro run?
1
103
Read More
|
|
|
01/07/26 07:50
Do you have any plan to implement it?
2
105
Read More
|
|
|
01/07/26 07:06
Yes, but in an indirect way, by installing it in Python and using Zorros Python interface.
2
105
Read More
|
|
|
01/07/26 00:31
Is it possible to develop a ccxt plugin for Zorro, enabling it to connect to almost all cryptocurrency exchanges via the ccxt interface for cryptocurrency trading?
2
105
Read More
|
|
|
01/06/26 16:43
In this case yes, in other cases it's pessimistic. But we'll add a flag for that.
3
162
Read More
|
|
|
01/06/26 14:35
This revision is highly necessary, as otherwise the outcome would be too optimistic.
3
162
Read More
|
|
|
01/06/26 10:31
Good question. The reason of the difference is simulating the most likely price move between triggering the trade and and filling the order. Since you have an entry limit, the price is supposed to move against the trade direction. This difference is rounded to the next point, which is 0.01 in case of stocks.
It is arguable whether this makes much sense, since the Slippage simulation should anyway cover it. It has historical reasons, we wanted to replicate the backtests of TradeStation. They are in this way adding or subtracting one point from the fill price. We will probably in a future version add a flag to enable or disable that effect.
3
162
Read More
|
|
01/06/26 09:24
I tested limit orders using the following code. I set Fill=3, meaning the order is filled at the opening price of the next day. I used historical AAPL EOD data. I placed the order on 2025-1-16 with a limit price of Entry = -232.00. I expected the order to be filled at the opening price of 231.86 the next day (17th, as shown in the attached image), but it was actually filled at 231.85 on the 17th, which is 0.01 less than expected. I'm not sure why this is happening. I tested several other dates, and the result was consistently 0.01 less. Any idea? function run()
{
set(LOGFILE);
StartDate = 20250101;
EndDate = 20250212;
LookBack = 5;
Slippage=0;
Fill = 3;
Spread = 0;
BarPeriod = 1440;
assetList("AssetsSP30");
asset("AAPL");
vars Prices = series(priceC());
Entry = - 232.00 ;
if(year()==2025 && month()==1 && day()==16){
watch("date",year(), month(),day());
enterLong();
}
}
3
162
Read More
|
|
|