alexey1979621: Olá a todos! A questão é a seguinte. Como medir a distância entre Alto e Baixo da primeira, segunda, terceira vela e prescrever a condição de que esta distância de cada vela não deve ser inferior a, digamos, 10 pontos. Agradecemos antecipadamente.
Aqui está um EA para testar a função. Ela contém a função em si e sua chamada. Antes de ligar, você tem que preparar uma mensagem, que pode ser de até quatro linhas. O comprimento de cada linha, se bem me lembro, não deve exceder 64 caracteres. É por isso que dividi uma mensagem em várias linhas. Cada linha de uma mensagem pode ser emitida em uma cor diferente. É um pouco claro no código - primeiro preparamos linhas de mensagem, depois chamamos a função. Não comentei muito lá - escrevi-o de uma só vez há muito tempo. Agora eu já esqueci para o que existe. Se eu tiver alguma dúvida, vou me lembrar, mas agora só me lembro das coisas necessárias.
E um peru:
É assim que é... Espero que você pegue o jeito.
É claro que posso fazer um subpavimento em vez de o fazer sair para o gráfico principal na janela do indicador, mas sou muito preguiçoso ... :)
Artem, eu vi seu código, o peru é a bomba: )))). Em essência, tudo está claro com mais, embora eu tenha visto alguns pontos na implementação, um pouco diferente do que eu teria feito, mas isso é uma coisa menor.
Eis o que é interessante. Somente o que está no perito é impresso no peru. Mas como você a utiliza em seu benefício?
Artem, eu vi seu código, o peru é a bomba: )))). Em essência, tudo está claro com mais, embora eu tenha visto alguns pontos na implementação, um pouco diferente do que eu teria feito, mas isso é apenas bagatelas.
Eis o que é interessante. Somente o que está no Expert Advisor é impresso na mesa giratória. Mas como posso utilizá-lo em meu benefício?
Eu não entendo a pergunta. Ele substitui a função Print(). Emite todas as mensagens para a janela do acusador. Você pode definir cores para cada linha de uma mensagem (como prioridade de mensagem). Mais conveniente do que imprimir. Esse é todo o uso.
Há uma nova dor de cabeça. Eis o que é preciso para que isso aconteça:
1. Há uma série de ordens no mercado, ou seja, há ordens de mercado e ordens pendentes no mercado o tempo todo.
2. Em um certo momento em que a última ordem aberta até agora é fechada por um TP, precisamos fechar todas as ordens que foram abertas e apagar todas as ordens pendentes também.
Eu o fiz desta maneira (coloquei na função de início()):
for (int ord=OrdersTotal()-1; ord>=0; ord--)
{
if (!OrderSelect(ord,SELECT_BY_POS)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
g_ticket = OrderTicket();
g_type = OrderType();
// Блок модификации ордеров if (i_sl != 0 || i_tp != 0)
{
if (OrderStopLoss() == 0 && OrderTakeProfit() == 0)
{
OrdersModifyer(g_ticket);
}
}
// Закрытие всех ордеров, если последний ордер закрытif (GetLastOrderState() != 0)
{
if (g_type > 1)
{
DeletePendingOrders(g_ticket);
}
else
{
CloseMarketOrders(g_ticket);
}
}
}
Função GetLastOrderState() verifica se a última encomenda está fechada:
//+-------------------------------------------------------------------------------------+//| Получаем состояние последней позиции (Открыта или закрыта) |//+-------------------------------------------------------------------------------------+datetime GetLastOrderState()
{
datetime lastOrderCloseTime = -1, // Время закрытия последнего ордера
lastOrderOpenTime = -1; // Время открытия последнего ордераfor (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
if (lastOrderOpenTime < OrderOpenTime())
lastOrderOpenTime = OrderOpenTime();
}
Comment("Время открытия последнего открытого ордера = ", lastOrderOpenTime);
for (int h=OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(h, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderOpenPrice() == lastOrderOpenTime)
lastOrderCloseTime = OrderCloseTime();
}
// Comment("Время закрытия последнего открытого ордера = ", lastOrderCloseTime);return (lastOrderCloseTime);
}
E depois funciona apagando ordens de mercado pendentes e fechando. Vejo que não está funcionando corretamente de alguma forma. Minha função está bem?
Entendo que a função está em ordem por idéia. Mas a lógica não está bem aqui. Você tem alguma idéia sobre este assunto? Acontece que, de qualquer forma, mesmo quando nenhuma das ordens da EA foi fechada pela TP, tudo é fechado num piscar de olhos depois de ter sido aberto pelo sinal...
Ainda assim, um bom e ágil proger. Como se todos os problemas fossem seus, pois esse destino retribuirá, inquestionavelmente, ou, se deparará com o graal.
yosuf: Ainda assim, um bom e simpático proger. Como se todos os problemas fossem dele, pois esse destino recompensará, inquestionavelmente, ou, se deparará com o graal.
Mas não havia nenhuma especificidade e, portanto, nenhuma dúvida. Eu não sei o que responder.... Você deve tentar explicar a situação da maneira mais clara possível para obter uma resposta.
Há uma nova dor de cabeça. Eis o que é preciso para que isso aconteça:
1. Há uma série de ordens no mercado, ou seja, há ordens de mercado e ordens pendentes no mercado o tempo todo.
2. Em um determinado momento, quando a última ordem aberta até agora é fechada por um TP, precisamos fechar todas as ordens que foram abertas e apagar todas as ordens pendentes também.
Eu o fiz desta forma (coloquei-o na função start() )):
Função GetLastOrderState() verifica se a última encomenda está fechada:
E depois funciona apagando ordens de mercado pendentes e fechando. Vejo que não está funcionando corretamente de alguma forma. Minha função está bem?
Entendo que a função está em ordem por idéia. Mas a lógica não é boa aqui. Você tem alguma idéia sobre este assunto? Acontece que, de qualquer forma, mesmo que nenhuma das ordens da EA tenha fechado na TP, tudo é fechado num piscar de olhos depois de ter sido aberto pelo sinal...
Victor, pegue a função testada e comprovada de Kim que verifica se uma posição é fechada pela TP:
isCloseLastPosByTake - Retorna uma bandeira para fechar a última posição no take. Encontrar em Apenas funções úteis E depois fechar tudo.
Olá a todos! A questão é a seguinte. Como medir a distância entre Alto e Baixo da primeira, segunda, terceira vela e prescrever a condição de que esta distância de cada vela não deve ser inferior a, digamos, 10 pontos. Agradecemos antecipadamente.
Aqui estão as variáveis do ambiente de mercado para ajudá-lo https://docs.mql4.com/ru/predefined/variables
Revolta dos robôs... :)
Aha ha ha ha. yosuf, Cyborg lhe enviou... )))))))
Aqui está um EA para testar a função. Ela contém a função em si e sua chamada. Antes de ligar, você tem que preparar uma mensagem, que pode ser de até quatro linhas. O comprimento de cada linha, se bem me lembro, não deve exceder 64 caracteres. É por isso que dividi uma mensagem em várias linhas. Cada linha de uma mensagem pode ser emitida em uma cor diferente. É um pouco claro no código - primeiro preparamos linhas de mensagem, depois chamamos a função. Não comentei muito lá - escrevi-o de uma só vez há muito tempo. Agora eu já esqueci para o que existe. Se eu tiver alguma dúvida, vou me lembrar, mas agora só me lembro das coisas necessárias.
E um peru:
É assim que é... Espero que você pegue o jeito.
É claro que posso fazer um subpavimento em vez de o fazer sair para o gráfico principal na janela do indicador, mas sou muito preguiçoso ... :)
Artem, eu vi seu código, o peru é a bomba: )))). Em essência, tudo está claro com mais, embora eu tenha visto alguns pontos na implementação, um pouco diferente do que eu teria feito, mas isso é uma coisa menor.
Eis o que é interessante. Somente o que está no perito é impresso no peru. Mas como você a utiliza em seu benefício?
Artem, eu vi seu código, o peru é a bomba: )))). Em essência, tudo está claro com mais, embora eu tenha visto alguns pontos na implementação, um pouco diferente do que eu teria feito, mas isso é apenas bagatelas.
Eis o que é interessante. Somente o que está no Expert Advisor é impresso na mesa giratória. Mas como posso utilizá-lo em meu benefício?
É uma função. Esse especialista é apenas para mostrar o que a função faz. Portanto, use essa função para exibir suas mensagens de sua EA.
Esse especialista só mostra como utilizá-lo.
É uma função. Esse especialista é apenas para mostrar o que a função faz. Portanto, use essa função para exibir suas mensagens de sua EA.
Esse especialista só mostra como utilizá-lo.
Embora sim... É uma função... Eu perdi o mais importante enquanto estava descobrindo :(
Há uma nova dor de cabeça. Eis o que é preciso para que isso aconteça:
1. Há uma série de ordens no mercado, ou seja, há ordens de mercado e ordens pendentes no mercado o tempo todo.
2. Em um certo momento em que a última ordem aberta até agora é fechada por um TP, precisamos fechar todas as ordens que foram abertas e apagar todas as ordens pendentes também.
Eu o fiz desta maneira (coloquei na função de início()):
Função GetLastOrderState() verifica se a última encomenda está fechada:
E depois funciona apagando ordens de mercado pendentes e fechando. Vejo que não está funcionando corretamente de alguma forma. Minha função está bem?
Entendo que a função está em ordem por idéia. Mas a lógica não está bem aqui. Você tem alguma idéia sobre este assunto? Acontece que, de qualquer forma, mesmo quando nenhuma das ordens da EA foi fechada pela TP, tudo é fechado num piscar de olhos depois de ter sido aberto pelo sinal...
Aha ha ha ha. yosuf, Cyborg lhe enviou... )))))))
Ainda assim, um bom e simpático proger. Como se todos os problemas fossem dele, pois esse destino recompensará, inquestionavelmente, ou, se deparará com o graal.
Mas não havia nenhuma especificidade e, portanto, nenhuma dúvida. Eu não sei o que responder.... Você deve tentar explicar a situação da maneira mais clara possível para obter uma resposta.
Há uma nova dor de cabeça. Eis o que é preciso para que isso aconteça:
1. Há uma série de ordens no mercado, ou seja, há ordens de mercado e ordens pendentes no mercado o tempo todo.
2. Em um determinado momento, quando a última ordem aberta até agora é fechada por um TP, precisamos fechar todas as ordens que foram abertas e apagar todas as ordens pendentes também.
Eu o fiz desta forma (coloquei-o na função start() )):
Função GetLastOrderState() verifica se a última encomenda está fechada:
E depois funciona apagando ordens de mercado pendentes e fechando. Vejo que não está funcionando corretamente de alguma forma. Minha função está bem?
Entendo que a função está em ordem por idéia. Mas a lógica não é boa aqui. Você tem alguma idéia sobre este assunto? Acontece que, de qualquer forma, mesmo que nenhuma das ordens da EA tenha fechado na TP, tudo é fechado num piscar de olhos depois de ter sido aberto pelo sinal...
Victor, pegue a função testada e comprovada de Kim que verifica se uma posição é fechada pela TP:
isCloseLastPosByTake - Retorna uma bandeira para fechar a última posição no take. Encontrar em Apenas funções úteis
E depois fechar tudo.