[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 385

 
granit77:
Victor, você está errado. Graças a esta longa discussão, dois programadores responderam a perguntas de recém-chegados ao mesmo tempo, o que só beneficiou o fio condutor :))

Bem, gostei de ler. E foi muito reveladora a atitude de avançados (não sei como chamá-los de programadores agora ou não - estou confuso agora : )) ) - Vamos colocar desta forma - especialistas, resolvendo problemas avançados : ))) e suas opiniões sobre tarefas aparentemente simples. Espero sinceramente que esta seja uma discussão sem emoções e amigável, apesar de todas as discordâncias. Eu, infelizmente, ainda tenho minhas diferenças (não resolvidas) também. Mas eu estou aqui apenas professando uma abordagem filosófica. Se a solução de um problema dessa maneira não for óbvia, você tem que encontrar outra maneira. Mas é muito útil saber sobre o problema.

Muito obrigado pela discussão. É uma pena que não tenhamos chegado a um consenso. (Mas, ainda não surgiu nenhum consenso... (a canção "Lá, longe, perto do metrô" vem à mente))

E é uma pena, é claro, que não tenha havido respostas óbvias às minhas perguntas e às de Arles. Penso que estas perguntas não são apenas para ele e para mim, mas para muitos profissionais menos experientes que acham difícil construir seus próprios fios e T.I., e é por isso que se voltam para programas e conchas escritos por profissionais avançados.

Tudo bem. Com o tempo, resolveremos também estas questões. : )) Muito obrigado por seus esforços. Todas as partes têm uma atitude positiva no final (embora tenham formas diferentes de resolvê-las). E isso agrada.

A propósito, em minhas pesquisas pedagógicas costumo dizer: nem todas as perguntas podem ser resolvidas, muitas vezes não sabemos todas as respostas; portanto, elas ainda podem... permanecem em aberto. (Estou tentando encontrar um final delicado para a discussão) Obrigado novamente!
 
Preciso de ajuda 1 como saber o preço da ordem de venda em aberto ou pendente 2 como verificar se há uma ordem de venda em aberto ou pendente ao preço que especifiquei
 

Sergei, quais questões não foram resolvidas? Se isto:

Chiripaha:

Ou seja, respondendo à pergunta de Arles, se uma EA fez a contabilidade das ordens e "tirou uma soneca" por um tempo, naquele momento outra EA que não tenha excedido o limite de fundos alocados (vamos assumir que 80% do depósito - ambas as EA terão este tamanho) colocará uma ordem (entre em um acordo no mercado). E quando o primeiro retomar o trabalho (e o terminal de gerenciamento de dinheiro já tiver sido calculado no dia anterior), ele também poderá abrir um negócio que exceda os limites estabelecidos pelo Expert Advisor?

Se este sistema (hipoteticamente) for multiplicado por vários EAs, então poderá haver um, onde a Gestão de Risco estará em sistema crítico?

Eu entendo corretamente esta multi-tarefa? - Se assim for, então do ponto de vista financeiro, é claro, é uma bagunça. Mas como a probabilidade é pequena em pequenas contas, é apenas hipotética. E em contas maiores, eles provavelmente escreverão algo por conta própria. Mas ainda assim, será que é o caso?

E eu tenho uma pergunta - esta é a posição oficial ou é apenas especulação e experiências como a minha?

Há um código na página 378. Aqui está novamente:

#property show_inputs

extern int Pause = 1000;

int    hwndChart = NULL; // Уникальный идентификатор скрипта.
string sName = "Condition";

void init()
 {
  hwndChart = WindowHandle(Symbol(), 0);
  // Создаём глобальную переменную синхронизации скриптов.
  if (!GlobalVariableCheck(sName)) GlobalVariableSet(sName, 0);
 }
 
void deinit()
 {
  GlobalVariableDel(sName);
 }

void start()
 {
  while (!IsStopped())
   {// Начало блока синхронизации.
    GlobalVariableSetOnCondition(sName, hwndChart, 0);
    if (GlobalVariableGet(sName) == hwndChart)
     {
      Print("Start");
      Sleep(Pause); // Имитация работы.
      Print("End");
     }
    GlobalVariableSetOnCondition(sName, 0, hwndChart);
    // Завершение блока синхронизации.
    Sleep(200);
   }
 }
Quando o atraso for "trabalho de imitação", inserir uma referência ao depósito ou outro recurso.

Você pode transformar este bloco de sincronização em uma função e colocá-lo na biblioteca. Você terá uma função síncrona de acesso ao depósito a partir de qualquer EA.

 
Substituir o índice pela alça da janela do gráfico
 
FAQ:
Em vez do índice, substitua o manípulo da janela do gráfico

