0

I wand to listening the event of TradeAdded/TradeClosed/TradeDeleted ,that's my code:

public partial class Demo : Form
{

    public static ConnectionParameters conParam = new ConnectionParameters();

    public static ClrWrapper mt;


    private void Hedera_Load(object sender, EventArgs e)
    {
        Login();
    }

    public void Login()
    {
            conParam = new ConnectionParameters
            {
                Login = serverConfig.ManageAccount,
                Password = serverConfig.ManagePassword,
                Server = serverConfig.ManageServer
            };
            mt = new ClrWrapper(conParam); 
            List<UserRecord> users = mt.UsersRequest().ToList();

            mt.TradeClosed +=new TradeRecordUpdated(this.MyTradeClosed);
            mt.TradeDeleted += new TradeRecordUpdated(this.MyTradeDeleted);
            mt.TradeAdded += new TradeRecordUpdated(this.MyTradeAdded);
    } 

    public void MyTradeAdded(ClrWrapper mt, TradeRecord tradeRecord)
    {
        MessageBox.Show("MyTradeAdded");
    }
    public void MyTradeClosed(ClrWrapper mt, TradeRecord tradeRecord)
    {
        MessageBox.Show("MyTradeClosed");
    }
    public void MyTradeDeleted(ClrWrapper mt, TradeRecord tradeRecord)
    {
        MessageBox.Show("MyTradeDeleted");
    }
}

When i trade on the MetaTrader4 client ,I want to get the notify in my C# program.

“UsersRequest” is ok now,but the event does not run.

Where is wrong in my code ?

Can you write an example for me?

Mumu
  • 11
  • 3

1 Answers1

0

Those events are fired only in extended pumping mode. so you have to switch:

public void Login()
{
        conParam = new ConnectionParameters
        {
            Login = serverConfig.ManageAccount,
            Password = serverConfig.ManagePassword,
            Server = serverConfig.ManageServer
        };
        mt = new ClrWrapper(conParam); 
        List<UserRecord> users = mt.UsersRequest().ToList();

        mt.TradeClosed +=new TradeRecordUpdated(this.MyTradeClosed);
        mt.TradeDeleted += new TradeRecordUpdated(this.MyTradeDeleted);
        mt.TradeAdded += new TradeRecordUpdated(this.MyTradeAdded);
        metatrader.PumpingSwitchEx();
} 

However, after switching into pumping mode, you won't be able to use non pumping methods

Uriil
  • 11,948
  • 11
  • 47
  • 68