INCREMENT THIS LINES
double LAST = SymbolInfoDouble("EURUSD",SYMBOL_LAST) // for eurusd (example) ,
in // Check & Add Item DDE:
if(!CheckItem("C","D"))
{ if(!AddItem("C","D")) return; } in // Check & Add Item DDE
in // Set Item Value DDE
SetItem("C","D","LAST: "+DoubleToString(LAST,5)); in // Set Item Value DDE
Alguém pode me ajudar, não consegui!
Como faz pra passar do "DDE Server" pro excel? Copiei o "=MT4DDE|TIME!valeu" pra excel mas este mostra o #NOME?" na celula.
Alguém pode me ajudar, não consegui!
Como faz pra passar do "DDE Server" pro excel? Copiei o "=MT4DDE|TIME!valeu" pra excel mas este mostra o #NOME?" na celula.
Não foi dificíl não.
Inicie o servidor DDE.
Inicie o mt5 e compile o dde_exemplo.mq5.
Abra o gráfico do ativo desejado no mt5 e arraste o dde_exemplo.ex5 (resultado da compilação).
Você verá os itens no display do servidor.
Agora e só colocar as funções no excel.
Buenas.
Estou tentando obter o LAST, mas sempre vem em branco.
Alguém faz ideia do que esta errado?
CopyBuffer(MA_handle,0,0,100,MA);
ArraySetAsSeries(MA,true);
double LAST = SymbolInfoDouble("USDBRL", SYMBOL_LAST);
// Check & Add Item DDE
if(!CheckItem("A","B"))
{
if(!AddItem("A","B")) return;
}
if(!CheckItem("C","D"))
{
if(!AddItem("C","D")) return;
}
if(!CheckItem("COMPANY","Value")) AddItem("COMPANY","Value");
if(!CheckItem("TIME","Value")) AddItem("TIME","Value");
if(!CheckItem("LAST","EURUSD")) AddItem("LAST","USDBRL");
// Set Item Value DDE
SetItem("COMPANY","Value",(string)AccountInfoString(ACCOUNT_COMPANY));
SetItem("TIME","Value",(string)TimeCurrent());
SetItem("A","B","EMA(21): "+DoubleToString(MA[0],6));
SetItem("C","D","LAST: "+DoubleToString(LAST,5));
}
Boa noite.
Depois de apanhar muito, consegui resolver. Me cadastrei no site só pra isso.
Altere toda a função OnTimer():
void OnTimer()
{
//--- filling an array MA[] with current values of iMA
//--- Copying 100 elements
// CopyBuffer(MA_handle,0,0,100,MA);
// ArraySetAsSeries(MA,true);
double EURUSD_ASK = SymbolInfoDouble("EURUSD",SYMBOL_ASK); // for eurusd (example)
double EURUSD_BID = SymbolInfoDouble("EURUSD",SYMBOL_BID);
double USDCHF_ASK = SymbolInfoDouble("USDCHF",SYMBOL_ASK);
double USDCHF_BID = SymbolInfoDouble("USDCHF",SYMBOL_BID);
// Check & Add Item DDE
// if(!CheckItem("EMA","B"))
// {
// if(!AddItem("EMA","B")) return;
// }
if(!CheckItem("COMPANY","Value")) AddItem("COMPANY","Value");
if(!CheckItem("TIME","Value")) AddItem("TIME","Value");
if(!CheckItem("EURUSD","ASK")) AddItem("EURUSD","ASK");
if(!CheckItem("EURUSD","BID")) AddItem("EURUSD","BID");
if(!CheckItem("USDCHF","ASK")) AddItem("USDCHF","ASK");
if(!CheckItem("USDCHF","BID")) AddItem("USDCHF","BID");
// Set Item Value DDE
SetItem("COMPANY","Value",(string)AccountInfoString(ACCOUNT_COMPANY));
SetItem("TIME","Value",(string)TimeCurrent());
// SetItem("EMA","B","EMA(21): "+DoubleToString(MA[0],6));
SetItem("EURUSD","ASK",DoubleToString(EURUSD_ASK,5));
SetItem("EURUSD","BID",DoubleToString(EURUSD_BID,5));
SetItem("USDCHF","ASK",DoubleToString(USDCHF_ASK,5));
SetItem("USDCHF","BID",DoubleToString(USDCHF_BID,5));
}
O restante é igual o que foi descrito acima.
Espero que ajude alguém.
Boa noite.
Depois de apanhar muito, consegui resolver. Me cadastrei no site só pra isso.
Altere toda a função OnTimer():
void OnTimer()
{
//--- filling an array MA[] with current values of iMA
//--- Copying 100 elements
// CopyBuffer(MA_handle,0,0,100,MA);
// ArraySetAsSeries(MA,true);
double EURUSD_ASK = SymbolInfoDouble("EURUSD",SYMBOL_ASK); // for eurusd (example)
double EURUSD_BID = SymbolInfoDouble("EURUSD",SYMBOL_BID);
double USDCHF_ASK = SymbolInfoDouble("USDCHF",SYMBOL_ASK);
double USDCHF_BID = SymbolInfoDouble("USDCHF",SYMBOL_BID);
// Check & Add Item DDE
// if(!CheckItem("EMA","B"))
// {
// if(!AddItem("EMA","B")) return;
// }
if(!CheckItem("COMPANY","Value")) AddItem("COMPANY","Value");
if(!CheckItem("TIME","Value")) AddItem("TIME","Value");
if(!CheckItem("EURUSD","ASK")) AddItem("EURUSD","ASK");
if(!CheckItem("EURUSD","BID")) AddItem("EURUSD","BID");
if(!CheckItem("USDCHF","ASK")) AddItem("USDCHF","ASK");
if(!CheckItem("USDCHF","BID")) AddItem("USDCHF","BID");
// Set Item Value DDE
SetItem("COMPANY","Value",(string)AccountInfoString(ACCOUNT_COMPANY));
SetItem("TIME","Value",(string)TimeCurrent());
// SetItem("EMA","B","EMA(21): "+DoubleToString(MA[0],6));
SetItem("EURUSD","ASK",DoubleToString(EURUSD_ASK,5));
SetItem("EURUSD","BID",DoubleToString(EURUSD_BID,5));
SetItem("USDCHF","ASK",DoubleToString(USDCHF_ASK,5));
SetItem("USDCHF","BID",DoubleToString(USDCHF_BID,5));
}
O restante é igual o que foi descrito acima.
Espero que ajude alguém.
Valeu Maurorechi,
mas tem que fazer essas linhas que vc fez pro EURUSD pra cada ativo ?
E outra duvida, pra puxar infos de um ativo tem que estar com a janela do ativo aberta?
Boa noite.
Depois de apanhar muito, consegui resolver. Me cadastrei no site só pra isso.
Altere toda a função OnTimer():
void OnTimer()
{
//--- filling an array MA[] with current values of iMA
//--- Copying 100 elements
// CopyBuffer(MA_handle,0,0,100,MA);
// ArraySetAsSeries(MA,true);
double EURUSD_ASK = SymbolInfoDouble("EURUSD",SYMBOL_ASK); // for eurusd (example)
double EURUSD_BID = SymbolInfoDouble("EURUSD",SYMBOL_BID);
double USDCHF_ASK = SymbolInfoDouble("USDCHF",SYMBOL_ASK);
double USDCHF_BID = SymbolInfoDouble("USDCHF",SYMBOL_BID);
// Check & Add Item DDE
// if(!CheckItem("EMA","B"))
// {
// if(!AddItem("EMA","B")) return;
// }
if(!CheckItem("COMPANY","Value")) AddItem("COMPANY","Value");
if(!CheckItem("TIME","Value")) AddItem("TIME","Value");
if(!CheckItem("EURUSD","ASK")) AddItem("EURUSD","ASK");
if(!CheckItem("EURUSD","BID")) AddItem("EURUSD","BID");
if(!CheckItem("USDCHF","ASK")) AddItem("USDCHF","ASK");
if(!CheckItem("USDCHF","BID")) AddItem("USDCHF","BID");
// Set Item Value DDE
SetItem("COMPANY","Value",(string)AccountInfoString(ACCOUNT_COMPANY));
SetItem("TIME","Value",(string)TimeCurrent());
// SetItem("EMA","B","EMA(21): "+DoubleToString(MA[0],6));
SetItem("EURUSD","ASK",DoubleToString(EURUSD_ASK,5));
SetItem("EURUSD","BID",DoubleToString(EURUSD_BID,5));
SetItem("USDCHF","ASK",DoubleToString(USDCHF_ASK,5));
SetItem("USDCHF","BID",DoubleToString(USDCHF_BID,5));
}
O restante é igual o que foi descrito acima.
Espero que ajude alguém.
Segue as alterações que fiz no código abaixo.
void OnTimer() { //--- filling an array MA[] with current values of iMA //--- Copying 100 elements // Check & Add Item DDE if(!CheckItem(_Symbol,"B")) { if(!AddItem(_Symbol,"B")) return; } if(!CheckItem("COMPANY","Value")) AddItem("COMPANY","Value"); if(!CheckItem("TIME","Value")) AddItem("TIME","Value"); // Set Item Value DDE SetItem("COMPANY","Value",(string)AccountInfoString(ACCOUNT_COMPANY)); SetItem("TIME","Value",(string)TimeCurrent()); SetItem(_Symbol,"B",SymbolInfoDouble(_Symbol,SYMBOL_LAST)); }
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Servidor DDE:
Exportação dos dados em tempo real do MQL5 para o Excel (DDE).
Na verdade, ela foi projetada para MetaTrader 4 (MQL4), mas, com pequenos ajustes, ela funciona muito bem no MetaTader 5 (MQL5). Ele é um pequeno aplicativo MFC (servidor DDE). Todos os dados que ficam disponíveis em MQL5 podem ser exportados através desta interface DDE (por exemplo, dados em tempo real para o Excel).
Autor: Alexander Piechotta