escolher um nº de 1 a 100? Para isso basta digitar uma input de tipo integer !
input int iNum=1; // entre com um nº de 1 a 100
Agora, caso queira escolher uma opção entre 100 possibilidades, use o enumerador mesmo.
enum ENUM_TIPO_ESTRATEGIA { estrategia1, // B.Borlinger, Adx e stochastic estrategia2, // Retorno sobrevalor stochastic estrategia3, // Hilo estrategia4, // Posiçoes Adx DI+ e DI- estrategia5, // TR greater delta ATR estrategia6, // Cruzamento médias estrategia7, // Retorno B.Bands estrategia8, // The Single Bar estrategia9, // The Open Bar estrategia10, // Rompimento primeira barra estrategia11, // Super Trend Simple estrategia12, // Range weighted color estrategia13, // PTL indicator estrategia14, // AscTrend indicator estrategia15, // Chandes DMI estrategia16, // Delta Article estrategia17, // Momentum estrategia18, // Stoch signal estrategia19, // Double top estrategia20, // AfStar estrategia21, // SilverTrend estrategia22, // Bulls Bears Power estrategia23, // Reverse MA estrategia24, // Tabajara .. .. estrategia99 // PIN Bar } input ENUM_TIPO_ESTRATEGIA inpEstrategia = estrategia1; // Escolha a estratégia
Porém todos os artigos que estou olhando direcionam para usar a enum (Enumerador). Percebi que os dados nela são do tipo string
Enums são do tipo inteiro e não string. Rode esse exemplo.
enum ETypeTest { ZERO ,UM ,DOIS }; ETypeTest x = ZERO; ETypeTest y = UM; ETypeTest z = DOIS; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnStart() { //--- Print("X: ",x); Print("Y: ",y); Print("Z: ",z); }
Resultado:
Após a enumeração ser declarada, um novo tipo de dados de inteiro de 4 bytes aparece. A declaração do novo tipo de dados permite ao compilador controlar rigidamente os tipos de parâmetros passados, porque a enumeração introduz novas constantes nomeadas. No exemplo acima, a constante nomeada January tem valor igual a 0, February - 1, December - 11.
Rule: Se um certo valor não estiver atribuído a uma constante nomeada que é membro da enumeração, seu novo valor será formado automaticamente. Se ele é o primeiro membro da enumeração, o valor 0 será atribuído a ele. Para todos os subseqüentes membros, os valores serão calculados baseados no valor dos membros anteriores adicionando um.
Enums são do tipo inteiro sim. Rode esse exemplo.
Resultado:
Fala Jonathan blz ?
O problema é que o enum é um varchar... eu preciso de um valor em inteiro. O grande problema é que vou ter que colocar um if dentro da OnTick, transformando o varchar em um texto.
exemplo declarando enum no cabeçalho global :
enum(
1
2
3
..
100
)
depois na minha onTick eu teria que converter :
If enum = 1 then variavel inteira = 1
if enum = 2 then variavel inteira = 2
....
if enum = 2 then variavel inteira = 100
Isso irá atrapalhar a performace e deixar meu código grande.
Tem alguma forma de criar uma lista de valores no parâmetro de entrada de forma mais simples ? Assim eu pego o resultado dessa imput e carrego na minha variável.
Obrigado !
escolher um nº de 1 a 100? Para isso basta digitar uma input de tipo integer !
Agora, caso queira escolher uma opção entre 100 possibilidades, use o enumerador mesmo.
Fala Rogério blz ?
O problema é que o enum é um varchar... eu preciso de um valor em inteiro. O grande problema é que vou ter que colocar um if dentro da OnTick, transformando o varchar em um texto.
exemplo declarando enum no cabeçalho global :
enum(
1
2
3
..
100
)
depois na minha onTick eu teria que converter :
If enum = 1 then variavel inteira = 1
if enum = 2 then variavel inteira = 2
....
if enum = 2 then variavel inteira = 100
Isso irá atrapalhar a performace e deixar meu código grande.
Tem alguma forma de criar uma lista de valores no parâmetro de entrada de forma mais simples ? Assim eu pego o resultado dessa imput e carrego na minha variável.
Fala Jonathan blz ?
O problema é que o enum é um varchar... eu preciso de um valor em inteiro. O grande problema é que vou ter que colocar um if dentro da OnTick, transformando o varchar em um texto.
depois na minha onTick eu teria que converter :
If enum = 1 then variavel inteira = 1
Carlos,
Acho que vc está confundindo um pouco as coisas, enum não é texto, conforme a própria documentação explica " Após a enumeração ser declarada, um novo tipo de dados de inteiro de 4 bytes aparece", e varchar e texto é mesma coisa.
Agora uma coisa que não ficou claro é, vc quer que o seu user escolha um numero que esteja ente 0 e 100, ou uma variável que tenha um valor que representa um intervalo entre 0 a 100?
se for a primeira opção pq não usar um enumerador? e pq ter que atribuir o valor do enumerador a uma variável e não simplesmente fazer um if no enumerador?
Algo como:
enum ETypeTest { ZERO ,UM ,DOIS }; ETypeTest x = ZERO; void OnStart() { //--- if(x == ZERO) Print("condição para 0"); if(x == UM) Print("condição para 1"); if(x == DOIS) Print("condição para 2"); }
Olá Carlos Martins:
Não entendi bem sua pergunta porque para mim o tipo ENUM é uma inteira.
OnInit() { input ENUM_TIPO_ESTRATEGIA inpEstrategia = estrategia1; // Escolha a estratégia } onTick (); { variavel inteira = (int) inpEstrategia; //O casting é desnecessário pois o enum é um inteiro. }
ENUMs não são VarChars... Revisite a documentação...
Exemplo...
enum ML_TYPES { ML_TYPE_NONE=-1, // not used ML_TYPE_INT=1, // Numeric Integer ML_TYPE_DOUBLE=2, // Numeric w/Decimals ML_TYPE_STRING=3 // String (Text) ML_TYPE_WHATEVERYOUWANT=999 // ÓréVis! };
Inclusive esse enum, quando usado em INPUTs, o comentário é usado como descrição do próprio parâmetro...
;)
ENUMs não são VarChars... Revisite a documentação...
Exemplo...
Inclusive esse enum, quando usado em INPUTs, o comentário é usado como descrição do próprio parâmetro...
;)
Existe alguma alternativa, para no caso dos valores desejados não serem inteiros?
Ex:
enum LevelsFibbo { Level_1= 0.236, // First Level Level_2= 0.618, // Second Level ... };
Olá Amigos tudo bem?
Estou com a seguinte dificuldade preciso testar uma condição diferente do PERIOD_CURRENT e quero informar este Period por uma imput, como declaro esta input?
Para fazer este tipo de teste:
if ((iHigh(_Symbol, periodo)>iHigh(_Symbol, PERIOD_M5)
onde periodo é a imput declarada.
Gratidão pelas respostas! Abs!
- 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
Amigos, boa noite !
Estou tentando criar um parâmetro de entrada onde o usuário irá escolher um número de 1 a 100. Essa informação vai para uma variável do tipo int no meu EA.
Porém todos os artigos que estou olhando direcionam para usar a enum (Enumerador). Percebi que os dados nela são do tipo string e com isso eu teria que fazer vários ifs dentro do meu código para ler o enum e preencher minha variável com o dado númerico. O que do meu ponto de vista deixaria o código bem ruim.
Alguém teria um exemplo de como criar um parâmetro de entrada com uma lista de valores 1,2,3,4,5... ??
Obrigado !