Eu também achei difícil para a EA abrir tantas encomendas. Eu tentei limitar o número de pedidos com este código
Ou seja, abrir um pedido somente às 10:00 horas. Mas o resultado é o mesmo.
2020.10.27 10:25:17.548 Core 1 272 Mb de memória utilizada incluindo 36 Mb de dados históricos, 64 Mb de dados de tick
Eu não conheço bem o MKL5, para ser honesto. Mas a lógica é coxa. Você precisa abrir um pedido. Isto é conseguido atribuindo uma variável de hora no início da função no carrapato e no final, atribuindo-a a outra variável. No meio, se as variáveis não forem iguais, você abre uma ordem. O exemplo acima, com minutos, é o mesmo.
inputint StopLoss=30; // Stop Lossinputint TakeProfit=100; // Take Profitinputdouble Lot=0.1; // Количество лотов для торговлиint A; //int tm;
//+------------------------------------------------------------------+voidOnTick()
{
//Print( "====================================================", TimeCurrent() ) ;//--- Объявляем структуры, которые будут использоваться для торговлиMqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросовMqlDateTime time_now; // Будет использоваться дляTimeCurrent(time_now);
if(!SymbolInfoTick(_Symbol,latest_price))
if(time_now.hour==10 && tm != time_now.hour) //на первом тике, когда time_now.hour станет 10 а tm еще 9
// и на следующем тике tm будет равно 10
{
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
mrequest.sl = NormalizeDouble(latest_price.ask + StopLoss*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask - TakeProfit*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_RETURN; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
}
tm= time_now.hour;return;
}
Eu não conheço bem o MKL5, para ser honesto. Mas a lógica é coxa. Você precisa de um pedido para abrir o mesmo. Isto é conseguido atribuindo uma variável de hora no início da função no carrapato e no final, atribuindo-a a outra variável. No meio, se as variáveis não forem iguais, você abre uma ordem. O exemplo acima, com minutos, é o mesmo.
é por isso que é recomendado tentar fazer o trabalho da EA somente com seus magiks
Se nossa tarefa é abrir um pedido a uma determinada hora uma vez por dia, então o algoritmo é o seguinte:
- iniciar EA, ele verifica o número de pedidos abertos, se o pedido com nosso mágico estiver aberto, então saia até o próximo tick
- se não houver ordens, a EA espera até que a hora e minutos atuais sejam maiores do que os dados
- desta vez chegou, a EA verificará o histórico de pedidos e, se não houver um pedido com nosso mágico nas últimas 24 horas, então ela fará um pedido e sairá - a saída é útil para não processar erros do servidor, se o pedido não tiver sido feito, então no próximo tick tentaremos fazê-lo novamente, ou seja, não precisamos organizar um ciclo para múltiplas aberturas de pedidos neste tick.... mas esta é uma questão de gosto e objetivos, é a implementação mais fácil ))))
é por isso que é recomendável tentar fazer o trabalho da EA exclusivamente com seus mágicos
Se a tarefa é abrir um pedido uma vez por dia a uma determinada hora, o algoritmo é o seguinte:
- iniciar EA, ele verifica o número de pedidos abertos, se o pedido com nosso mágico estiver aberto, então saia até o próximo tick
- se não houver ordens, a EA espera até que a hora e minutos atuais sejam maiores do que os dados
- desta vez chegou, a EA verificará o histórico de pedidos e, se não houver um pedido com nosso mágico nas últimas 24 horas, então ela fará um pedido e sairá - a saída é útil para não processar erros do servidor, se o pedido não tiver sido feito, então no próximo tick tentaremos fazê-lo novamente, ou seja, não precisamos organizar um ciclo para múltiplas aberturas de pedidos neste tick.... Mas esta é uma questão de gosto e objetivos e é a mais fácil implementação ))))
Ainda não alcançamos o nível de mágico de lá. É claro. Em 5 c, é claro, o dilema é se fazer um loop com análise de erro ou tentar abrir uma posição usando um tick. No caso de respostas longas, pode ser mais fácil no tique.
Eu não conheço bem o MKL5, para ser honesto. Mas a lógica é coxa. Você precisa de um pedido para abrir o mesmo. Isto é conseguido atribuindo uma variável de hora no início da função no carrapato e no final, atribuindo-a a outra variável. No meio, se as variáveis não forem iguais, você abre uma ordem. O exemplo acima, com minutos, é o mesmo.
Muito obrigado. O conhecimento que você me deu era exatamente o que me faltava. Eu tentei fazer o mesmo, mas por analogia com 4. Acontece que a analogia é equivocada neste caso. Mais uma vez, obrigado.
é por isso que é recomendável tentar fazer o trabalho da EA exclusivamente com seus mágicos
Se a tarefa é abrir um pedido uma vez por dia a uma determinada hora, o algoritmo é o seguinte:
- iniciar EA, ele verifica o número de pedidos abertos, se o pedido com nosso mágico estiver aberto, então saia até o próximo tick
- se não houver ordens, a EA espera até que a hora e minutos atuais sejam maiores do que os dados
- desta vez chegou, a EA verificará o histórico de pedidos e, se não houver um pedido com nosso mágico nas últimas 24 horas, então ela fará um pedido e sairá - a saída é útil para não processar erros do servidor, se o pedido não tiver sido feito, então no próximo tick tentaremos fazê-lo novamente, ou seja, não precisamos organizar um ciclo para múltiplas aberturas de pedidos neste tick.... mas esta é uma questão de gosto e objetivos e é a mais fácil implementação ))))
Obrigado pelas informações valiosas. Graças a você, minha compreensão do mql 5 aumentou e se aprofundou. Serei muito grato se você puder mostrar meu código como um exemplo de seu processo de pensamento. Isso me ajudará a assimilar sua idéia de forma rápida e precisa. Muito obrigado mais uma vez.
Aqui está meu código, onde eu escrevi incorretamente a condição de que um pedido deve abrir somente às 10:00
inputint StopLoss=30; // Stop Lossinputint TakeProfit=100; // Take Profitinputdouble Lot=0.1; // Количество лотов для торговлиint A; ////+------------------------------------------------------------------+voidOnTick()
{
//Print( "====================================================", TimeCurrent() ) ;//--- Объявляем структуры, которые будут использоваться для торговлиMqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросовMqlDateTime time_now; // Будет использоваться дляTimeCurrent(time_now);
if(!SymbolInfoTick(_Symbol,latest_price))
if(time_now.hour==10&&time_now.min==0)
{
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
mrequest.sl = NormalizeDouble(latest_price.ask + StopLoss*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask - TakeProfit*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_RETURN; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
}
return;
}
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Por favor me diga, é possível fazer esta escolha de fonte em um indicador?
Por que não? Faça seu próprio enumere e todos os problemas.........
Por que não? Faça seu próprio enumere e todos os problemas.........
Isso é claro, mas como posso solicitar uma lista de fontes instaladas?
Você é um comediante.
Com quem eu estava falando?
Perdi alguma coisa. Obrigado (risos) É isso aí!
Entendi. Obrigado pela ajuda.
Eu também achei difícil para a EA abrir tantas encomendas. Eu tentei limitar o número de pedidos com este código
Ou seja, abrir um pedido somente às 10:00 horas. Mas o resultado é o mesmo.
2020.10.27 10:25:17.548 Core 1 272 Mb de memória utilizada incluindo 36 Mb de dados históricos, 64 Mb de dados de tick
Eu não conheço bem o MKL5, para ser honesto. Mas a lógica é coxa. Você precisa abrir um pedido. Isto é conseguido atribuindo uma variável de hora no início da função no carrapato e no final, atribuindo-a a outra variável. No meio, se as variáveis não forem iguais, você abre uma ordem. O exemplo acima, com minutos, é o mesmo.
Isto é claro, mas como solicitar uma lista de fontes instaladas?
Acho que em seu exemplo, trata-se de uma lista caseira. Sem consultar o software.
Eu não conheço bem o MKL5, para ser honesto. Mas a lógica é coxa. Você precisa de um pedido para abrir o mesmo. Isto é conseguido atribuindo uma variável de hora no início da função no carrapato e no final, atribuindo-a a outra variável. No meio, se as variáveis não forem iguais, você abre uma ordem. O exemplo acima, com minutos, é o mesmo.
é por isso que é recomendado tentar fazer o trabalho da EA somente com seus magiks
Se nossa tarefa é abrir um pedido a uma determinada hora uma vez por dia, então o algoritmo é o seguinte:
- iniciar EA, ele verifica o número de pedidos abertos, se o pedido com nosso mágico estiver aberto, então saia até o próximo tick
- se não houver ordens, a EA espera até que a hora e minutos atuais sejam maiores do que os dados
- desta vez chegou, a EA verificará o histórico de pedidos e, se não houver um pedido com nosso mágico nas últimas 24 horas, então ela fará um pedido e sairá - a saída é útil para não processar erros do servidor, se o pedido não tiver sido feito, então no próximo tick tentaremos fazê-lo novamente, ou seja, não precisamos organizar um ciclo para múltiplas aberturas de pedidos neste tick.... mas esta é uma questão de gosto e objetivos, é a implementação mais fácil ))))
é por isso que é recomendável tentar fazer o trabalho da EA exclusivamente com seus mágicos
Se a tarefa é abrir um pedido uma vez por dia a uma determinada hora, o algoritmo é o seguinte:
- iniciar EA, ele verifica o número de pedidos abertos, se o pedido com nosso mágico estiver aberto, então saia até o próximo tick
- se não houver ordens, a EA espera até que a hora e minutos atuais sejam maiores do que os dados
- desta vez chegou, a EA verificará o histórico de pedidos e, se não houver um pedido com nosso mágico nas últimas 24 horas, então ela fará um pedido e sairá - a saída é útil para não processar erros do servidor, se o pedido não tiver sido feito, então no próximo tick tentaremos fazê-lo novamente, ou seja, não precisamos organizar um ciclo para múltiplas aberturas de pedidos neste tick.... Mas esta é uma questão de gosto e objetivos e é a mais fácil implementação ))))
Ainda não alcançamos o nível de mágico de lá. É claro. Em 5 c, é claro, o dilema é se fazer um loop com análise de erro ou tentar abrir uma posição usando um tick. No caso de respostas longas, pode ser mais fácil no tique.
Eu não conheço bem o MKL5, para ser honesto. Mas a lógica é coxa. Você precisa de um pedido para abrir o mesmo. Isto é conseguido atribuindo uma variável de hora no início da função no carrapato e no final, atribuindo-a a outra variável. No meio, se as variáveis não forem iguais, você abre uma ordem. O exemplo acima, com minutos, é o mesmo.
Muito obrigado. O conhecimento que você me deu era exatamente o que me faltava. Eu tentei fazer o mesmo, mas por analogia com 4. Acontece que a analogia é equivocada neste caso.
Mais uma vez, obrigado.
é por isso que é recomendável tentar fazer o trabalho da EA exclusivamente com seus mágicos
Se a tarefa é abrir um pedido uma vez por dia a uma determinada hora, o algoritmo é o seguinte:
- iniciar EA, ele verifica o número de pedidos abertos, se o pedido com nosso mágico estiver aberto, então saia até o próximo tick
- se não houver ordens, a EA espera até que a hora e minutos atuais sejam maiores do que os dados
- desta vez chegou, a EA verificará o histórico de pedidos e, se não houver um pedido com nosso mágico nas últimas 24 horas, então ela fará um pedido e sairá - a saída é útil para não processar erros do servidor, se o pedido não tiver sido feito, então no próximo tick tentaremos fazê-lo novamente, ou seja, não precisamos organizar um ciclo para múltiplas aberturas de pedidos neste tick.... mas esta é uma questão de gosto e objetivos e é a mais fácil implementação ))))
Obrigado pelas informações valiosas. Graças a você, minha compreensão do mql 5 aumentou e se aprofundou.
Serei muito grato se você puder mostrar meu código como um exemplo de seu processo de pensamento. Isso me ajudará a assimilar sua idéia de forma rápida e precisa.
Muito obrigado mais uma vez.
Aqui está meu código, onde eu escrevi incorretamente a condição de que um pedido deve abrir somente às 10:00
Aqui está meu código onde escrevi errado a condição, segundo a qual o pedido deve abrir somente às 10:00
Eu não escrevo em MQL5 puro. Você pode fazer um pedido usando a classe CTrade SB
procurar na CTrade artigos sobre o uso da SB