Запись в файл с новой строки - страница 4

 

По верх строк по всей видимости есть возможность производить записать, по крайней мере записать новую строку взамен первой строки получается без каких-либо особых сложностей.


//Открываем файл 
   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);
// закрываем файл
 
Теперь у Вас есть варианты, решайте сами, как Вам удобнее
 
EfremovSergey:

По верх строк по всей видимости есть возможность производить записать, по крайней мере записать новую строку взамен первой строки получается без каких-либо особых сложностей.


Прямо блеск ! в точечку, в пяточку..

если нужно что-то записать, то это надо записать. Куда, когда, как зачем почему и кому-это-надо нам насрать. Наше дело записать, а кому надо читать - пусть сами крутятся..

 
Maxim Kuznetsov:

Прямо блеск ! в точечку, в пяточку..

если нужно что-то записать, то это надо записать. Куда, когда, как зачем почему и кому-это-надо нам насрать. Наше дело записать, а кому надо читать - пусть сами крутятся..

Ну да, это так себе вариант...

Можно записать новую информацию или просто мусор в строку, а вот удалить её совсем почему-то нельзя... странная история...

 

С файлом разобрался как работать, всем огромное спасибо и огромная признательность.

Такой вопрос, немного оффтопом.

В результате прочтения строки

string s=FileReadString(h)

получается значение s, которое подразумевает под собой данные для открытия ордера, например EURUSD,5,0.02,1.17808,70,0,0,302090516

Возможно ли это значение каким-либо образом подставить целиком в операцию OrderSend, не вычленяя каждую составную описательную часть открываемого ордера по отдельности?

OrderSend(s)

естественно не прокатывает

OrderSend - Торговые функции - Справочник MQL4
OrderSend - Торговые функции - Справочник MQL4
  • docs.mql4.com
[in]  Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике. При открытии рыночного ордера (OP_SELL или OP_BUY) в качестве цены открытия могут использоваться только самые последние цены Bid (для продажи) или Ask (для покупки). Если операция проводится по...
 
Функция принимает значения нескольких переменных разных типов, а у Вас строка.
 
EfremovSergey:

В моём представление если не избавляться от уже обработанной информации, то тогда придётся тратить ресурсы на её повторный анализ.

Информацию если в рамках одного советника не обязательно писать в файл, если ее самому читать не нужно. если со стороны, то после прочтения пишите в файл пустой файл.

 
Aleksei Stepanenko:
Функция принимает значения нескольких переменных разных типов, а у Вас строка.

В этом и вопрос... как "безболезненно" из строки сделать перечисление переменных. С помощью функции StringSubstr получается очень не универсальное решение. StringSplit не вполне понял как устроено... Может какие-то преобразования можно произвести?

 
Valeriy Yastremskiy:

Информацию если в рамках одного советника не обязательно писать в файл, если ее самому читать не нужно. если со стороны, то после прочтения пишите в файл пустой файл.

Если сделать отдельный советник, который будет открывать ордера по любым парам, а уже советник конкретной пары будет перехватывать открытый ордер в управление, то скорее всего такой вариант подойдёт, а если же каждому советнику отдельной пары потребуется индивидуальная работа с файлом, то сделать синхронизацию по такой схеме будет невозможно.

 

Попробую ещё разок передать идею удобства использования массива

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);
      }
   }

Как сохранять в файл этот массив уже писал.

Или парсите Вашу строку.