Escrevendo para o arquivo em uma nova linha - página 4

 

Em cima das linhas parece ser possível escrever, pelo menos escrever uma nova linha no lugar da primeira linha é possível sem nenhuma dificuldade especial.


//Открываем файл 
   int h1=FileOpen("Copy.txt",FILE_WRITE | FILE_READ,";");
   FileSeek(h1, 0, SEEK_SET);
   FileWrite(h1,Symbol(),OP_BUYSTOP,OrderLots()*Koof,OrderStopLoss(),Slippage,0,0,IntegerToString(OrderTicket()));
   FileClose(h1);
// закрываем файл
 
Agora você tem opções, cabe a você decidir como quer proceder
 
EfremovSergey:

Parece ser possível escrever em cima das linhas, ou pelo menos escrever uma nova linha no lugar da primeira linha sem nenhuma dificuldade especial.


Isso é brilhante! Em uma pitada, em um níquel...

Se você tem que anotar algo, você tem que anotar. Onde, quando, como, por que e quem - não ligamos a mínima para isso. Nosso trabalho é escrevê-lo, e quem precisar lê-lo, que o faça por conta própria.

 
Maxim Kuznetsov:

Brilhante! à vista, à vista...

se há algo a ser anotado, tem que ser anotado. Onde, quando, como, por que e quem, nós não damos a mínima. Nosso trabalho é escrevê-lo, e quem precisa lê-lo - deixe-os fazer isso eles mesmos...

Bem, sim, isso não é uma grande opção...

Você pode escrever novas informações ou apenas lixo em uma linha, mas por alguma razão você não pode apagá-lo de forma alguma... estranha história...

 

Descobriu como trabalhar com o arquivo, muito obrigado e muito obrigado.

Tal pergunta, um pouco fora de tópico.

Como resultado da leitura da linha

string s=FileReadString(h)

obtemos o valor de s o que implica os dados para abrir o pedido, por exemplo EURUSD,5,0.02,1.17808,70,0,0,0,302090516

É possível substituir de alguma forma esse valor como um todo na operação OrderSend sem extrair cada parte descritiva constituinte da ordem para ser aberta separadamente?

OrderSend(s)

É claro que não funciona

OrderSend - Торговые функции - Справочник MQL4
OrderSend - Торговые функции - Справочник MQL4
  • docs.mql4.com
[in]  Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике. При открытии рыночного ордера (OP_SELL или OP_BUY) в качестве цены открытия могут использоваться только самые последние цены Bid (для продажи) или Ask (для покупки). Если операция проводится по...
 
A função toma valores de várias variáveis de diferentes tipos, e você tem uma cadeia.
 
EfremovSergey:

Na minha opinião, se você não se livrar das informações que já foram processadas, então você terá que gastar recursos para reanalisá-las.

Informação se dentro de um único EA não precisa ser escrita em um arquivo se ele não precisa ser lido por si mesmo. se de fora, então escreva um arquivo vazio no arquivo após lê-lo.

 
Aleksei Stepanenko:
A função toma valores de várias variáveis de diferentes tipos, e você tem uma cadeia.

Essa é a questão... como fazer uma enumeração variável a partir de um fio. O uso da função StringSubstr resulta em uma solução muito pouco versátil. StringSplit não entende bem como funciona... Talvez algumas conversões possam ser feitas?

 
Valeriy Yastremskiy:

As informações, se dentro de uma EA, não precisam ser escritas no arquivo, se você mesmo não precisa lê-las. se de fora, então escreva um arquivo vazio para o arquivo após lê-lo.

Se quisermos fazer uma EA separada que abrirá ordens para qualquer par e a EA de um par em particular já interceptará a ordem aberta no controle, então isso provavelmente funcionará, mas se cada EA de um par em particular precisará trabalhar com o arquivo individualmente, então a sincronização desta forma será impossível.

 

Deixe-me tentar novamente transmitir a idéia da conveniência de usar uma matriz

struct MyData
   {
   string   symbol;              // символ
   int      operation;           // торговая операция
   double   lot;                 // количество лотов
   double   stoploss;            // stop loss
   double   takeprofit;          // take profit
   int      magic;               // идентификатор
   } my[];

for(int i=0; i<ArraySize(my); i++)
   {
   if(my[i].magic==MagicNumber)
      {
      eTicket=OrderSend(my[i].symbol,my[i].operation,my[i].lot,ePrice,(int)SymbolInfoInteger(my[i].symbol,SYMBOL_SPREAD),
			my[i].stoploss,my[i].takeprofit,NULL,my[i].magic,0,eColor);
      }
   }

Eu já escrevi como salvar esta matriz em um arquivo.

Ou analise seu fio.

Razão: