在新的一行写到文件中 - 页 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:

在我看来,如果你不摆脱已经处理过的信息,那么你将不得不花费资源重新分析它。

如果在一个单一的EA内的信息,如果它本身不需要被读取,就不需要写到文件中去。 如果从外面看,那么在读完文件后就写一个空文件。

 
Aleksei Stepanenko:
该函数接收不同类型的几个变量的值,你有一个字符串。

这就是问题所在...如何 "不费吹灰之力 "地从一个字符串制作一个变量枚举。使用StringSubstr函数 的结果是一个非常不通用的解决方案。StringSplit不太了解它的工作原理...也许可以做一些转换?

 
Valeriy Yastremskiy:

这些信息,如果在一个EA内,不需要写到文件中,如果你自己不需要读它。如果来自外部,那么在读完之后,写一个空文件到文件中。

如果我们想做一个单独的EA,为任何货币对开立订单,而某一货币对的EA已经将开立的订单拦截到控件中,那么这可能会奏效,但如果某一货币对的每个EA都需要单独与文件合作,那么以这种方式进行同步是不可能的。

 

让我再次尝试传达一个易于使用的阵列的想法

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

我已经写过如何将这个数组保存到文件中。

或者解析你的字符串。

原因: