Loop em ações do Market Watch para calcular novo handler de indicador



  • Alguém saberia dizer, em MQL5, como eu faço para fazer um loop em cima de todas as ações do Market Watch, de modo que eu possa pegar o nome da ação e obter o buffer de um indicador?

    eu tentei assim para obter os nomes (até aqui ok)

    int numberOfSymbols = SymbolsTotal(true);
    string bSymbols[];
    ArrayResize(bSymbols, numberOfSymbols);
    

    for (int i=0; i< numberOfSymbols; i++){
    bSymbols[i] = SymbolName(i, true);
    }

    e depois fiz isso para copiar os novos buffers

    for (int iSym=0; iSym<numberOfSymbols; iSym++){
    string cSym = bSymbols[iSym];
    int t1Handle = iMA(cSym,MYTIMEFRAME,MYPERIOD,0,MODE_EMA,PRICE_CLOSE);
    double t1[];
    ArraySetAsSeries(t1, true);
    ArrayResize(t1, 3);

    if (CopyBuffer (t1Handle, 0, 0, 3, t1) <= 0){
    Print("Getting slow EMA is failed! Error ",GetLastError(), " ", cSym);
    return(0);
    }
    }

    Mas na chamada do CopyBuffer está dando erro, como se ele não tivesse entendido a string cSym com o nome do ativo.

    Alguém saberia como resolver isso?


    Obrigado




  • Acho que a pergunta real seria: como inicializar o handler utilizando uma string como símbolo? Se eu fizer assim, quando fizer o CopyBuffer, dá erro.

    string cSym = "PETR4";
    int t1Handle = iMA(cSym,MYTIMEFRAME,MYPERIOD,0,MODE_EMA,PRICE_CLOSE);

Entre para responder
 


O Portal do Trader não se responsabiliza pelas informações e opiniões veiculadas neste fórum, sendo elas de autoria individual de cada participante. Vale ainda ressaltar que investimentos em mercado de renda variável possuem riscos, ganhos passados não garantem ganhos futuros, e a decisão final e responsabilidade sobre cada operação é de cada investidor, devendo ser tomada individualmente.
© 2018 Portal do Trader. Todos os direitos reservados.

Parece que sua conexão com Fórum Portal do Trader caiu, por favor aguarde enquanto tentamos reconectar.