Aloco memória a eles, é claro. A uma profundidade não maior que a necessária para os cálculos e depuração. No fragmento dado, são 30, o que é mais do que suficiente. Se em algum lugar for necessário calcular, por exemplo, o desvio padrão de profundidade 50, então o cache deve ser aumentado. E é apenas para agilizar os cálculos.
#include <Template\Objects\COrder.mqh>
#include <Template\Objects\CPosition.mqh>
COrder *order1,*order2;
CPosition *pos1,*pos2;
//----------------------------------------------------------------------intOnInit()
{
order1=new COrder(NULL,ORDER_TYPE_BUY,0.2,0.0,0.0,0.0);
order2=new COrder(NULL,ORDER_TYPE_SELL,0.1,0.0,0.0,0.0);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
delete order1;
delete order2;
delete pos1;
delete pos2;
}
//+------------------------------------------------------------------+voidOnTick()
{
CheckOrder(order1,pos1);
CheckOrder(order2,pos2);
if (CheckPointer(pos1)&&CheckPointer(pos2)) pos1.CloseBy(pos2);
if (CheckPointer(pos1)&&pos1.Control()>POSITION_MUST_CLOSE) delete pos1;
if (CheckPointer(pos2)&&pos2.Control()>POSITION_MUST_CLOSE) delete pos2;
}
voidOnTradeTransaction(constMqlTradeTransaction& trans,
constMqlTradeRequest& request,
constMqlTradeResult& result)
{
if (CheckPointer(order1)) order1.TradeTransaction(trans,request,result);
if (CheckPointer(order2)) order2.TradeTransaction(trans,request,result);
}
//-----------------------------------------------------------------void CheckOrder(COrder* &order, CPosition* &position){
if (!CheckPointer(order)) return;
switch(order.Control()){
case ORDER_FULL: position=NewPosition(order);
Print(position.GetTicket()," Ok");
case ORDER_REMOVE:
case ORDER_ERROR: delete order;}}
//-------------------------------------------------------------------
CPosition* NewPosition(COrder* &order) {returnCheckPointer(order)&&PositionSelectByTicket(order.GetTicket())?new CPosition():NULL;}
Não vou mostrar as bibliotecas. O arquivo do ex5 está anexado.
CloseBy foi feito no scratch, até agora não havia necessidade, mas graças aos "fracos", a única coisa que resta é fazer as mudanças nas posições após o CloseBy
No futuro, haverá uma classe de invólucro para COrder e CPostion
Vou tentar explicar o que está sendo feito em palavras :-)
Suponhamos que precisamos de um consultor especializado. Em primeiro lugar, precisamos da mais simples que se comercializa por cruzamento de fractais e paradas de fuga por fractais. Ou seja, no terminal, ficaria assim:
O que está circulado em PRETO é a linha 1 da tabela. Aqueles dados que o Consultor Especialista leva em conta em seus algoritmos.
O objetivo do caso de uso que foi dado é descrever da maneira mais compacta possível o que existe nesta área, como é contado e o que o complementa com o Expert Advisor. Quais cálculos são feitos com base nestes dados.
Na minha opinião, a coisa mais fácil a fazer é 1) liste estes campos nomeando-os, ou seja, liste-os no ENUM 2.) escrever uma função simples, que pelo nome da ENUM e da barra dá seus valores ao Expert Advisor.
Para um programador comum, existe uma certa metodologia (passos claramente marcados) de desenvolvimento de Expert Advisors simples:
1. Definir a Entrada
2. Descrever e aumentar os dados escrevendo fórmulas; adicionar colunas conforme necessário.
3. Especificar quais dados da tabela resultante são utilizados e onde.
Para armazenar dados, existe uma classe DataFrame que armazena dados "por coluna" que fornece acesso por índices, cache de dados e cálculos sob demanda.
Sobre esta fina (não há muito código, apenas o estritamente necessário para o caso de uso), podemos desenvolver vários Expert Advisors. A tabela está contando, os sinais são recebidos e as negociações são abertas.
É claro, não é suficiente :-) Então, o projeto acaba de ser lançado... E não existe uma solução pronta, é um projeto. É um projeto que acaba de nascer e está se desenvolvendo.
Portanto, um roteiro, não um EA. Mas mesmo com uma EA você demonstrou perfeitamente a diferença entre o MT4 e o MT5. Uma das variantes tem apenas uma linha. E a segunda, infelizmente, falhou.
Portanto, um roteiro, não um EA. Mas mesmo com uma EA você demonstrou perfeitamente a diferença entre o MT4 e o MT5. Há apenas uma linha em uma das variantes.
Vamos lá, CloseBy, caso você não tenha notado, eu tenho: pos1.CloseBy(pos2), todo o resto é abrir pedidos e verificar operações. No mt4 você também precisa abrir duas posições primeiro e fornecer um cheque para sua abertura. Talvez você também afixará o código de trabalho no estúdio, apenas para comparação.
Vou tentar explicar o que está sendo feito em palavras :-)
Suponhamos que precisamos de um consultor especializado. Em primeiro lugar, precisamos da mais simples que se comercializa por cruzamento de fractais e paradas de fuga por fractais. Ou seja, no terminal, ficaria assim:
O que está circulado em PRETO é a linha 1 da tabela. Aqueles dados que o Consultor Especialista leva em conta em seus algoritmos.
O objetivo do caso de uso que foi dado é descrever da maneira mais compacta possível o que existe nesta área, como é contado e o que o complementa com o Expert Advisor. Quais cálculos são feitos com base nestes dados.
Na minha opinião, a coisa mais fácil a fazer é 1) liste estes campos nomeando-os, ou seja, liste-os no ENUM 2.) escrever uma função simples, que pelo nome da ENUM e da barra dá seus valores ao Expert Advisor.
Para um programador comum, existe uma certa metodologia (passos claramente marcados) de desenvolvimento de Expert Advisors simples:
1. Definir a Entrada
2. Descrever e completar os dados escrevendo fórmulas; adicionar colunas conforme necessário.
3. Especificar quais dados da tabela resultante são utilizados e onde.
Para armazenar dados, existe uma classe DataFrame que armazena dados "por coluna" que fornece acesso por índices, cache de dados e cálculos sob demanda.
Sobre esta fina (não há muito código, apenas o estritamente necessário para o caso de uso), podemos desenvolver vários Expert Advisors. A tabela está contando, os sinais são recebidos e as negociações são abertas.
É claro, não é suficiente :-) Então, o projeto acaba de ser lançado... E não existe uma solução pronta, é um projeto. É um projeto que acaba de nascer e está se desenvolvendo.
Para o pensamento geral, um exemplo de uma classe de embalagem para Ichimoku, mas em mql4.
Para o pensamento geral, um exemplo de uma classe de embalagem para Ichimoku, mas em mql4.
Para qual componente Ichimoku você quer um invólucro? E o mais importante: por que e de que tipo? apenas conversando ? você pode, porque não...
PS/ Você já viu o Excel ? Na visão DataFrame, os Ishimocks terão o mesmo aspecto... Assim como todos os outros... Os comerciantes trabalham com mesas, na verdade. Um gráfico é apenas uma representação parcial (vista) de uma tabela de resumo. Portanto, estes dados devem ser tratados como tabelas. Do ponto de vista do comerciante - o que é um objeto de programa? Não é nada. Não existem tais coisas em sua vida prática.
Vamos lá, CloseBy, caso você não tenha notado, eu tenho: pos1.CloseBy(pos2), tudo mais abrindo pedidos e verificando operações.
Não é assim que funciona.
No mt4 você também precisa abrir duas posições primeiro e fornecer um cheque para sua abertura. Talvez você também afixará o código de trabalho no estúdio, apenas para comparação.
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.
Aloco memória a eles, é claro. A uma profundidade não maior que a necessária para os cálculos e depuração. No fragmento dado, são 30, o que é mais do que suficiente. Se em algum lugar for necessário calcular, por exemplo, o desvio padrão de profundidade 50, então o cache deve ser aumentado. E é apenas para agilizar os cálculos.
Não há nada de errado com as perspectivas
Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais
Características da linguagem mql5, dicas e truques
fxsaber, 2018.02.15 11:48
Sugiro que você tente escrever um script em MQL5 com este tipo de lógica comercial (estilo MQL4 apenas para exibição de sentido rápido)
Não vou mostrar as bibliotecas. O arquivo do ex5 está anexado.
CloseBy foi feito no scratch, até agora não havia necessidade, mas graças aos "fracos", a única coisa que resta é fazer as mudanças nas posições após o CloseBy
No futuro, haverá uma classe de invólucro para COrder e CPostion
Vou tentar explicar o que está sendo feito em palavras :-)
Suponhamos que precisamos de um consultor especializado. Em primeiro lugar, precisamos da mais simples que se comercializa por cruzamento de fractais e paradas de fuga por fractais. Ou seja, no terminal, ficaria assim:
O que está circulado em PRETO é a linha 1 da tabela. Aqueles dados que o Consultor Especialista leva em conta em seus algoritmos.
O objetivo do caso de uso que foi dado é descrever da maneira mais compacta possível o que existe nesta área, como é contado e o que o complementa com o Expert Advisor. Quais cálculos são feitos com base nestes dados.
Na minha opinião, a coisa mais fácil a fazer é
1) liste estes campos nomeando-os, ou seja, liste-os no ENUM
2.) escrever uma função simples, que pelo nome da ENUM e da barra dá seus valores ao Expert Advisor.
Para um programador comum, existe uma certa metodologia (passos claramente marcados) de desenvolvimento de Expert Advisors simples:
1. Definir a Entrada
2. Descrever e aumentar os dados escrevendo fórmulas; adicionar colunas conforme necessário.
3. Especificar quais dados da tabela resultante são utilizados e onde.
Para armazenar dados, existe uma classe DataFrame que armazena dados "por coluna" que fornece acesso por índices, cache de dados e cálculos sob demanda.
Sobre esta fina (não há muito código, apenas o estritamente necessário para o caso de uso), podemos desenvolver vários Expert Advisors. A tabela está contando, os sinais são recebidos e as negociações são abertas.
É claro, não é suficiente :-) Então, o projeto acaba de ser lançado... E não existe uma solução pronta, é um projeto. É um projeto que acaba de nascer e está se desenvolvendo.
Obrigado pelos "fracos".
Portanto, um roteiro, não um EA. Mas mesmo com uma EA você demonstrou perfeitamente a diferença entre o MT4 e o MT5. Uma das variantes tem apenas uma linha. E a segunda, infelizmente, falhou.
Portanto, um roteiro, não um EA. Mas mesmo com uma EA você demonstrou perfeitamente a diferença entre o MT4 e o MT5. Há apenas uma linha em uma das variantes.
Vamos lá, CloseBy, caso você não tenha notado, eu tenho: pos1.CloseBy(pos2), todo o resto é abrir pedidos e verificar operações. No mt4 você também precisa abrir duas posições primeiro e fornecer um cheque para sua abertura. Talvez você também afixará o código de trabalho no estúdio, apenas para comparação.
:Vou tentar explicar o que está sendo feito em palavras :-)
Suponhamos que precisamos de um consultor especializado. Em primeiro lugar, precisamos da mais simples que se comercializa por cruzamento de fractais e paradas de fuga por fractais. Ou seja, no terminal, ficaria assim:
O que está circulado em PRETO é a linha 1 da tabela. Aqueles dados que o Consultor Especialista leva em conta em seus algoritmos.
O objetivo do caso de uso que foi dado é descrever da maneira mais compacta possível o que existe nesta área, como é contado e o que o complementa com o Expert Advisor. Quais cálculos são feitos com base nestes dados.
Na minha opinião, a coisa mais fácil a fazer é
1) liste estes campos nomeando-os, ou seja, liste-os no ENUM
2.) escrever uma função simples, que pelo nome da ENUM e da barra dá seus valores ao Expert Advisor.
Para um programador comum, existe uma certa metodologia (passos claramente marcados) de desenvolvimento de Expert Advisors simples:
1. Definir a Entrada
2. Descrever e completar os dados escrevendo fórmulas; adicionar colunas conforme necessário.
3. Especificar quais dados da tabela resultante são utilizados e onde.
Para armazenar dados, existe uma classe DataFrame que armazena dados "por coluna" que fornece acesso por índices, cache de dados e cálculos sob demanda.
Sobre esta fina (não há muito código, apenas o estritamente necessário para o caso de uso), podemos desenvolver vários Expert Advisors. A tabela está contando, os sinais são recebidos e as negociações são abertas.
É claro, não é suficiente :-) Então, o projeto acaba de ser lançado... E não existe uma solução pronta, é um projeto. É um projeto que acaba de nascer e está se desenvolvendo.
Para o pensamento geral, um exemplo de uma classe de embalagem para Ichimoku, mas em mql4.
Para o pensamento geral, um exemplo de uma classe de embalagem para Ichimoku, mas em mql4.
Para qual componente Ichimoku você quer um invólucro? E o mais importante: por que e de que tipo?
apenas conversando ? você pode, porque não...
PS/ Você já viu o Excel ? Na visão DataFrame, os Ishimocks terão o mesmo aspecto... Assim como todos os outros... Os comerciantes trabalham com mesas, na verdade. Um gráfico é apenas uma representação parcial (vista) de uma tabela de resumo. Portanto, estes dados devem ser tratados como tabelas.
Do ponto de vista do comerciante - o que é um objeto de programa? Não é nada. Não existem tais coisas em sua vida prática.
Vamos lá, CloseBy, caso você não tenha notado, eu tenho: pos1.CloseBy(pos2), tudo mais abrindo pedidos e verificando operações.
Não é assim que funciona.
No mt4 você também precisa abrir duas posições primeiro e fornecer um cheque para sua abertura. Talvez você também afixará o código de trabalho no estúdio, apenas para comparação.
Não funciona assim.
Escrevi isso com o controle da abertura dessas mesmas ordens.