Certo! É difícil descobrir o que é o que acontece com os índices.

Eu a refiz.

===================

Embora, a indexação permitirá excluir corretamente uma variável global.

Devemos diminuir o índice no deinit. E apagar a variável global quando o índice for igual a zero.

Mas este decréscimo não permitirá recarregar o script após a exclusão. Os índices serão misturados.

Devemos criar um conjunto global de índices de todos os módulos que acessam o recurso. Bem, e trabalhar com ele.

Também é possível fazer duas variáveis globais. Um com o último índice, o outro com o número atual de módulos. Os índices só aumentam. Provavelmente, será mais fácil.

Ou não se preocupe com variável global de forma alguma. Apagar manualmente antes da primeira execução.

 
isto funcionará bem até o primeiro fracasso deinicial, quando o experimentador não diminuir o contador total
 
Consegui! Também temos que sair em sincronia. Em deinit, aguarde sua vez e saia com reset global de variáveis. Se o recurso for acessado por um curto período de tempo, ele estará bem no deinit.
 

1) Problema : cada roteiro (EA) tem que estar ciente da presença de todos os outros.

2) Problema: se houver um fracasso, os globais do fracassado serão pendurados desocupados e a fila ficará presa.

3) Solução :

Cada exp exp exp expõe 1 globalka com nome - prefixo comum + alavanca de janela + símbolo. valor da globalka é o tempo do último tick nesse instrumento. 2 global comum com sua própria alça (depois de trabalhar, escreve sua própria alça ou a limpa se for a mais antiga)

A fila é organizada em ordem ascendente (alças), o mais alto define o segundo globale a zero

em cada exp, criamos três arrays (por falta de estruturas) - símbolo/manual/último tempo de acesso/último tempo de carrapato.

todos os EXPs mantêm registro de (último tempo de acesso/último tempo de registro) para todos eles e assim que são diferentes (um dos EXPs falha) ambos os globais do EXP falhado são excluídos e o EXP é considerado inativo. suas células nas matrizes são excluídas (a matriz é reconstruída).

a fila é restaurada

isto será realmente feito pela EA de pé no gráfico mais ativo (carrapatos freqüentes).

quando desinicializada normalmente, cada expo limpará depois de si mesma.

max skip - um carrapato.

ZS. e, em geral, é melhor fazer uma moeda múltipla

 
Zhunko:

Sergei, quais questões não foram resolvidas? Se assim for:

Há um código na página 378. Aqui está novamente:

Quando há um atraso "imitação de trabalho" você insere uma referência ao depósito ou a outro recurso.

Você pode transformar este bloco de sincronização em uma função e colocá-lo na biblioteca. Você terá uma função sincrônica de acesso ao depósito por parte de qualquer consultor especializado.

Este é um bloco de acesso atômico e não há sincronização. Não faz sentido aplicar somente ao depósito. A chamada de qualquer uma das funções dos parâmetros de depósito será atômica por si só, sem nenhum empurrão. Se você o faz atomicamente, todo o trabalho do Expert Advisor. É assim que você resolve problemas - você pensa que fez algo, mas na verdade é uma ilusão.

 
FAQ:

1) Problema : cada roteiro (EA) deve estar ciente da presença de todos os outros.

2) Problema: se houver um fracasso, os globais do fracassado serão pendurados desocupados e a fila ficará presa.

3) Solução :

Cada exp exp exp expõe 1 globalka com nome - prefixo comum + alavanca de janela + símbolo. valor da globalka é o tempo do último tick nesse instrumento. 2 global comum com sua própria alça (depois de trabalhar, escreve sua própria alça ou a limpa se for a mais antiga)

A fila é organizada em ordem ascendente (alças), o mais alto define o segundo globale a zero

em cada exp, criamos três arrays (por falta de estruturas) - símbolo/manual/último tempo de acesso/último tempo de carrapato.

todos os EXPs mantêm registro de (último tempo de acesso/último tempo de registro) para todos eles e assim que são diferentes (um dos EXPs falha) ambos os globais do EXP falhado são excluídos e o EXP é considerado inativo. suas células nas matrizes são excluídas (a matriz é reconstruída).

a fila é restaurada

isto será realmente feito pela EA de pé no gráfico mais ativo (carrapatos freqüentes).

quando desinicializada normalmente, cada expo limpará depois de si mesma.

max skip - um carrapato.

ZS. e, em geral, é melhor fazer uma moeda múltipla


Ele não vai entender, muito mal visto de cima)))) Tenho esta tarefa resolvida com este estilo. É bom ter alguém que entende a essência do problema. Somente eu ainda tenho uma fila, na qual as tarefas começaram a ser executadas, e são executadas mais adiante em círculo.
Razão: