Initial commit: MQL5 Scripts Collection (MetaTrader 5)
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||

|
||||
|
||||
## Source Files
|
||||
- `sec-websocket-key-generator.mq5`
|
||||
|
||||
---
|
||||
> Made with ❤️ for the trading community.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.4 KiB |
@@ -0,0 +1,63 @@
|
||||
//+------------------------------------------------------------------+
|
||||
//| Sec-WebSocket-Key-Generator.mq5 |
|
||||
//| Copyright 2024, Rajesh Kumar Nait |
|
||||
//| https://www.mql5.com/en/users/rajeshnait/seller |
|
||||
//+------------------------------------------------------------------+
|
||||
#property copyright "Copyright 2024, Rajesh Kumar Nait"
|
||||
#property link "https://www.mql5.com/en/users/rajeshnait/seller"
|
||||
#property version "1.00"
|
||||
#property description "Generated Sec-WebSocket-Key as described in https://datatracker.ietf.org/doc/html/rfc6455#section-11.3.3"
|
||||
//+------------------------------------------------------------------+
|
||||
//| Script program start function |
|
||||
//+------------------------------------------------------------------+
|
||||
void OnStart() {
|
||||
//---
|
||||
MathSrand(GetTickCount());
|
||||
|
||||
// Call the function to generate and print the key
|
||||
string generatedKey = GenerateKey();
|
||||
Print("Generated Key: ", generatedKey);
|
||||
}
|
||||
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| |
|
||||
//+------------------------------------------------------------------+
|
||||
string Base64EncodeChar(int value) {
|
||||
string base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||
|
||||
if (value >= 0 && value <= 63)
|
||||
return StringSubstr(base64Chars, value, 1);
|
||||
else
|
||||
return "=";
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
//| |
|
||||
//+------------------------------------------------------------------+
|
||||
string GenerateKey() {
|
||||
uchar randomBytes[16];
|
||||
|
||||
// Generate 16 random bytes using MathRand
|
||||
for (int i = 0; i < ArraySize(randomBytes); i++) {
|
||||
randomBytes[i] = MathRand() % 256;
|
||||
}
|
||||
|
||||
// Base64 encode the random bytes
|
||||
string base64Key = "";
|
||||
for (int i = 0; i < ArraySize(randomBytes); i += 3) {
|
||||
int byte1 = randomBytes[i];
|
||||
int byte2 = i + 1 < ArraySize(randomBytes) ? randomBytes[i + 1] : 0;
|
||||
int byte3 = i + 2 < ArraySize(randomBytes) ? randomBytes[i + 2] : 0;
|
||||
|
||||
int combinedValue = (byte1 << 16) | (byte2 << 8) | byte3;
|
||||
|
||||
base64Key += Base64EncodeChar((combinedValue >> 18) & 0x3F);
|
||||
base64Key += Base64EncodeChar((combinedValue >> 12) & 0x3F);
|
||||
base64Key += i + 1 < ArraySize(randomBytes) ? Base64EncodeChar((combinedValue >> 6) & 0x3F) : "=";
|
||||
base64Key += i + 2 < ArraySize(randomBytes) ? Base64EncodeChar(combinedValue & 0x3F) : "=";
|
||||
}
|
||||
|
||||
return base64Key;
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
Reference in New Issue
Block a user