Olá, obrigado pela resposta. Consegui criar um script que atende às minhas expectativas, mas, infelizmente, ainda há dois erros que não consigo entender ou corrigir. Você saberia com quem entrar em contato para obter uma pequena ajuda? São apenas duas linhas de código que se registram como erros após a compilação...
Olá a todos e feliz ano novo! Vocês poderiam me dizer: como posso fazer para que meu script use um indicador do mercado?
Mais especificamente: há um indicador "Automatic Trendline" no mercado. Quero criar um robô com base nele, que abriria ou fecharia uma posição no momento em que o preço cruzasse essas linhas no indicador (bem, e sob condições adicionais especificadas).
Olá a todos e feliz ano novo! Como posso fazer para que meu script use um indicador do mercado?
Mais especificamente: há um indicador "Automatic Trendline" no mercado. Quero criar um robô com base nele, que abriria ou fecharia uma posição no momento em que o preço cruzasse essas linhas no indicador (bem, e sob condições adicionais especificadas).
Não há problema para mim. Para o mercado ou para o CodeBase, você não pode usar os ofícios de outra pessoa do mercado...
Para você, não há problema. Você não pode usar o artesanato de outra pessoa do marketplace ou do CodeBase...
Para você mesmo. Não sei como fazer isso. Não consigo encontrar o código em código aberto. Ou como inserir em meu código para que ele capture a posição das linhas.
Aqui está um exemplo de como adicionar um indicador baixado do Market a um Expert Advisor
// Глобальная переменная для хендла индикатораint tlHandle;
intOnInit() {
// Создаем хендл индикатора
tlHandle = iCustom(Symbol(), PERIOD_CURRENT, "Market\\Automatic Trendlines", false, 5, 15, clrRed, clrBlue, 2, "My Support", "My Resistance");
// Можем добавить индикатор на график, если хотим. // Для использования в расчетах это необязательноChartIndicatorAdd(ChartID(), 0, tlHandle);
// Вызовем один раз OnTick(), чтобы на выходных у нас что-то в логе отобразилосьOnTick();
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason) {}
voidOnTick() {
// Объявляем массивы для буферов индикатораdouble tlBuffer0[], tlBuffer1[]; // ,tlBuffer1, ...int res;
// Копируем нужное количество значений из индикаторных буферов в массивы
res = CopyBuffer(tlHandle, 0, 0, 100, tlBuffer0);
res = CopyBuffer(tlHandle, 1, 0, 100, tlBuffer1);
// У разных индикаторов различное количество индикаторных буферов, // числа из которых используются для построения линий, значков, цветовых меток на графике// Сколько их у данного индикатора и как используются их числа исследуйте самостоятельно// res = CopyBuffer(tlHandle, 2, 0, 100, tlBuffer2);// Пользуемся полученными значениямиArrayPrint(tlBuffer0);
ArrayPrint(tlBuffer1);
}
Se você não for forçar a atribuição de valores numéricos aos itens da enumeração (a julgar pelo exemplo, você não fará isso), poderá fazer assim:
// Объявляем перечислениеenum ENUM_NAME {
ENAME_1,
ENAME_JSDF,
ENAME_ERT,
ENAME_QWERTY,
ENAME_FEF
};
// Обявляем константу, хранящую количество элементов перечисления#define ENUM_NAME_SIZE 5// Массив для хранения элементов перечисления
ENUM_NAME E_NAME[ENUM_NAME_SIZE];
intOnInit() {
// Заполняем массив значениями, преобразуя к типу ENUM_NAMEfor(int i = 0; i < ENUM_NAME_SIZE; i++) {
E_NAME[i] = (ENUM_NAME) i;
}
// Пользуемся массивомArrayPrint(E_NAME);
for(int i = 0; i < ENUM_NAME_SIZE; i++) {
Print(EnumToString(E_NAME[i]));
}
return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason) {}
Nesse caso, você precisará alterar também a constante que armazena o número de elementos ao adicionar elementos à enumeração.
Além disso, é melhor usar o prefixo ENUM_ apenas para o nome da própria enumeração e usar outro prefixo para seus elementos. Essa convenção é usada em todas as enumerações MQL padrão.
Se você não forçar a atribuição de valores numéricos aos itens da enumeração (a julgar pelo exemplo, você não fará isso), poderá fazer o seguinte:
Nesse caso, você precisará alterar a constante que armazena o número de itens ao adicionar itens à enumeração também.
Além disso, é melhor usar o prefixo ENUM_ somente para o nome da própria enumeração e usar outro prefixo para seus elementos. Essa convenção é usada em todas as enumerações MQL padrão.
Obrigado por sua ajuda. Estou usando o ENUM há tantos anos que nem me ocorreu ler a ajuda.
Por via das dúvidas, é mais fácil escrevê-los em uma linha, como mostrei, do que em uma matriz de linhas separadas.
Olá,
Tente pesquisar no mercado soluções prontas - https://www.mql5.com/fr/search#!keyword=money%20management&module=mql5_module_market
Você também pode solicitar uma solução personalizada do Freelance - https://www.mql5.com/fr/job
Olá a todos e feliz ano novo! Vocês poderiam me dizer: como posso fazer para que meu script use um indicador do mercado?
Mais especificamente:
há um indicador "Automatic Trendline" no mercado. Quero criar um robô com base nele, que abriria ou fecharia uma posição no momento em que o preço cruzasse essas linhas no indicador (bem, e sob condições adicionais especificadas).
Olá a todos e feliz ano novo! Como posso fazer para que meu script use um indicador do mercado?
Mais especificamente:
há um indicador "Automatic Trendline" no mercado. Quero criar um robô com base nele, que abriria ou fecharia uma posição no momento em que o preço cruzasse essas linhas no indicador (bem, e sob condições adicionais especificadas).
Não há problema para mim. Para o mercado ou para o CodeBase, você não pode usar os ofícios de outra pessoa do mercado...
Para você, não há problema. Você não pode usar o artesanato de outra pessoa do marketplace ou do CodeBase...
Para você mesmo. Não sei como fazer isso. Não consigo encontrar o código em código aberto. Ou como inserir em meu código para que ele capture a posição das linhas.
Olá, @Rad89
Você precisa das funções iCustom() e CopyBuffer().
Aqui está um exemplo de como adicionar um indicador baixado do Market a um Expert Advisor
enum ENUM_NAME { ENUM_1, ENUM_jsdf .... ENUM_FEF; };Como alocar memória para a matriz E_NAME[] de modo que haja memória suficiente para todos os valores ENUM_NAME possíveis (sem repetições)?E inicializar E_NAME[] com todos os valores possíveis?
Olá, @pivomoe
Se você não for forçar a atribuição de valores numéricos aos itens da enumeração (a julgar pelo exemplo, você não fará isso), poderá fazer assim:
Nesse caso, você precisará alterar também a constante que armazena o número de elementos ao adicionar elementos à enumeração.
Além disso, é melhor usar o prefixo ENUM_ apenas para o nome da própria enumeração e usar outro prefixo para seus elementos. Essa convenção é usada em todas as enumerações MQL padrão.
Olá, @pivomoe
Se você não forçar a atribuição de valores numéricos aos itens da enumeração (a julgar pelo exemplo, você não fará isso), poderá fazer o seguinte:
Nesse caso, você precisará alterar a constante que armazena o número de itens ao adicionar itens à enumeração também.
Além disso, é melhor usar o prefixo ENUM_ somente para o nome da própria enumeração e usar outro prefixo para seus elementos. Essa convenção é usada em todas as enumerações MQL padrão.
Obrigado por sua ajuda. Estou usando o ENUM há tantos anos que nem me ocorreu ler a ajuda.