|
26 minutes ago
Isn't the ZorroMT64.dll already 64-bit? (only supports MT5, I know) Oh, I didn’t even look. In that case, that problem is solved too.
11
447
Read More
|
|
Yesterday at 19:42
Converting a list of files with high volume, to *.t6 files: #define NUM_PAIRS 28 // Number of currency pairs
#define NUM_TIMEFRAMES 2 // Number of timeframes to process
// Arrays to store the currency pairs and timeframes
string Pairs[NUM_PAIRS];
string Timeframes[NUM_TIMEFRAMES];
/*
* Format string for parsing CSV data.
* The '+' indicates the CSV file has a header line to skip.
* %Y - Year (4 digits)
* %m - Month (2 digits)
* %d - Day (2 digits)
* %H - Hour (2 digits, 24-hour format)
* %M - Minute (2 digits)
* %f3 - Open price (floating point with 3 decimals)
* %f1 - High price (floating point with 1 decimal)
* %f2 - Low price (floating point with 2 decimals)
* %f4 - Close price (floating point with 4 decimals)
* %f6 - Volume (floating point with 6 decimals)
*
* This must match the structure of your CSV files.
*/
string Format = "+%Y.%m.%d,%H:%M,%f3,%f1,%f2,%f4,%f6";
// Function to initialize currency pairs and timeframes
// Modify this to include/remove pairs or adjust timeframes as needed.
function initializePairsAndTimeframes() {
// Currency pairs
Pairs[0] = "EURUSD";
Pairs[1] = "GBPUSD";
Pairs[2] = "USDJPY";
Pairs[3] = "USDCHF";
Pairs[4] = "USDCAD";
Pairs[5] = "AUDUSD";
Pairs[6] = "NZDUSD";
Pairs[7] = "EURGBP";
Pairs[8] = "EURJPY";
Pairs[9] = "EURCHF";
Pairs[10] = "GBPJPY";
Pairs[11] = "GBPCHF";
Pairs[12] = "AUDJPY";
Pairs[13] = "AUDCHF";
Pairs[14] = "NZDCAD";
Pairs[15] = "NZDJPY";
Pairs[16] = "NZDCHF";
Pairs[17] = "CADJPY";
Pairs[18] = "CADCHF";
Pairs[19] = "CHFJPY";
Pairs[20] = "EURAUD";
Pairs[21] = "EURNZD";
Pairs[22] = "EURCAD";
Pairs[23] = "GBPAUD";
Pairs[24] = "GBPNZD";
Pairs[25] = "GBPCAD";
Pairs[26] = "AUDNZD";
Pairs[27] = 0; // End marker
// Timeframes in minutes (e.g., 60 = 1 hour, 240 = 4 hours)
Timeframes[0] = "60";
Timeframes[1] = "240";
}
/*
* Function to convert a CSV file to a .t6 file.
* This version splits the CSV data by year and saves each year as a separate .t6 file.
*
* Parameters:
* InName - The path and name of the input CSV file.
* Pair - The currency pair string to include in the output filename.
*
* Outputs:
* Files are saved as {CurrencyPair}_{Year}.t6, e.g., EURAUD_2025.t6
*/
function ConvertCSV(string InName, string Pair) {
int Records = dataParse(1, Format, InName); // Parse the CSV with the defined format
printf("\n%d lines read from %s", Records, InName); // Print the number of records read
if(Records) {
int i, Start = 0, Year, LastYear = 0;
for(i = 0; i < Records; i++) {
Year = ymd(dataVar(1, i, 0)) / 10000; // Extract the year from the date
if(!LastYear) LastYear = Year; // Set the first encountered year
// Handle the last record
if(i == Records - 1) {
LastYear = Year;
Year = 0;
i++;
}
// When the year changes, save the data segment to a new .t6 file
if(Year != LastYear) {
// Construct the output file name as {Pair}_{Year}.t6
string OutName = strf("C:\\Users\\**username**\\Zorro\\History\\%s_%4i.t6", Pair, LastYear);
printf("\nSaving file: %s", OutName);
dataSave(1, OutName, Start, i - Start); // Save the data segment to .t6
Start = i; // Update the start index for the next segment
LastYear = Year; // Update the current year
}
}
}
}
/*
* Main function:
* Loops through all specified currency pairs and timeframes,
* checks for CSV files in the specified directory, and converts them to .t6 files.
*/
function main() {
initializePairsAndTimeframes(); // Initialize pairs and timeframes
int p, t; // Loop counters for pairs and timeframes
// Loop through each currency pair
for(p = 0; Pairs[p]; p++) {
// Loop through each timeframe
for(t = 0; t < NUM_TIMEFRAMES; t++) {
// Construct the CSV file path dynamically
// Path: C:\Users\**username**\Zorro\History\{CurrencyPair}{Timeframe}.csv
string FileName = strf("C:\\Users\\**user//name**\\Zorro\\History\\%s%s.csv", Pairs[p], Timeframes[t]);
printf("\nChecking file: %s", FileName); // Log the file being checked
if(file_length(FileName)) { // Check if the file exists
printf("\nConverting %s...", FileName); // Log the conversion process
ConvertCSV(FileName, Pairs[p]); // Call the conversion function with the pair name
} else {
printf("\nFile not found: %s", FileName); // Log missing files
}
}
}
quit("Conversion done!"); // Exit the script when all files are processed
}
81
12,422
Read More
|
|
02/08/25 14:51
Hey guys, Has anyone successfully run Zorro inside a Windows Docker container?
If so, what what Windows version and what broker plugin worked for you?
Thank you!
0
114
Read More
|
|
02/07/25 18:19
Hi there I just saw onI have just seen in a youtube video of jcl that in notepad++ command help (see screenshot), where the Zorro functions are explained, can be added as a window. Does anyone know how this is done? Thank you for your valuable help
0
100
Read More
|
|
02/07/25 17:22
For live trading, Zorro will show the current open trades and its status in the html file.
Is there a way to automatically export this list to a csv file, for every bar? I would like to record the current trade status for each bar.
Also, the manual says that the pnl file records the equity or balance, but when I open my pnl file, it shows the Profit & Loss for the session (starting from 0)?
0
103
Read More
|
|
02/07/25 15:29
I set the DIAG flag but I don't see any errors.
1
125
Read More
|
|
02/05/25 03:30
hmm, that's said. Algo trading is more popular now. Might be a time to consider different brokers like AMP etc.
In terms of the plugin, if you have a Rithmic account in their test environment, you should be able to test your strategy in the test environment.
4
365
Read More
|
|
01/31/25 07:52
Yes, you’re right! I tried several formats, and that was probably my last attempt, which is why the variable was still in there. :-) I also added a new script here to read out the format again: function run()
{
set(PLOTNOW);
StartDate = 2020;
EndDate = 2020; // nur ein Jahr
BarPeriod = 1; // M1
LookBack = 1; // minimaler lookback
asset("my_XAUUSD");
// Chart Einstellung
PlotScale = 0.5;
static int FirstLine = 1;
if(FirstLine) {
// Debug output of the first line
printf("\nDate: %04d-%02d-%02d Time: %02d:%02d",
year(), month(), day(), hour(), minute());
printf("\nXAUUSD - Open: %.3f High: %.3f Low: %.3f Close: %.3f Volume: %.0f",
priceOpen(), priceHigh(), priceLow(), priceClose(), marketVol());
FirstLine = 0;
}
plot("Price", priceClose(), NEW, BLUE);
plot("Volume", marketVol(), NEW|BARS, GREY);
} Everything is displayed perfectly. The chart correctly shows the M1 data, and the second plot is also displayed correctly. XAUUSD - Open: 1097.105 High: 1097.529 Low: 1097.009 Close: 1097.009 Volume: 0
Test: ChartShowImported_New my_XAUUSD 2010..2020
Chart...
ChartShowImported_New compiling............
Date: 2020-01-01 Time: 22:00
Error 063: marketVol requires Zorro S
XAUUSD - Open: 1518.305 High: 1518.755 Low: 1518.008 Close: 1518.715 Volume: 0
Test: ChartShowImported_New my_XAUUSD 2020
Chart... The other person was right—it really is because I’m still using the demo version! Error 063: marketVol requires Zorro S  But hey, no big deal! Thanks a lot for taking the time to look into this request.
4
198
Read More
|
|
01/31/25 07:21
the most easy way
while (1)
{
if (key_a && key_ctrl)
{
vec_set(sky_color,vector(50,50,50)); //set grey color if ctrl+a is pressed
}
else
{
vec_set(sky_color,vector(50,1,1)); //else set blue color
}
wait(1);
}
1
136
Read More
|
|
01/30/25 16:09
Well... At my side nothing. Thank you for the feedback.
2
274
Read More
|
|
01/23/25 16:06
Hello everyone, Lightmap and File Format Comparison in Acknex A8 – Advice Needed Content: Hello everyone, I’m currently working on an indoor block-based level in Blender for the Acknex A8 engine. Since dynamic lights in A8 are limited to 8 light sources per model, I’m considering different methods for handling shadows and lighting while balancing performance. Here are the three options I’m evaluating: MDL file with baked textures (shadows and lighting fully baked in Blender). OBJ file as concave geometry with static lights (no shadowmap). FBX 2010 as concave geometry with static lights but using a shadowmap. I’m also using PSSM shadows, but since this is a closed indoor level, I currently don’t get proper indoor shadows unless I go with method 1 or 3. However, I’m concerned that these might negatively impact performance. My key questions are: Which method offers the best balance between visual quality and performance in A8? Is there a significant performance difference between baked lighting (MDL) and static lights with a shadowmap (FBX)? Are there any known limitations or best practices when using OBJ or FBX for concave geometry in A8? I’d really appreciate hearing your experiences or advice on this topic! Best regards, Henrik ![[Linked Image]](https://www2.pic-upload.de/img/37459956/Screenshot2025-01-2219.17.132.png)
0
154
Read More
|
|
01/21/25 10:09
Congratulations! It looks fantastic!
2
3,558
Read More
|
|
|