Entendo que você precisa de alguma forma indicar ao Consultor Especialista o bilhete da posição aberta manualmente, que você quer que ele arraste.
Você deve acrescentar ao Expert Advisor o acompanhamento das posições recém-abertas e se não tiver um magik, isso significa que foi aberto manualmente. O Conselheiro Especialista deverá marcar a abertura desta posição no preço e na barra de sua abertura. O nome do objeto deve conter um prefixo com o nome comum do objeto para todos esses objetos, por exemplo "manual_" e o bilhete da posição também deve estar presente. Como resultado, o nome do objeto pode ser o seguinte: "manual_12345678". Aqui: manual_ - prefixo, 12345678 - bilhete de posição.
Adicione ao Expert Advisor OnChartEvent() e monitore o evento do clique do mouse sobre o objeto. Analisar o nome do objeto e se ele contém um manual de substrato_, então procure por um número após o manual_. Este número é o bilhete da posição na qual você clicou.
Então você precisa salvar o número encontrado para que ele não se perca quando reiniciar o EA/terminal/computador/mundo... Por exemplo, em recursos ou variáveis globais do terminal.
O Conselheiro Especialista deve ler este recurso e tomar o bilhete da posição a ser arrancada dele
No ciclo de arrasto, você deve ir buscar o bilhete da posição selecionada e procurar este número na lista de bilhetes salvos. Se tal bilhete for encontrado, a posição com este bilhete deve ser arrasto.
Se o número de posições for alterado, o bilhete da posição fechada deve ser verificado e encontrado na lista gravada. Se tal bilhete existe na lista, deve ser excluído dessa lista - a posição não existe mais, e não há nada a ver com seu bilhete na lista de bilhetes para arrasto.
Algo parecido com isto. A lógica estava escrita em uma manivela, por isso não podia levar em conta algo...
Obrigado pelo esclarecimento, agora eu entendo o que quero dizer.
Para mim as lições de mql recomendam definir 3 (EURUSD), mas a liquidez das moedas é diferente e sua velocidade também. Quais são os números que podem ser usados como diretriz durante condições normais de mercado para pares de dólares e cruzamentos?
É possível preencher um buffer multidimensional com CopyOpen, CopyHigh, CopyLow e CopyClose? A descrição diz que ele copia para uma matriz dinâmica - mas uma matriz dinâmica pode ser multidimensional MQL5
Alexandr Sokolov: É possível preencher um buffer multidimensional usando as funções CopyOpen, CopyHigh, CopyLow e CopyClose? A descrição diz que ele copia para uma matriz dinâmica - mas uma matriz dinâmica pode ser multidimensional MQL5
Alexandr Sokolov: É possível preencher um buffer multidimensional usando as funções CopyOpen, CopyHigh, CopyLow e CopyClose? A descrição diz que ele copia em uma matriz dinâmica - mas uma matriz dinâmica pode ser multidimensional.
Se você tem dificuldade em entender as estruturas, você pode usar o ArrayCopyRates
intArrayCopyRates(
void& dest_array[][], // массив, переданный по ссылке string symbol=NULL, // инструмент int timeframe=0// таймфрейм
);
Получает в массив rates_array исторические данные структуры MqlRates указанного символа-периода в указанном количестве. Отсчет элементов от стартовой позиции ведется от настоящего к прошлому, то есть стартовая позиция, равная 0, означает текущий бар. При копировании заранее неизвестного количества данных рекомендуется в качестве приемного...
Olá. Tentei construir um EA entre vários, tudo está funcionando corretamente no testador de estratégia (verifiquei-o no modo de visualização). Tentei usar uma conta demo e de vez em quando tive o seguinte problema, uma ordem é aberta e depois apagada, e isto acontece durante uma hora, até que a hora muda. Pensei que houvesse uma condição para entrar e excluir a ordem ao mesmo tempo, mas a exclusão é apenas a tempo, eu excluí todo este erro de bloco não desapareceu. Se alguém não for difícil, diga-me onde o erro ocorreu.
Olá. Tentei construir um EA entre vários, tudo está funcionando corretamente no testador de estratégia (verifiquei-o no modo de visualização). Tentei usar uma conta demo e de vez em quando tive o seguinte problema, uma ordem é aberta e depois apagada, e isto acontece durante uma hora, até que a hora muda. Pensei que houvesse uma condição para entrar e excluir a ordem ao mesmo tempo, mas a exclusão é apenas a tempo, eu excluí todo este erro de bloco não desapareceu. Favor informar onde está o erro.
É necessário fazer um transbordo em um loop através daOrderSelect
int start()
{
// модификация до безубыткаif (MathAbs((OrderOpenPrice()-Ask)/Point) > BUP && CountBuy() > 0)
ModifyLoss();
if (MathAbs((OrderOpenPrice()-Bid)/Point) > BUP && CountSell() > 0)
ModifyLoss();
Tanto quanto sei, quando ocorre uma condição, ocorre uma transição para a função de modificação onde apenas a seleção da ordem é utilizada. E também tentei remover esta peça, e nem sempre é visível qual condição ocorre.
Olá. Tentei construir um EA entre vários, tudo está funcionando corretamente no testador de estratégia (eu o verifiquei no modo de visualização). Tentei usar uma conta demo e de vez em quando tive o seguinte problema, uma ordem é aberta e depois apagada, e isto acontece durante uma hora, até que a hora muda. Pensei que houvesse uma condição para entrar e excluir a ordem ao mesmo tempo, mas a exclusão é apenas a tempo, eu excluí todo este erro de bloco não desapareceu. Favor informar onde está o erro.
Você tem que escrever na função Imprimir(__FUNÇÃO__) ou na função Imprimir(bloco de sucção, parâmetros de sucção). Observe a ordem na qual as funções/blocos são acionados. O primeiro que desencadeou e não deveria ter desencadeado, é aí que está a questão. Confiar no fato de que "descrevi aqui condições bastante incompatíveis para seu acionamento simultâneo" não é uma boa idéia. Talvez a unidade não devesse ter acionado, mas parâmetros externos permitiram que ela acionasse, talvez algo dentro da unidade não devesse ter acionado.
Por favor, mostre o botão que pode funcionar no testador. Por exemplo, clique sobre o qual irá levantar a bandeira comércio = verdadeiro; clique novamente? comércio = falso;
Por favor, mostre o botão que pode funcionar no testador. Por exemplo, clique sobre qual bandeira levantará o comércio = verdadeiro; clique novamente? comércio = falso;
Em OnTick() controle o botão de pressão. Você pode fazer por condição, se funcionar no testador - controle no OnTick(), mas no mundo real esse controle não será executado e será controlado no OnChartEvent()
Entendo que você precisa de alguma forma indicar ao Consultor Especialista o bilhete da posição aberta manualmente, que você quer que ele arraste.
Obrigado pelo esclarecimento, agora eu entendo o que quero dizer.
Para mim as lições de mql recomendam definir 3 (EURUSD), mas a liquidez das moedas é diferente e sua velocidade também. Quais são os números que podem ser usados como diretriz durante condições normais de mercado para pares de dólares e cruzamentos?
É possível preencher um buffer multidimensional usando as funções CopyOpen, CopyHigh, CopyLow e CopyClose? A descrição diz que ele copia para uma matriz dinâmica - mas uma matriz dinâmica pode ser multidimensional MQL5
Use uma matriz unidimensional...
É possível preencher um buffer multidimensional usando as funções CopyOpen, CopyHigh, CopyLow e CopyClose? A descrição diz que ele copia em uma matriz dinâmica - mas uma matriz dinâmica pode ser multidimensional.
Se você tem dificuldade em entender as estruturas, você pode usar o ArrayCopyRates
Se você tem uma boa compreensão disso, é melhor
Olá. Tentei construir um EA entre vários, tudo está funcionando corretamente no testador de estratégia (verifiquei-o no modo de visualização). Tentei usar uma conta demo e de vez em quando tive o seguinte problema, uma ordem é aberta e depois apagada, e isto acontece durante uma hora, até que a hora muda. Pensei que houvesse uma condição para entrar e excluir a ordem ao mesmo tempo, mas a exclusão é apenas a tempo, eu excluí todo este erro de bloco não desapareceu. Se alguém não for difícil, diga-me onde o erro ocorreu.
Olá. Tentei construir um EA entre vários, tudo está funcionando corretamente no testador de estratégia (verifiquei-o no modo de visualização). Tentei usar uma conta demo e de vez em quando tive o seguinte problema, uma ordem é aberta e depois apagada, e isto acontece durante uma hora, até que a hora muda. Pensei que houvesse uma condição para entrar e excluir a ordem ao mesmo tempo, mas a exclusão é apenas a tempo, eu excluí todo este erro de bloco não desapareceu. Favor informar onde está o erro.
É necessário fazer um transbordo em um loop através daOrderSelect
Tanto quanto sei, quando ocorre uma condição, ocorre uma transição para a função de modificação onde apenas a seleção da ordem é utilizada. E também tentei remover esta peça, e nem sempre é visível qual condição ocorre.
Olá. Tentei construir um EA entre vários, tudo está funcionando corretamente no testador de estratégia (eu o verifiquei no modo de visualização). Tentei usar uma conta demo e de vez em quando tive o seguinte problema, uma ordem é aberta e depois apagada, e isto acontece durante uma hora, até que a hora muda. Pensei que houvesse uma condição para entrar e excluir a ordem ao mesmo tempo, mas a exclusão é apenas a tempo, eu excluí todo este erro de bloco não desapareceu. Favor informar onde está o erro.
Você tem que escrever na função Imprimir(__FUNÇÃO__) ou na função Imprimir(bloco de sucção, parâmetros de sucção). Observe a ordem na qual as funções/blocos são acionados. O primeiro que desencadeou e não deveria ter desencadeado, é aí que está a questão. Confiar no fato de que "descrevi aqui condições bastante incompatíveis para seu acionamento simultâneo" não é uma boa idéia. Talvez a unidade não devesse ter acionado, mas parâmetros externos permitiram que ela acionasse, talvez algo dentro da unidade não devesse ter acionado.
OnChartEvent() não funciona no testador.
Por favor, mostre o botão que pode funcionar no testador. Por exemplo, clique sobre o qual irá levantar a bandeira comércio = verdadeiro; clique novamente? comércio = falso;
OnChartEvent() não funciona no testador.
Por favor, mostre o botão que pode funcionar no testador. Por exemplo, clique sobre qual bandeira levantará o comércio = verdadeiro; clique novamente? comércio = falso;
Em OnTick() controle o botão de pressão. Você pode fazer por condição, se funcionar no testador - controle no OnTick(), mas no mundo real esse controle não será executado e será controlado no OnChartEvent()