[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 289
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Eu escrevi o que acontece se você simplesmente mover o roteiro para uma pasta com especialistas. Funciona, mas não da maneira que deveria. O script cria 8 ordens pendentes, mas se apenas o salvarmos na pasta com os Expert Advisors, ele cria 8 ordens pendentes após cada tick. Preciso que ele faça 8 novas encomendas somente depois que as antigas forem fechadas.
Você escreveu apenas um "adiamento" em seu roteiro? Então só vai procrastinar: tantos carrapatos quantos forem necessários... oops... .........
Você tem que adicionar um terceiro inibidor de cheques.
Isto é o que acontece se o roteiro for simplesmente movido para a pasta dos especialistas. Funciona, mas não da maneira que deveria. O script cria 8 ordens pendentes, mas se você simplesmente salvá-lo na pasta Expert Advisors, ele cria 8 ordens pendentes após cada tick. Preciso que ele faça 8 novas encomendas somente depois que as antigas forem fechadas.
Eu encontrei um erro. Na biblioteca para esta função na linha
deve apagar zero em cada um dos números 13, 14 e 15.Agora corretamente
Olá funções da biblioteca.
Нашел ошибку. В библиотеке для данной функции в строке
надо удалить по нулю в 13, 14 и 15 числе.
Теперь правильно
Olá funções da biblioteca.
Você escreveu apenas um "adiamento" em seu roteiro? Então só vai procrastinar: tantos carrapatos quantos forem necessários... oops... .........
Você precisa colocar um verificador de proibição também lá.
))))) Não resiste)))))
Muito bem, vamos ao que interessa. Estou trabalhando na otimização do código da segunda TF, decidi traduzir duas vezes em int[2] para escrever a estrutura RateInfo em um bloco. Pensei sobre isso e decidi descrever todas as formas possíveis, inclusiveas não realizáveis, para que alguém pudesse ser avisado contra os erros.
1. WinAPI (msdn). De modo geral, não há muito aí em termos de funções de conversão. Isto porque a conversão faz uso extensivo da tradução do tipo c, que é algo como
na linha seguinte à última linhaint i1 é convertido em char e na última linha char s2 é convertido em int. Como resultado, todo esse material é usado nas chamadas "funções de conversão" que, de fato, não estão em nenhuma dll WinAPI, mas declaradas em arquivos .h de cabeçalho usando macros como
que em tempo de compilação o pré-processador se desenrola em string como no primeiro código. E os arquivos .h de cabeçalho não são dll e são usados somente em ambiente de desenvolvimento (Studio, Borland, gcc, etc). Portanto, não é bom nem ruim para a MQL4. Entretanto, você sempre pode verificar se a função é declarada apenas no arquivo .h do cabeçalho ou oculta dos olhos curiosos funções exportadas de algumas dll no Sistema32.
2) WinAPI (CRT dll). Estas dlls são denominadas msvcp*, msvcr*, msvcrt*, msvci*, msvcirt. Aqui a escolha é mais ampla: _atodbl, _atoi64, _atoldbl, _ftol, _i64toa, _itoa, _ltoa, _strtoi64, _strtoui64 _ui64toa, _ultoa, atof, atoi, atol, strtod, strtol, strtoul. Os símbolos no nome têm o seguinte significado:
Mas o esperado _dtoi64/_dtoui64 ainda está faltando. Usando as definições msvcrt*, msvci*, msvcirt.dll, por outro lado
só está disponível, mesmo se você for torcido, como uma operação de arquivo (estas são operações de console).
Você pode pesquisar, além da msdn,neste site, aqui está a barra de pesquisa do site. Uma cadeia de busca "útil" semelhante está aqui. Como eles diferem? A msdn tem uma boa descrição das funções, mas algumas não estão presentes (NativeAPI, por exemplo). Na alternativa, por outro lado, qualquer tabela de exportação dll do sistema está lá, mas sem descrição. Basicamente, um conjunto de tabelas de exportação no site é mais fácil do que puxar tabelas de exportação da dll você mesmo (IDA, PE Explorer, etc.).
3. inserções de montadores (mais precisamente, inserções de código de máquina). Explicarei dentro de momentos, pois a documentação oficial é muito vaga a este respeito. As inserções C++ em MQL4
asm/_asm não é uma função, mas uma diretiva de pré-processador, e não está definida em nenhum lugar no sistema32/*.dll (ver busca dentro do site). Em outras palavras, não existe tal coisa.
Você pode escrever código de máquina puro em MQL4 mas somente em um caso: quando de acordo com a definição WinAPI-função em msdn deve passar um ponteiro para funcionar/proceder comolpTimerFunc (exemplo completo aqui no fórum), em msdn é declarado como:
UINT_PTR SetTimer( HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc//<- );
oulpfnWndProc (exemploinacabado aqui no fórum, declaração msdn e tentativa de declaração de estrutura mql4). Não há outra maneira, MQL4 é um intérprete, o endereço da função não existe, não há nada para passar, somente se o código estiver escrito em código de máquina. Em seguida, eles são embalados em uma matriz int e passam para a função por referência.
Assim, as inserções de montagem compiladas (ou seja, código de máquina) não são aplicáveis a esta tarefa - elas têm um escopo completamente diferente. O máximo que se pode conseguir é executar um array int via debug em cmd via shell32.dll. Parece que a linha de comando não pode ser passada para lá, mas pode ser escrita usando as teclas virtuais via keybd_event.
4. Escrever minha própria função para converter o dobro em int[2] em MQL4 puro, sem inserções. Mas estimei o tamanho do código e seu desempenho, e desisti. Ainda nem sequer escrevi o módulo em si, mas acredito que o algoritmo é o seguinte:
A execução demoraria muito tempo. Assim, finalmente cheguei à solução mais óbvia e mais fácil
5. Uso de uma dll autoescrita em C++. O código é o seguinte:
No roteiro.
Int superior[0] é invertido porque o passamos por referência. Nós conseguimos:
...funcionou, as linhas no lixão são idênticas. A pasta anexa, nela está em bibliotecas, é double.dll, em samples - source dll, em scripts - script.
À noite: recarregou o arquivo e adulterou um pouco o script e o código dll.
Eu não entendo o que fiz de errado. Por alguma razão a posição não está fechando como eu havia planejado?
Aqui está o critério para abrir uma posição
Aqui está o critério para fechar uma posição
e aqui está o que conseguimos:
Não! Você não pode tocar nas funções da biblioteca padrão! Dima banido :-)))
Por que você está fazendo um palhaço aqui? Se houver um erro, você precisa comunicá-lo ao Servicedesk, ou fazer sua própria cópia do arquivo.
Eu não entendo o que fiz de errado. Por alguma razão a posição não está fechando como eu havia planejado?
Aqui está o critério para abrir uma posição
Aqui está o critério para fechar uma posição
e aqui está o que conseguimos:
E com que freqüência é verificado o critério de fechamento? Por acaso, não por bar?
E com que freqüência é verificado o critério de fechamento? Por acaso não por grades?
Não entendo bem a essência da pergunta. Modelo de teste de preço de abertura (método rápido em barras formadas)