Características úteis da KimIV - página 3

 
KimIV:

Função ExistOrders().

Devolve uma bandeira para a existência de uma ordem. ...

Eu fiz (por mim mesmo) "devolver" o número de pedidos. Mata imediatamente 2 pássaros com uma cajadada (não é preciso escrever 2 funções) - se > 0, a ordem existe + podemos analisar ... Se houver "buracos na grade", acionamento de "reversões", etc. (Embora, a função leve muito tempo para funcionar. (É verdade, a função leva mais tempo para ser executada, o que não se justifica apenas com o propósito de afirmar)

Além disso, parece-me que é visualmente mais intuitivo e, tendo atribuído uma variável, você pode usá-la mais

... (ExistOrders("", OP_BUYLIMIT)+ExistOrders("", OP_SELLLLIMIT)) > 0 ...

do que ...

... (ExistOrders("", OP_BUYLIMIT) || ExistOrders("", OP_SELLLLIMIT)) ...
 
SergNF писал (а):
Fiz (por mim mesmo) uma "devolução" do número de pedidos.
Haverá uma função NumberOfOrders() mais tarde.
 
KimIV:
zhuki escreveu (a):

Mostre sua versão dos atrasos entre as operações comerciais

Eu não faço atrasos entre operações comerciais. Isto é, se eu precisar colocar duas ou mais ordens, eu faço estes negócios sem uma pausa entre elas. Entretanto, entre tentativas comerciais, que devem ser repetidas se houver um erro ao acessar o servidor, eu faço uma pausa de acordo com as recomendações dos desenvolvedores do MT4. Como exemplo, você pode ver como tais pausas são implementadas em minha função SetOrder() para comércio on-line. Diferentes pausas são feitas para diferentes erros devolvidos pelo servidor comercial.



Esta função SetOrder() é utilizada para definir ordens pendentes. É recomendado para uso em comércio on-line em contas demo e reais.


Se mais de 20 EAs estão sendo negociadas, sempre ocorre um erro 146. A função só é capaz de resolver o problema por alguns (2-4) EAs, mas, em princípio, um atraso fixo não resolve o problema...
Ao negociar com 20 ou mais Expert Advisors, é necessário arbitrar, pelo menos usando o protocolo Ethernet... Então todo consultor especializado poderá entrar no mercado ao receber um sinal.
 
Igor, por favor "trate-me" para as funções de fechamento e modificação do pedido. ;-)
 
Lukyanov:
Igor, por favor, "trata-me" com funções para fechar e modificar os pedidos. ;-)

Sim, definitivamente... Mas eu vou terminar com a função SetOrder primeiro. Estou agora aguardando a abertura das negociações para dar mais exemplos de como usar esta função com registros do protocolo. O roteiro do teste já está pronto, mas precisa ser testado on-line.

Planejar a publicação das funções em ordem alfabética:
- DeleteOrders
- ExistOrdersByLot
- GetLotLastOrder
- GetOrderOpenPrice
- IndexByTicket
- ModifyOrder
- NumberOfOrders
- SelectByTicket
- SelectByTicketFromHistory

Você (visitantes de linha) pode ajustar a seqüência de publicação com seus desejos. Mas antes de tudo vou considerar o uso lógico das funções, pois muitas delas estão conectadas entre si. Em outras palavras, as primeiras a serem publicadas serão as funções que podem ser utilizadas na aplicação de outras funções, colocadas posteriormente.

 

Igor, você está fazendo um bom trabalho!

No entanto... com tanta bagagem, e o fórum e o livro, a referência e a kodobase.
Eu ainda tenho perguntas ardentes que às vezes são embaraçosas de se fazer.
(Felizmente, eu sou um boneco, e não o esconda... mas ainda estou aprendendo... :))

E perguntas exatamente nessas ninharias e nuances, que lhe permitem conectar pedaços de código
mais precisamente, para garantir que os blocos (módulos) do programa estejam interligados.

Eu entendo, e muitas vezes eu mesmo peco quando a pergunta como?
A resposta é, na melhor das hipóteses: sim...
Por exemplo, a parada de trilha. E quando perguntado se você pode usar seu próprio TS
Quando você pergunta se pode usar seu próprio TS, a resposta será na melhor das hipóteses: em 100% dos casos sim, em 90% dos casos adicione seu próprio TS, em 80% dos casos pergunte qual você vai usar :)))
etc.... em ordem decrescente...
E como exatamente, letra por letra, infelizmente, nem sempre é o caso.

Portanto, também eu aguardo ansiosamente os posts que descrevem as funções de modificação,
e talvez uma aplicação mais detalhada dos mesmos na prática.

 
klot писал (а):
Ao negociar com 20 ou mais EAs, você precisa arbitrar, pelo menos usando o protocolo Ethernet... Então todo consultor especializado pode entrar no mercado ao receber um sinal.
O que você quer dizer com "arbitragem"?
 
kombat писал (а):
E as perguntas estão nessas ninharias e nuances, que lhe permitem conectar pedaços de código
Mais precisamente, assegurando a interconexão de blocos (módulos) do programa...

Com relação às minhas funções, responderei a quaisquer perguntas. Se eu puder :-) ... É para isso que serve o fio. Ou seja, você pode fazer perguntas aqui a partir de outros tópicos onde coloquei minhas funções sem dar explicações detalhadas. Portanto, sinta-se à vontade para fazer isso. Este é um tópico que pretendo manter por muito tempo. Eu planejei 4 meses para a publicação de recursos sozinho. E mais respostas a perguntas...

kombat escreveu (a):
Portanto, eu também esperarei impacientemente por mensagens com descrição das funções de modificação,
e talvez a sua aplicação mais detalhada na prática...
A função ModifyOrder é universal. Aplica-se tanto aos pedidos quanto às posições. Vou pensar em integrá-lo ao tema o mais rápido possível.
 
KimIV:
klot escreveu:

Ao negociar com 20 ou mais Expert Advisors, você deve fazer arbitragem, pelo menos usando o protocolo Ethernet... Então todo consultor especializado poderá entrar no mercado quando um sinal for recebido.
O que você quer dizer com "arbitragem"?

Olá!
Por "arbitragem" eu quis dizer fornecer um acesso garantido ao fluxo comercial a muitos Consultores Especialistas que trabalham simultaneamente. Eu enfrentei este problema há muito tempo, e cheguei à conclusão de que é melhor usar o acesso múltiplo com detecção de colisão a partir do protocolo Ethernet.
A essência é simples. Nós verificamos se o fluxo comercial está ocupado. Se o fluxo estiver ocupado, geramos uma pausa aleatória (a partir de 1 segundo). Se o fluxo comercial for livre, nós "enviamos" um pedido imediatamente. Ao negociar usando múltiplos Expert Advisors, cada Expert Advisor terá sua própria pausa aleatória e os Expert Advisors ocuparão, por sua vez, o fio da negociação. Não haverá conflitos entre os especialistas.
Por exemplo:
if( IsTradeContextBusy() )  Sleep(MathRand()+1000);
 
Se 10 especialistas estão esperando que um fluxo comercial seja liberado (cada um em seu próprio fluxo independente) o que pode acontecer se por acaso pelo menos 2 coincidirem.
Eu calculo e utilizo outros princípios. Se uma linha de comércio é ocupada por alguém, os EAs restantes simplesmente não funcionam (retorno) e isto é verificado no início de um EA (por que analisá-lo se nada pode ser feito de qualquer maneira).
Acho que não, obrigado.
Razão: