[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 491

 
merkulov.artem:
Boa noite! Pergunta, se eu usar um EA. Minha corretora poderá ver o algoritmo de seu trabalho e como ela calcula valores (indicadores, análise de dados históricos), ou seja, todo o código do Expert Advisor? Ou a corretora recebe apenas informações sobre comandos: abertura, modificação e fechamento de posições?
Não, o CD não pode entrar no processo de trabalho do Consultor Especialista. O servidor da corretora só recebe comandos de seu MT (comprar, vender, etc.).
 
guys!!!!!! onde posso baixar um simples assessor MA para cruzar 2 linhas nos últimos dados? a maioria deles trabalha na linha média tirada do histórico de cotações. e de preferência o mesmo indicador
 
bikrus13:
guys!!!!!! onde posso baixar um simples assessor MA para cruzar 2 linhas de acordo com os últimos dados? a maioria deles trabalha na linha média que é tirada do histórico de cotações. e de preferência o mesmo indicador
O que você quer dizer com "dados recentes"? Os dados mais recentes são os seguintes. Não da história, mas do futuro...) Quais são os dados mais recentes? Só por curiosidade - é a primeira vez que "ouço" falar disso.
 
kakin:
O que você quer dizer com "últimos dados"? Quais são os dados mais recentes? Especifique. Só por curiosidade - é a primeira vez que "ouço" falar disso.

Por exemplo, se você apagar completamente o histórico do terminal. ao abrir um gráfico, você tem que criar seu próprio histórico rolando de volta para o passado. neste caso, o componente médio começa de zero na data em que o histórico começou. é cerca de dois meses. se você tomar MA com um período de 1000 no gráfico de um minuto com um histórico de uma semana e um mês, eles serão diferentes. esse é o problema. se você criar um indicador baseado nos últimos dados de cotações, ele mostrará de forma mais verdadeira
 

Você pode me dizer se é possível proibir a EA de enviar impressoras no momento certo em um gráfico de demonstração? Talvez até mesmo retirando-o da tabela. Acho que esta função não irá pará-la completamente, apenas até o próximo tique, ou irá parar? BreakPoint();

void BreakPoint(){//if (!IsVisualMode()) return(0);
keybd_event(19,0,0,0);
Sleep(10);
keybd_event(19,0,2,0);}                    
 
Aparentemente não vai detê-lo, mas será possível até mesmo remover o robô do gráfico programmaticamente no momento certo?
 
bikrus13:

Por exemplo, se você apagar completamente o histórico do terminal. ao abrir um gráfico, você tem que criar seu próprio histórico rolando de volta no tempo. o componente médio começa de zero na data em que o histórico começou. é cerca de dois meses. se você pegar um MA com um período de 1000 no gráfico de um minuto com histórico de uma semana e um mês, eles serão diferentes. este é o problema. se você criar um indicador usando os últimos dados de cotações, ele mostrará mais veracidade
))))))))) meu único conselho é ler na Internet sobre a temida média móvel e como ela é calculada. Dê ênfase ao estudo do período de cálculo da média. Eu sei que é muito difícil para o cérebro, mas muitas perguntas vão desaparecer por si só.
 

Atualmente estou aprendendo como escrever uma EA em termos de compreensão do código fonte, pois a EA está muito bem escrita.

Mas uma coisa é estranha lá.

void FindOrders()
{
// - 1 - == Инициализация переменных перед поиском ======================================
   int total = OrdersTotal() - 1;
   g_type = -1;                                    // На текущий момент у нас нет позиций
// - 1 - == Окончание блока =============================================================
 
// - 2 - == Непосредственно поиск =======================================================
   for (int i = total; i >= 0; i--)                // Используется весь список ордеров
      if (OrderSelect(i, SELECT_BY_POS))           // Убедимся, что ордер выбран
         if (MathFloor(OrderMagicNumber()) == i_magicNumber &&// Ордер открыт
             OrderSymbol() == Symbol())            // ..экспертом, который прикреплен к..
         {                                         // ..текущей паре
            g_ticket = OrderTicket();              // Запишем данные ордера
            g_type = OrderType();
         } 
// - 2 - == Окончание блока =============================================================
}

Por que o número de todas as ordens é atribuído aoOrderTotal() - 1, e não apenas aoOrderTotal()?

Porque se tivermos 0 pedidos no total, então o valor do total será -1 em vez de 0.

 
hoz:

Atualmente estou aprendendo como escrever uma EA em termos de compreensão do código fonte, pois a EA está muito bem escrita.

Mas uma coisa é estranha lá.

Por que o número de todas as ordens é atribuído aoOrderTotal() - 1, e não apenas aoOrderTotal()?

Porque se tivermos 0 pedidos no total, então o valor do total será -1 em vez de 0.

Depois disso, verificar onde o total é utilizado. O mais provável é que, em seguida, passemos as ordens para (i=0; i<=total; i++).
 
paladin80:
Veja onde o total é usado depois. Muito provavelmente, então o laço passa pelas ordens de (i=0; i<=total; i++).

A propósito, sim... Eu já acrescentei o código completo desta função acima:

void FindOrders()
{
// - 1 - == Инициализация переменных перед поиском ======================================
   int total = OrdersTotal() - 1;
   g_type = -1;                                    // На текущий момент у нас нет позиций
// - 1 - == Окончание блока =============================================================
 
// - 2 - == Непосредственно поиск =======================================================
   for (int i = total; i >= 0; i--)                // Используется весь список ордеров
      if (OrderSelect(i, SELECT_BY_POS))           // Убедимся, что ордер выбран
         if (MathFloor(OrderMagicNumber()) == i_magicNumber &&// Ордер открыт
             OrderSymbol() == Symbol())            // ..экспертом, который прикреплен к..
         {                                         // ..текущей паре
            g_ticket = OrderTicket();              // Запишем данные ордера
            g_type = OrderType();
         } 
// - 2 - == Окончание блока =============================================================
}

Pensei que seria mais lógico não escrevê-lo desta forma:

int total = OrdersTotal() - 1;

e depois ajustar o laço desta maneira:

for(i=total; i>=1; i--)

Certo? De alguma forma não é percebido muito bem quando o contador de posições a partir do zero... não é lógico e, portanto, por que se confundir...