Stanislav Korotky: A bandeira FILE_SHARE_WRITE parece funcionar nesta combinação, mas levanta-se outra questão: qual é o objectivo desta escrita em particular? Logicamente, se permitirmos a separação por escrito, esta deve ser adicionada à bandeira de escrita:
Foi exactamente isso que eu tentei, e também dá um erro.
Ligado ao MetaTrader, encontrei o meu antigo exemplo, adicionei FILE_SHARE_WRITE (embora não seja necessário lá) - o resultado não mudou... Talvez por outra razão não tenha funcionado para mim
Exemplo onde é impossível fazer uma Ordem de Mercado mesmo quando Bid/Ask é um múltiplo de TickSize
Aqui O último preço não é um múltiplo de TickSize. Não tem nada a ver com Ordens de Mercado, mas a OrderCheck continua a ser um erro - não permite que uma Ordem de Mercado seja feita.
A100: Activei MetaTrader, encontrei o meu antigo exemplo, acrescentei FILE_SHARE_WRITE (embora não precisasse dele lá) - o resultado não mudou... Talvez por outra razão não tenha funcionado para mim
Alternativamente, pode posicionar o ficheiro na memória (MemMap) e trabalhar lá via semáforo, e depois despejar os dados para o ficheiro via semáforo
A propósito, este método dar-lhe-á um grande ganho de velocidade
Alternativamente, pode posicionar o ficheiro na memória (MemMap) e trabalhar lá via semáforo, e depois despejar os dados para o ficheiro via semáforo
A propósito, este método dar-lhe-á uma grande vantagem de velocidade
A questão é que tenho um pequeno ficheiro de configuração e cada EA tem de o ler uma vez antes de começar a funcionar - a operação mais simples - ver exemplo nos links acima... e você diz semáforos)
A100: A questão é que eu tinha um pequeno ficheiro de configuração e cada EA só tinha de o ler uma vez antes de começar a funcionar - a operação mais simples - ver o exemplo nos links acima... e diz-se semáforos)
Digo que a escrita sobre este problema durante várias páginas, e tendo em conta que o problema com a barba e a sua reparação pelos criadores aparentemente não pode ou não quer porque Ofereci-lhe um deles, se não gosta de usar winapi qual é o problema )) mas é melhor do que escrever a mesma coisa sem fazer nada, pode usar os mesmos semáforos para ler a partir de um ficheiro físico, o mesmo sinal de semáforo que está ocupado e precisa de esperar!
Erro em FileLoad. Se com a bandeira FILE_COMMON, dois Agentes locais tentarem ler dados via FileLoad, um dos Agentes faz asneira.
É possível colocar bandeiras apropriadas em FileOpen, mas não em FileLoad. Portanto, por favor permitir o acesso ao ficheiro através do FileLoad se o outro FileLoad o ler.
O ficheiro está aberto para leitura. Esta bandeira é utilizada ao abrir um ficheiro (FileOpen()). FILE_WRITE e/ou FILE_READ devem ser definidos quando o ficheiro é aberto.
FILE_WRITE
2
O ficheiro é aberto para escrita. Esta bandeira é utilizada para abrir um ficheiro (FileOpen()). Quando um ficheiro é aberto, devem ser colocadas as bandeiras FILE_WRITE e/ou FILE_READ.
FILE_BIN
4
Modo de leitura-escrita binária (sem conversão de ou para string). Esta bandeira é utilizada para abrir ficheiros (FileOpen())
FILE_CSV
8
Ficheiro do tipo csv (todos os artigos escritos são convertidos numa cadeia do tipo apropriado, unicode ou ansi, e separados por um separador). Esta bandeira é utilizada ao abrir um ficheiro (FileOpen())
FILE_TXT
16
Ficheiro de texto simples (o mesmo que csv, mas sem separador). Esta bandeira é utilizada quando os ficheiros são abertos (FileOpen())
FILE_ANSI
32
Cordas ANSI (caracteres de um byte). Esta bandeira é utilizada quando se abrem ficheiros (FileOpen())
FILE_UNICODE
64
Cordas UNICODE (caracteres de dois bytes). Esta bandeira é utilizada quando se abrem ficheiros (FileOpen())
FILE_SHARE_READ
128
Acesso de leitura partilhado por múltiplos programas. Esta bandeira é utilizada ao abrir um ficheiro (FileOpen()), mas não substitui a necessidade de FILE_WRITE e/ou FILE_READ ao abrir um ficheiro.
FILE_SHARE_WRITE
256
Esta bandeira é utilizada para a partilha de acesso de escrita por múltiplos programas. Esta bandeira é utilizada para abrir ficheiros (FileOpen()), mas não substitui FILE_WRITE e/ou FILE_READ quando se abre um ficheiro.
FILE_REWRITE
512
O ficheiro pode ser substituído por FileCopy() e FileMove(). O ficheiro deve existir ou poder ser escrito. Caso contrário, o ficheiro não pode ser aberto
FILE_COMMON
4096
Localização do ficheiro em pasta partilhada de todos os terminais de clientes. Ficheiros comuns. Esta bandeira é utilizada ao abrir ficheiros (FileOpen()), copiar ficheiros (FileCopy(), FileMove()) e verificar se os ficheiros existem (FileIsExist())
E se os criadores corrigem todas as suas falhas, muitas pessoas não vão gostar. Muito mais de metade do código deixará de funcionar.
Файл открывается для чтения. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл открывается для записи. Флаг используется при открытии файлов (FileOpen()). При открытии файла обязательно должен быть указан флаг FILE_WRITE и/или флаг FILE_READ Файл...
Algumas personagens têm um timeout, outras não. Como sei a idade máxima do tick que ainda pode ser percebida pela OrderSend (não [Sem preço])?
Foda-se, sabe-se lá.
A bandeira FILE_SHARE_WRITE parece funcionar nesta combinação, mas levanta-se outra questão: qual é o objectivo desta escrita em particular? Logicamente, se permitirmos a separação por escrito, esta deve ser adicionada à bandeira de escrita:
Foi exactamente isso que eu tentei, e também dá um erro.
Fórum sobre comércio, sistemas comerciais automatizados e teste de estratégias comerciais
Plataforma de negociação MetaTrader 5 colocada à disposição dos clientes da AMP Futures
fxsaber, 2018.07.23 22:34
Exemplo onde é impossível fazer uma Ordem de Mercado mesmo quando Bid/Ask é um múltiplo de TickSize
Aqui O último preço não é um múltiplo de TickSize. Não tem nada a ver com Ordens de Mercado, mas a OrderCheck continua a ser um erro - não permite que uma Ordem de Mercado seja feita.
Algumas personagens têm um timeout, outras não. Como posso saber a idade máxima do tick que ainda pode ser aceite pela OrderSend (não [Sem preço])?
Acontece que o último tick recebido há 16 segundos não é considerado como relevante para a OrderSend. Afinal, isto deve ser um insecto.
Activei MetaTrader, encontrei o meu antigo exemplo, acrescentei FILE_SHARE_WRITE (embora não precisasse dele lá) - o resultado não mudou... Talvez por outra razão não tenha funcionado para mim
Alternativamente, pode posicionar o ficheiro na memória (MemMap) e trabalhar lá via semáforo, e depois despejar os dados para o ficheiro via semáforo
A propósito, este método dar-lhe-á um grande ganho de velocidade
Alternativamente, pode posicionar o ficheiro na memória (MemMap) e trabalhar lá via semáforo, e depois despejar os dados para o ficheiro via semáforo
A propósito, este método dar-lhe-á uma grande vantagem de velocidade
A questão é que eu tinha um pequeno ficheiro de configuração e cada EA só tinha de o ler uma vez antes de começar a funcionar - a operação mais simples - ver o exemplo nos links acima... e diz-se semáforos)
Digo que a escrita sobre este problema durante várias páginas, e tendo em conta que o problema com a barba e a sua reparação pelos criadores aparentemente não pode ou não quer porque Ofereci-lhe um deles, se não gosta de usar winapi qual é o problema )) mas é melhor do que escrever a mesma coisa sem fazer nada, pode usar os mesmos semáforos para ler a partir de um ficheiro físico, o mesmo sinal de semáforo que está ocupado e precisa de esperar!
Neste script simples, correr primeiro com escrita = verdadeiro e depois noutro gráfico com escrita = falso, recebo um erro.
A abertura para a leitura carece da bandeira FILE_SHARE_WRITE (permitir a escrita), uma vez que existe um escritor.
Esta é uma limitação do sistema (WinAPI).
Aqui estão as bandeiras correctas com as quais o seu código irá trabalhar:
Aqui estão as bandeiras correctas para fazer o seu código funcionar:
Por favor, conserte FileLoad
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Insectos, insectos, perguntas
fxsaber, 2018.07.10 19:26
Erro em FileLoad. Se com a bandeira FILE_COMMON, dois Agentes locais tentarem ler dados via FileLoad, um dos Agentes faz asneira.
É possível colocar bandeiras apropriadas em FileOpen, mas não em FileLoad. Portanto, por favor permitir o acesso ao ficheiro através do FileLoad se o outro FileLoad o ler.
porquê? )
Porque não há zero na lista de bandeiras
Identificador
Valor
Descrição
FILE_READ
1
O ficheiro está aberto para leitura. Esta bandeira é utilizada ao abrir um ficheiro (FileOpen()). FILE_WRITE e/ou FILE_READ devem ser definidos quando o ficheiro é aberto.
FILE_WRITE
2
O ficheiro é aberto para escrita. Esta bandeira é utilizada para abrir um ficheiro (FileOpen()). Quando um ficheiro é aberto, devem ser colocadas as bandeiras FILE_WRITE e/ou FILE_READ.
FILE_BIN
4
Modo de leitura-escrita binária (sem conversão de ou para string). Esta bandeira é utilizada para abrir ficheiros (FileOpen())
FILE_CSV
8
Ficheiro do tipo csv (todos os artigos escritos são convertidos numa cadeia do tipo apropriado, unicode ou ansi, e separados por um separador). Esta bandeira é utilizada ao abrir um ficheiro (FileOpen())
FILE_TXT
16
Ficheiro de texto simples (o mesmo que csv, mas sem separador). Esta bandeira é utilizada quando os ficheiros são abertos (FileOpen())
FILE_ANSI
32
Cordas ANSI (caracteres de um byte). Esta bandeira é utilizada quando se abrem ficheiros (FileOpen())
FILE_UNICODE
64
Cordas UNICODE (caracteres de dois bytes). Esta bandeira é utilizada quando se abrem ficheiros (FileOpen())
FILE_SHARE_READ
128
Acesso de leitura partilhado por múltiplos programas. Esta bandeira é utilizada ao abrir um ficheiro (FileOpen()), mas não substitui a necessidade de FILE_WRITE e/ou FILE_READ ao abrir um ficheiro.
FILE_SHARE_WRITE
256
Esta bandeira é utilizada para a partilha de acesso de escrita por múltiplos programas. Esta bandeira é utilizada para abrir ficheiros (FileOpen()), mas não substitui FILE_WRITE e/ou FILE_READ quando se abre um ficheiro.
FILE_REWRITE
512
O ficheiro pode ser substituído por FileCopy() e FileMove(). O ficheiro deve existir ou poder ser escrito. Caso contrário, o ficheiro não pode ser aberto
FILE_COMMON
4096
Localização do ficheiro em pasta partilhada de todos os terminais de clientes. Ficheiros comuns. Esta bandeira é utilizada ao abrir ficheiros (FileOpen()), copiar ficheiros (FileCopy(), FileMove()) e verificar se os ficheiros existem (FileIsExist())
E se os criadores corrigem todas as suas falhas, muitas pessoas não vão gostar. Muito mais de metade do código deixará de funcionar.