Como importar bid/ask de outro par de moedas? - página 2

 

Ok, eu li a documentação do Market Info e percebi que você só pode puxar os preços de compra/venda. Como eu tentaria puxar os dados de preços (HLOC) de, digamos, 6 barras atrás?


Para ser honesto, gastei muito tempo lendo a documentação e não é tão útil como em outras línguas como Python ou PRT, então estava apenas procurando por alguma orientação

Cumprimentos,

 
Simone Gill:

Ok, eu li a documentação do Market Info e percebi que você só pode puxar os preços de compra/venda. Como eu tentaria puxar os dados de preços (HLOC) de, digamos, 6 barras atrás?


Para ser honesto, gastei muito tempo lendo a documentação e não é tão útil como em outras línguas como Python ou PRT, então estava apenas procurando por alguma orientação

Cumprimentos,

Use iOpen(),iClose(),iHigh() e/ou iLow()

 

Olá Prós,

Eu realmente fiquei furioso ao ler este tópico, desculpe-me por trazê-lo à tona. Mas como já tive o mesmo assunto, decidi comentar aqui.

Aqui está o meu código:

double Ask2,Bid2;

----------------------------

void start()

{

Ask2=MarketInfo("GBPUSD",MODE_ASK);
Bid2=MarketInfo("GBPUSD",MODE_BID);
Comment(Ask2, Bid2);

}


O comentário mostra 00

Por que não poderia importar Ask and Bid de outro Símbolo?


Qualquer conselho é apreciado,
Hossein

 
HosseinKOGO: Por que não poderia importar Ask and Bid de outro Símbolo?
No MT4: A menos que o gráfico atual seja aquele par específico/TF referenciado, você deve lidar com o erro 4066/4073 antes deacessar os preços.
Histórico de download no fórum de programação MQL4EA - MQL4 e MetaTrader 4 -MQL4

No MT5: A menos que o gráfico seja aquele par/TF específico, você deve Sincronizar os dados do terminal a partir do Servidor.
Acesso a Tempos e Indicadores / Acesso a Dados - Referência onalgorítmica/ linguagem de negociação automatizada para MetaTrader 5
Sincronizar dados do servidor com dados do terminal - Símbolos - Geral - Fórum de programação MQL5

 
William Roeder:
No MT4: A menos que o gráfico atual seja aquele par específico/TF referenciado, você deve lidar com o erro 4066/4073 antes deacessar os preços.
Histórico de download no fórum de programação MQL4EA - MQL4 e MetaTrader 4 -MQL4

No MT5: A menos que o gráfico seja aquele par/TF específico, você deve Sincronizar os dados do terminal a partir do Servidor.
Acesso a séries de tempo e indicadores / Acesso a dados - Referência em linguagem de negociação onalgorítmica/automatizada para MetaTrader 5
Sincronizar dados do servidor com dados do terminal - Símbolos - Geral - Fórum de programação MQL5

Obrigado por sua ajuda.

Eu uso o Tick Data Suite do eareview.net e fiz o download do histórico de meus pares alvo, incluindo GBPUSD, antes do backtesting. Além disso, o Journal não me dá nenhum erro. É algo sobre integração? Devo procurar uma solução entrando em contato com o suporte do Tick Data Suite?

(uso MQL4 para codificação)
 

