Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 68

 
Vitaly Muzichenko:

É sem dimensões como está, mas é bidimensional, e você pode colocar um número de elementos sem dimensões em duas dimensões.

O que você está fazendo de qualquer forma, você tem alguma idéia de qual deve ser o resultado do trabalho que você faz? Ou você está inventando a lógica à medida que avança?

No exemplo atual, quero poder colocar um número infinito de pedidos com qualquer lote, a fim de evitar exceder os limites especificados.

Claro, conhecemos os limites, mas eu gostaria de fazer isso dessa maneira.

Procedo do fato de que se você especificar um elemento entre parênteses, ele será o último

Então eu tenho esse tipo de porcaria. Estava esperando uma ordem por ordem... lote? quero que o resultado (lote de um pedido *coeficiente) seja adicionado ao pedido em vez do lote

e a questão da recuperação de dados de lá

Quero obter o seguinte resultado, a meu ver

MyArray[0][0.01][0.01

MyArray[1][0.01]

MyArray[2][0.02]

etc....


void CalcOrders()

{

int CountOrders=0;

double MyArray [99][99];

for(i=OrdersTotal()-1; i>=0; i--)

     {

      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())

         && (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))

         CountOrders++;

         ArrayResize(MyArray,CountOrders+1);

         MyArray[CountOrders][0]=OrderLots();

         Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);

     }

}    

2017.01.13 12:51:14.372 2017.01.05 16:30:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01

 
trader781:

No exemplo atual, quero poder colocar um número infinito de pedidos com qualquer lote para não exceder seus limites.

É claro que todos conhecemos os limites, mas eu quero fazer desta maneira

Procedo do fato de que se você especificar um elemento entre parênteses, ele será o último

Então eu tenho esse tipo de porcaria. Estava esperando uma ordem por ordem... lote? quero que o resultado(lote de um pedido *coeficiente) seja adicionado ao pedido em vez do lote

E a questão da recuperação de dados a partir daí



void CalcOrders()

{

int CountOrders=0;

double MyArray [99][99];

for(i=OrdersTotal()-1; i>=0; i--)

     {

      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())

         && (OrderMagicNumber()==Magic) && (OrderType()==OP_SELL))

         CountOrders++;

         ArrayResize(MyArray,CountOrders+1);

         MyArray[CountOrders][0]=OrderLots();

         Print("MyArray[CountOrders][0]",MyArray[CountOrders][0]);

     }

}    

2017.01.13 12:51:14.372 2017.01.05 16:30:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.372 2017.01.05 16:25:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01
2017.01.13 12:51:14.371 2017.01.05 16:20:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.02
2017.01.13 12:51:14.371 2017.01.05 16:15:00  martin GBPUSD,M5: MyArray[CountOrders][0]0.01


Explique o que você precisa.

Vamos armazenar tudo em uma matriz, e depois?

Então giraremos a matriz e procuraremos a posição que você precisa, o que?

Qual posição, existe uma definição, ou por olho, eu olhei para a aba Comércio, sim, preciso 6, certo?
 
Alekseu Fedotov:

Você pode explicar o que você precisa?

Vamos colocar tudo em uma matriz, e depois?

Vamos girar a matriz, procurar a posição que você precisa, o quê?

Eu olho para a aba "Comércio", eu sei que preciso de 6, certo?

OnTick()

se a condição para abrir uma posição estiver correta

{open position}

se a condição de abertura de posição estiver correta

{encher a mesma quantidade }

Se o último lote for a posição 2 - vamos adicionar o lote *1,5 (a função encontrar o último irá retornar o segundo) e este será o terceiro

se esta for a quarta ordem

completar {lote zero+lote um}

se será a quinta ordem

preencher {lote 1 posição +lote 3}

Existe atualmente uma definição da última posição na lista

Precisamos escrevê-la em uma matriz e tirar a correta de uma vez porque não vejo outra forma de implementação no momento, então o número de ordens e posições deveria teoricamente ser infinito.

Eu mostrei o que fiz na função, não sei se está correto ou não.

Preciso retirar os dados e saber com antecedência qual ordem pode ser aberta em minha conta

Não pretendo que o sistema esteja funcionando, a implementação é importante

 
Bom tempo. Você pode aconselhar se deseja testar um EA e ele usa comandos para escrever e ler bits e arquivo csv, pois sabemos que há erros no modo de teste para usar operações com esses arquivos
 
Top2n:
Boa tarde. Você pode me informar se preciso testar um EA e ele usa comandos para escrever e ler bits e arquivo csv, pois sabemos que ocorrem erros no modo de teste quando usamos operações de arquivo.

Não ocorrem erros. Só escreve para uma pasta diferente se a bandeira não for usada

FILE_COMMON

4096

Localização do arquivo em pasta compartilhada de todos os terminais do cliente Arquivos comuns. Esta bandeira é usada ao abrir arquivos (FileOpen()), copiar arquivos (FileCopy(), FileMove()) e verificar a existência de arquivos (FileIsExist())

 
Alexey Viktorov:

Não ocorre nenhum erro. Só escreve para uma pasta diferente se a bandeira não for usada

FILE_COMMON

4096

Localização do arquivo em pasta compartilhada de todos os terminais do cliente Arquivos comuns. Esta bandeira é usada ao abrir arquivos (FileOpen()), copiar arquivos (FileCopy(), FileMove()) e verificar a existência de arquivos (FileIsExist())

Bem, eu uso FileOpen()

input string InpFileName="data.bin";
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = Open File Error

 
Top2n:

Bem, eu estou usando FileOpen()

input string InpFileName="data.bin";
input string InpDirectoryName="";
string path=InpDirectoryName+"//"+ InpFileName;

C:\Users\Rassvet\AppData\Roaming\MetaQuotes\Terminal\36A64B8C79A6163D85E6173B54096685\MQL5\Files

5004:ERR_FILE_CANNOT_OPEN = Erro de Abertura de Arquivo

FileOpen() não é uma bandeira... A bandeira é FILE_COMMON.

Se você não quiser escrever em uma pasta separada, não é necessário especificá-la como uma cadeia vazia no caminho. O desnecessário é destacado em amarelo.


 
Alexey Viktorov:

FileOpen() não é uma bandeira... A bandeira é FILE_COMMON.

Se você não quiser escrever em uma pasta separada, não é necessário especificá-la como uma cadeia vazia no caminho. O desnecessário é destacado em amarelo.


Há um contato de agradecimento
 
Olá!
Você pode me dizer onde eu posso ler sobre a propriedade estrita do #propriedade?
 
Leo59:
Olá!
Você pode me dizer onde posso ler sobre a propriedade estrita #propriedade?
Por exemplo, aqui https://docs.mql4.com/ru/basis/preprosessor/compilation
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
  • docs.mql4.com
Свойства программ (#property) - Препроцессор - Основы языка - Справочник MQL4
Razão: