Telegram to Mt4 Signal Copier

209 Views Asked by At

Hello every one

**I used Ai to generate this code for a simple EA in mql4 script. **

these are the main problems generated by AI

*No Actual Connection to Telegram: The code for checking the connection to Telegram (CheckTelegramConnection) is a placeholder, and the actual logic to connect to Telegram is missing. You need to use the functions provided by the telegram.mqh library or any other library you are using for Telegram integration.

Placeholder GetTelegramSignal Function: The GetTelegramSignal function is currently generating random signals for testing purposes. You need to replace this function with the actual logic to retrieve signals from your Telegram bot using the Telegram API. This includes using the GetMessage function or similar functions provided by the Telegram integration library.

Buy/Sell Signals Only: The current logic in the ExecuteTrade function is set up to execute Buy and Sell signals based on the received signal. If you're only seeing Buy signals, it might be due to the specific logic in your GetTelegramSignal function or the messages your Telegram bot is sending. *

#include <telegram.mqh>

// User-defined input parameters
input string telegramToken = "YOUR_TELEGRAM_BOT_TOKEN"; // Replace with your actual bot token
input double lotSize = 0.01; // Lot size for trades

// Initialize variables
int ticketArray[10]; // Use an array to store multiple trade tickets
int ticketIndex = 0; // Use an index to keep track of the array size
bool isTrading = false; // Flag to track if a trade is currently being executed

// Function to check the connection to Telegram (replace with actual logic)
bool CheckTelegramConnection()
{
    // Replace this with the actual logic to check the connection to Telegram
    // Example: return true if connected, false otherwise
    return true;
}

// Function to get signals from Telegram bot
string GetTelegramSignal()
{
    // Replace this with the actual logic to get signals from the Telegram bot
    // For example, you might use the Telegram API functions provided by the 'telegram.mqh' library

    CTelegram tg;
    string message = tg.GetMessage();
    
    // Your parsing logic here...
    
    return message;
}

// Function to execute a trade based on the signal
void ExecuteTrade(string signal)
{
    int ticket; // Declare ticket here
    int ticketToClose; // Declare ticketToClose here

    // Buy signal
    if (signal == "BUY")
    {
        ticket = OrderSend(Symbol(), OP_BUY, lotSize, Ask, 0, 0, 0, "Buy Signal", 0, 0, Green);
        if (ticket > 0)
        {
            ticketArray[ticketIndex] = ticket; // Store the ticket in the array
            ticketIndex++; // Increment the index
            isTrading = true; // Set the flag to indicate that a trade is in progress
        }
    }
    // Sell signal
    else if (signal == "SELL")
    {
        ticket = OrderSend(Symbol(), OP_SELL, lotSize, Bid, 0, 0, 0, "Sell Signal", 0, 0, Red);
        if (ticket > 0)
        {
            ticketArray[ticketIndex] = ticket; // Store the ticket in the array
            ticketIndex++; // Increment the index
            isTrading = true; // Set the flag to indicate that a trade is in progress
        }
    }
    // Close long signal
    else if (signal == "CLOSE LONG" && ticketIndex > 0)
    {
        ticketToClose = ticketArray[ticketIndex - 1]; // Get the latest trade ticket
        OrderClose(ticketToClose, OrderLots(), Bid, 0, Red);
        ticketIndex--; // Decrement the index
        isTrading = false; // Reset the flag as the trade is closed
    }
    // Close short signal
    else if (signal == "CLOSE SHORT" && ticketIndex > 0)
    {
        ticketToClose = ticketArray[ticketIndex - 1]; // Get the latest trade ticket
        OrderClose(ticketToClose, OrderLots(), Ask, 0, Green);
        ticketIndex--; // Decrement the index
        isTrading = false; // Reset the flag as the trade is closed
    }
}

// Function to read Telegram signals
void readTelegramSignals()
{
    // Check the connection to Telegram
    if (!CheckTelegramConnection())
    {
        Print("Failed to connect to Telegram. Please check your connection.");
        return;
    }

    // Code to read Telegram signals and execute trades
    string signal = GetTelegramSignal();

    // Execute trade only if no trade is currently in progress
    if (!isTrading)
    {
        ExecuteTrade(signal);
    }
}

// Timer function to periodically check for signals
void OnTimer()
{
    readTelegramSignals();
}

// Init function
int OnInit()
{
    // Code to initialize connection with MetaTrader and set up necessary parameters
    EventSetMillisecondTimer(5000); // Set timer to call OnTimer every 5 seconds
    return(INIT_SUCCEEDED);
}

// Deinit function
void OnDeinit(const int reason)
{
    // Code to clean up and close connections
    EventKillTimer(); // Stop the timer when the script is deinitialized
}

// OnTick function
void OnTick()
{
    // Code to execute with each new tick
    readTelegramSignals();
}

**Unfortunately it doesn't copy the signals from telegram and only provides random buy or sell signals for EURUSD.

is there a way to fix it?**

0

There are 0 best solutions below