Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1269
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Alexei, obrigado! Está claro agora que isso não é possível.
É verdade, eu não tenho exatamente mql4. Estou tentando mudar os dados através da classe CiOpen. Estou confuso com o método Update, que deveria mudar o elemento em uma posição especificada da matriz.
Copie em suas variáveis/arranjos e trabalhe com eles já.
Assim o fiz.
Sou muito grato por sua ajuda! Sou bastante novo em programação.
Enquanto estudava, enfrentei dificuldades para implementar o código. Há um artigo https://www.mql5.com/ru/articles/3336 Não consigo entender como é feita a comparação
if(!CompareTiks(n_tiks[i], m_ticks[k]))
Suspeito que "Coleta de Dados Modelo" é usado e existe um método tão global"Comparar". Mas a listagem do artigo não dá em nenhum lugar como fazer o compilador entender que eu deveria usar "Comparar" de " Coleta de Modelos deDados". Não encontrei nenhum exemplo de métodos globais de"Coleta de Modelos de Dados".
A seguinte entrada na descrição do método global não irá alterar o resultado
template<typename T>
int Compare(
T x, // primeiro valor
T y // segundo valor
);
Como resultado, eu tenho o seguinte código (ou melhor, o código tem a mim)
#ifndef MyInclude
#define MyInclude
//template<typename T>
//interface ICollection
//#include <Generic\Interfaces\ICollection.mqh>
template<typename T>
int Compare(
T x, // primeiro valor
T y // segundo valor
);
classe CMarketBook
{
privado:
string m_symbol;
MqlTick m_ticks[];
MqlTick LastTicks[];
protegidos:
public:
void CMarketBook::CompareTicks(void);
};
//+ +
//|Compare two ticks colllection and find new ticks |
//+ +
void CMarketBook::CompareTicks(void)
{
MqlTick n_ticks[];
ulong T_begin = (TimeCurrent()-(1*20))*1000;//20sec ago
m_symbol = Symbol();
int Total = CopyTicks(m_symbol, n_ticks, COPY_TICKS_ALL, T_begin, 1000);
if (Total < 1) {printf("Failed to get ticks"); return;}
if (ArraySize(m_ticks) == 0) {ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY); return;}
int k = ArraySize(m_ticks)-1;
int n_t = 0;
int Limit_comp = 20;
int Comp_success = 0;
// Experimente novos tiquetaques recebidos
para (int i = ArraySize(n_ticks)-1; i>=0 && k>=0; i--)
{
if (!Compare(n_ticks[i], m_ticks[k]))
{
n_t = ArraySize(n_ticks) - i;
k = ArraySize(m_ticks) - 1;
Comp_success = 0;
}
else
{
Comp_success += 1;
if (Comp_success >= Limit_comp) break;
k--;
};
};
//Memorize ticks recebidos
ArrayResize(m_ticks, Total);
ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY);
//Calculate start index of new ticks and copy it into the buffer for access
ArrayResize(LastTicks, n_t);
if (n_t > 0)
{
int index = ArraySize(n_ticks) - n_t;
ArrayCopy(LastTicks, m_ticks, 0, index, n_t);
};
};
#endif
Ao compilar, um erro é gerado - "objeto é passado somente por referência" à linha se (!Compare(n_ticks[i], m_ticks[k])) apontando paran_ticks[i]
Boa tarde a todos.
Estou testando um consultor especialista Alpari MT4. Antes de fazer o teste, a MT sugere que eu defina o spread (ou o valor atual ou um específico).
Na Alpari, o spread está flutuando. É por isso que as configurações acima mencionadas de tamanho de propagação não me convém.
P. Qual função exibe na história os valores de spread para cada tick histórico?
Ou, como devo fazer para que minha EA abra e feche ordens considerando os valores de spread válidos no momento em que a ordem é aberta ou fechada?
Obrigado a todos por sua ajuda.
Boa tarde a todos.
Estou testando um consultor especialista Alpari MT4. Antes de testar a MT me sugere definir o valor de spread (atual ou qualquer valor em particular de oferecido).
Na Alpari, o spread está flutuando. É por isso que os valores de propagação acima mencionados não funcionam para mim.
P. Qual função exibe no histórico os valores de spread para cada tick histórico?
Ou, como devemos fazer para que nossa EA abra e feche ordens considerando os valores de spread válidos no momento da abertura ou fechamento da ordem?
Obrigado a todos por sua ajuda.
Você não pode fazer isso no MT4, mas você pode no MT5
Não em MT 4, em MT 5 você pode
Muito obrigado pelas valiosas informações.
Vou começar a estudar o mql5. Dizem que é muito semelhante ao mql4. Gostaria muito que você me dissesse como implementar minha idéia em mql5.
Muito obrigado pelas valiosas informações.
Vou começar a estudar o mql5. Dizem que é muito semelhante ao mql4. Eu ficaria muito grato a você se pudesse me dizer como o mql5 implementa minha idéia.
No mt5 você não precisa inventar nada.
Isto é legal. Obrigado pelas informações valiosas.
Se você quiser mudar rapidamente de mql4 para mql5, é melhor ler os manuais para mql4 e mql5 simultaneamente e prestar atenção às diferenças entre eles. Tudo é aprendido por comparação.....Bom dia a todos!
Eu comecei a estudar o mql5. Comecei estudando como as ordens são abertas. Entendi que o código para abrir um pedido está escrito em um arquivo separado. Agora domino este código e sua variante final para o comércio. Fiquei surpreso que a abertura do pedido em mql4 seja muito mais fácil e simples do que em mql5.
Gostaria de perguntar se tenho certeza de que já tenho o arquivo com o código para abrir o pedido e não preciso escrever este código. Se tal arquivo estiver disponível em algum lugar, então só preciso conectá-lo à minha EA e definir os valores dos parâmetros do pedido que preciso... Se existe tal arquivo, onde e como ele deve ser encontrado, e qual é seu nome.
Terei o maior prazer em lhe dar o nome do arquivo.