Alguém pode tentar este código enquanto faz um backtesting na tabela GBPAUD -4H? Eu estou realmente preso :(
Você recebe 00 como comentário?

double Ask2,Bid2;

----------------------------

void start()

{

Ask2=MarketInfo("GBPUSD",MODE_ASK);
Bid2=MarketInfo("GBPUSD",MODE_BID);
Comment(Ask2, Bid2);

}
 
HosseinKOGO: Eu uso o Tick Data Suite do eareview.net e fiz o download do histórico de meus pares alvo, incluindo GBPUSD, antes do backtesting. Além disso, o Journal não me dá nenhum erro. É algo sobre integração? Devo procurar uma solução entrando em contato com o suporte do Tick Data Suite? (Eu uso MQL4 para codificação)

Não tem nada a ver com o TDS. É preciso fazer com que o terminal leia os dados antes de acessá-lo. Que parte de "antes de acessar os preços" não estava clara?

HosseinKOGO : Eu estou realmente preso :( Você recebe 00 como comentário?

Você vai continuar assim quando ignorar a ajuda que recebe. Qual parte do "deve lidar" não foi clara?

 
William Roeder:

Não tem nada a ver com o TDS. É preciso fazer com que o terminal leia os dados antes de acessá-lo. Que parte de "antes de acessar os preços" não estava clara?

Você vai continuar assim quando ignorar a ajuda que recebe. Qual parte do "deve lidar" não foi clara?

Desculpe-me, sou um programador novato e parece que não consegui entender o que você quer dizer. Na verdade, o que eu descobri por seu conselho é "esperar para baixar o histórico e os dados do preço atual do segundo par de moedas antes de fazer qualquer coisa".

Você poderia me dar mais detalhes sobre o que eu deveria fazer com este código que você postou?

#define  HR2400 PERIOD_D1 * 60    // 86400 = 24 * 3600
int      TimeOfDay(datetime when=0){      if(when == 0)  when = TimeCurrent();
                                          return( when % HR2400 );            }
datetime DateOfDay(datetime when=0){      if(when == 0)  when = TimeCurrent();
                                          return( when - TimeOfDay(when) );   }
#define  SYMBOL string
#define  THIS_SYMBOL ""
bool  download_history(ENUM_TIMEFRAMES period=PERIOD_CURRENT){
   return download_history(_Symbol, period); 
}
bool  download_history(
      SYMBOL            symbol=THIS_SYMBOL,     ///< The symbol required.
      ENUM_TIMEFRAMES   period=PERIOD_CURRENT   /**< The standard timeframe.*/){
   if(symbol == THIS_SYMBOL)     symbol = _Symbol;
   if(period == PERIOD_CURRENT)  period = _Period;
   datetime today = DateOfDay();
   ResetLastError();
   datetime other = iTime(symbol, period, 0);
   if(_LastError == 0 
   && today == DateOfDay(other)) return true;   
   if(_LastError != ERR_HISTORY_WILL_UPDATED
   && _LastError != ERR_NO_HISTORY_DATA
      Print(StringFormat("iTime(%s,%i) Failed: %i", symbol, period,_LastError));
   return false;
}

Eu copiei o código superior em minha área global e ele me dá erros e avisos.

Copiei esta linha de código também em minha função inicial:

while(!download_history(PERIOD_M15) ){ Sleep(1000); RefreshRates(); }

Você poderia me aconselhar o que e onde devo inserir informações e pontuação suficientes?

Mais uma vez desculpe pela minha habilidade de baixo nível...

 
  1. HosseinKOGO: e isso me dá erros e avisos.

    HosseinKOGO : Você poderia me dar mais detalhes sobre o que eu deveria fazer com este código que você postou?

    1. Você não conseguiria descobrir essas pequenas correções?
      int      TimeOfDay(datetime when=0){      if(when == 0)  when = TimeCurrent();
                                                return( int( when % HR2400) );            }
      
        if(_LastError != ERR_HISTORY_WILL_UPDATED
         && _LastError != ERR_NO_HISTORY_DATA
         )  Print(StringFormat("iTime(%s,%i) Failed: %i", symbol, period,_LastError));
      

    2. Você já a postou para um EA.
      while(!download_history(PERIOD_M15) ){ Sleep(1000); RefreshRates(); }
 
William Roeder:
    1. Você não conseguiria descobrir correções tão pequenas?

    2. Você já a postou para um EA.

Obrigado por sua resposta,

Na verdade, eu não sou codificador, no entanto, tentei codificar alguns EAs. Meu trabalho está ligado à criatividade e à estratégia, por isso, eu tive 600-700 idéias para fazer EAs e as construí até agora. Posso codificar EAs muito facilmente e não estou acostumado a sua codificação de alto nível...

Eu coloquei esses códigos em meu EA, mas ele retorna apenas este erro: 2019.05.06 15:37:56.586 2018.01.02 00:00:07 MyEA! GBPAUD,H4: iTime(GBPUSD,240) Falha: 0

Estou tentando GBPAUD como meu gráfico aberto e GBPUSD como meu segundo par.

Qual é o problema?