Como posso coletar e usar informações sobre o comércio? Preciso coletar informações sobre todas as posições da EA, seu volume, lucro, tipo, preço de abertura. E depois consulte as informações sobre a posição mais recente, ou a maior posição. Acho difícil escrever em arrays.
1. É necessário lidar com arrays?
2. É melhor usar um conjunto de estruturas ou diferentes matrizes?
3. Por que eu preciso de uma matriz dinâmica se eu tenho que alocar memória de qualquer maneira? Não é mais fácil usar uma matriz estática? Ou não podemos passar sem uma dinâmica, porque pode ser indexada ao contrário?
Exemplo de código sem oop, porque eu não poderia nem mesmo escrever esta construção, se não fosse muito incômodo, obrigado.
Por que construir qualquer coisa? Você precisa percorrer as posições e processar as informações - e não precisa montá-las. Tudo o que você coleta no mesmo momento é uma informação obsoleta.
1. Quando se trata de histórico comercial, as matrizes são normalmente dispensadas. Isto é mais ou menos como no exemplo:https://www.mql5.com/ru/docs/trading/historyselect. Vale a pena explorar todas as funções na coluna do lado esquerdo do link (e todos os exemplos lá).
2. Uma variedade de estruturas é muito útil. Mas as funções embutidas que podem ser aplicadas às matrizes multidimensionais - ArraySort() etc. - não funcionam com ele.
3. se você tiver certeza de que o tamanho inicial especificado da matriz é suficiente, você pode usar também matrizes estáticas. Se seu tamanho for razoável.
Por que recolher qualquer coisa? Você precisa percorrer os itens e processar as informações - e não precisa coletá-las. Tudo o que você coleta ao mesmo tempo é informação obsoleta.
int OnInit() { ENUM_POSITIONS_TYPE ar [1000]; //проинициализирую нулем еще, просто я не копирую, а вручную всё пишу, и некоторые очевидные куски не пишу. return(INIT_SUCCEEDED); } void OnDeinit(const int reason) {} void OnTick() { for(int index=PositionsTotal()-1; index>=0; index--) { ulong ticket=PositionGetTicket(index); PositionSelectByTicket(ticket); // И вот я готов вызывать функции для выуживания данных, только я не знаю //как их вписывать в массив.
1. Quando se trata de histórico comercial, as matrizes são normalmente dispensadas. Isto é mais ou menos como no exemplo:https://www.mql5.com/ru/docs/trading/historyselect. Vale a pena explorar todas as funções na coluna do lado esquerdo do link (e todos os exemplos lá).
2. Uma variedade de estruturas é muito útil. Mas as funções embutidas que podem ser aplicadas às matrizes multidimensionais - ArraySort() etc. - não funcionam com ele.
3. se você tiver certeza de que o tamanho inicial especificado da matriz é suficiente, você pode usar também matrizes estáticas. Se seu tamanho for razoável.
Não é com a história, eu quero analisar as posições abertas. Qual é a melhor maneira de fazer isso?
Quase o mesmo, mas sem HistóriaSelect(). Começamos com a função PositionsToatal() e depois por esse link exploramos todas as funções que começam com Position
Eu escrevo uma grade sem OOP. Preciso saber qual das posições em aberto é a maior, e é por meio de que tipo de negócios, comprar ou vender. Entendo que primeiro devo coletar dados de cada posição no loop, escrevê-los em um array e depois analisar o array ou tomar o elemento mais novo se ele for dinâmico com indexação reversa.
Você não precisa organizar as posições e procurar os altos e baixos à medida que avança.
Você não precisa percorrer a matriz e procurar o máximo e o mínimo à medida que avança.
Obrigado. Mas você pode nos dar um pequeno exemplo? Precisamos escrevê-lo para compará-lo, não é mesmo? E escreva-o onde mais, mas em uma matriz? Não consigo descobrir como fazer isso sem escrever. Estamos trabalhando com uma posição em um loop pass, como podemos comparar outra posição se ela estiver em outro loop pass?
Obrigado. Você pode nos dar um pequeno exemplo? Precisamos escrevê-lo para comparar, não é mesmo? E escreva-o onde, mas em uma matriz? Não consigo descobrir como fazer isso sem escrever. Estamos trabalhando com uma posição em um loop pass, como podemos comparar outra posição se ela está em outro loop pass?
int Magic=123; double maxBuyPrice=0; ulong maxBuyTicket=0; double minSellPrice=DBL_MAX; ulong minSellTicket=0; for(int i=0;i<PositionsTotal();i++){ ulong ticket=PositionGetTicket(i); if(ticket!=0){ long magic=PositionGetInteger(POSITION_MAGIC); string symbol=PositionGetString(POSITION_SYMBOL); if(magic==Magic && symbol==Symbol()){ long type=PositionGetInteger(POSITION_TYPE); if(type==POSITION_TYPE_BUY){ if(PositionGetDouble(POSITION_PRICE_OPEN)>maxBuyPrice){ maxBuyPrice=PositionGetDouble(POSITION_PRICE_OPEN); maxBuyTicket=ticket; // тут можно и другие данные позиции запоминать в переменные } } else if(type==POSITION_TYPE_SELL){ if(PositionGetDouble(POSITION_PRICE_OPEN)<minSellPrice){ minSellPrice=PositionGetDouble(POSITION_PRICE_OPEN); minSellTicket=ticket; // и тут } } } } } if(maxBuyTicket!=0){ } if(minSellTicket!=0){ }
Obrigado por esse exemplo.
long magic=PositionGetInteger(POSITION_MAGIC); string symbol=PositionGetString(POSITION_SYMBOL); if(magic==Magic && symbol==Symbol())
Pensei que eu era o único que preferia colocar dessa forma, em vez de escrever "não sei".
if(PositionGetInteger(POSITION_MAGIC)==Magic && PositionGetString(POSITION_SYMBOL)==Symbol())
hz significa "Eu gostaria de saber"... não me interpretem mal...
ps; ajuda a manter o controle de tudo durante a depuração do programa.
- 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
Como posso coletar e usar informações sobre o comércio? Preciso coletar informações sobre todas as posições da EA, seu volume, lucro, tipo, preço de abertura. E depois consulte as informações sobre a posição mais recente, ou a maior posição. Acho difícil escrever em arrays.
1. É necessário lidar com arrays?
2. É melhor usar um conjunto de estruturas ou diferentes matrizes?
3. Por que eu preciso de uma matriz dinâmica se eu tenho que alocar memória de qualquer maneira? Não é mais fácil usar uma matriz estática? Ou não podemos passar sem uma dinâmica, porque pode ser indexada ao contrário?
Exemplo de código sem oop, porque eu não poderia nem mesmo escrever esta construção, se você não se importa, obrigado.