Olá a todos!
Eu gostaria de saber se é possível e se sim qual o caminho pra receber uma condição dentro de um input e jogar isso pra um if, como por exemplo, pra uma condição de abertura de posição.
Sabendo que não é possível jogar essa string diretamente dentro do if(sim, eu tentei kk) pois a string não tem nenhuma condição booleana, como eu consigo tratar isso. Receber por exemplo um comando "candle[1].close > candle[1].high" em um input e trabalhar com isso em if.
Olá Henrique
Não sei se entendi muito bem a sua dúvida (receber uma condição dentro de um input). Todas as variáveis input são estáticas, uma vez que o EA inicia, não podem sofrer modificação. Se não for isso, cole aqui seu código para que eu possa tentar te ajudar melhor :)
Olá Henrique
Não sei se entendi muito bem a sua dúvida (receber uma condição dentro de um input). Todas as variáveis input são estáticas, uma vez que o EA inicia, não podem sofrer modificação. Se não for isso, cole aqui seu código para que eu possa tentar te ajudar melhor :)
Olá Eduardo!
#property copyright "#" #property link "#" #property version "1.00" #include <Trade\Trade.mqh> CTrade trade; input string TradeRulesBuy = "candle[1].close > candle[2].high"; input string TradeRulesSell = "candle[1].close < candle[2].low"; MqlRates candles[]; MqlTick tick; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- ArraySetAsSeries(candles,true); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- CopyRates(_Symbol,PERIOD_CURRENT,0,5,candles); SymbolInfoTick(_Symbol,tick); if(TradeRulesBuy){ trade.Buy(1,_Symbol,tick.ask,tick.ask-300,tick.ask+250,NULL); } } //+------------------------------------------------------------------+
Então, o que eu tentei explicar acima, foi isso, pegar o input TradeRulesBuy(regras de entrada de compra) ou TradeRulesSell(regras de entrada de venda) e utilizar isso como condição de entrada, mas não tem como utilizar string dentro de if, imagino que deve ter algum tipo de tratamento dessa string que ainda não tenho conhecimento de como fazer, ou até mesmo outra forma de fazer isso.
Este seu input é desnecessário, você tem que usar a condição dentro do IF diretamente:
if(candles[1].close > candles[2].high) trade.Buy(1,_Symbol,tick.ask,tick.ask-300,tick.ask+250,NULL); if(candles[1].close < candles[2].low) trade.Sell.....
Você usa candle 1 pois quer ver o resultado do último fechado, certo? Se você quer avaliar o valor do candle atual ainda aberto tem que usar o elemento 0.
Este seu input é desnecessário, você tem que usar a condição dentro do IF diretamente:
Você usa candle 1 pois quer ver o resultado do último fechado, certo? Se você quer avaliar o valor do candle atual ainda aberto tem que usar o elemento 0.
Sim Eduardo. Fazer isso da forma que você citou é simples. Mas o que estou tentando fazer é justamente dar a possibilidade do usuário definir a condição por input, a dificuldade e justamente pegar a condição via input e usar isso como condição.
Sim Eduardo. Fazer isso da forma que você citou é simples. Mas o que estou tentando fazer é justamente dar a possibilidade do usuário definir a condição por input, a dificuldade e justamente pegar a condição via input e usar isso como condição.
Inputs são diretivas de compilação.
o que você quer fazer se chama Marco-Expansão. o MQL5 não suporta isso.
O que você pode fazer é criar seu próprio Parser. Você pode sub-dividir o seu IF em várias partes, cada uma com seu INPUT.
Ex:
input #1: lista com a variavel a ser checada
input #2; Operador
input #3: campo livre para o usuario digitar o valor que quer...
depois você traduz/trata o que espera dentro do indicador/expert...
;)
Inputs são diretivas de compilação.
o que você quer fazer se chama Marco-Expansão. o MQL5 não suporta isso.
O que você pode fazer é criar seu próprio Parser. Você pode sub-dividir o seu IF em várias partes, cada uma com seu INPUT.
Obrigado Flavio, já deu um caminho rss..
Descreva exatamente o tipo de regras que você quer que o usuário possa escrever ou selecionar. Vamos ver se conseguimos chegar numa solução :)
É trabalhar com os candles mesmo, o próprio usuário escrever toda a formula, exemplo:
candle[1].low > candle[2].low && candle[1].high > candle[1].high ... candle[1].high > candle[2].high && candle[1].close < candle[1].open ... candle[1].high - candle[1].low < candle[1].low
Obrigado Flavio, já deu um caminho rss..
É trabalhar com os candles mesmo, o próprio usuário escrever toda a formula, exemplo:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Olá a todos!
Eu gostaria de saber se é possível e se sim qual o caminho pra receber uma condição dentro de um input e jogar isso pra um if, como por exemplo, pra uma condição de abertura de posição.
Sabendo que não é possível jogar essa string diretamente dentro do if(sim, eu tentei kk) pois a string não tem nenhuma condição booleana, como eu consigo tratar isso. Receber por exemplo um comando "candle[1].close > candle[1].high" em um input e trabalhar com isso em if.