任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 461

 
wolfovik:

帮助解决一个问题!

当使用ICustom功能时,测试器中的EA会挂起。有什么办法可以解决这个问题吗?

另外,在策略测试器中,有一个持续的错误PB Trade EURUSD,H1: OrderSenderror 130

虽然止损在300点!

ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-300*Point,Bid+300*Point);

它不是这样工作的!

RefreshRates();
ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Bid-300*Point,Bid+300*Point);

我哪里做错了?


 
Dmitry01110:
你好!请告诉我如何编辑由FileOpen函数创建的文件,例如,从当前位置删除一个字节并在其位置上插入另一个字节。


也在尝试做类似的事情。

有一个*.csv文件,只有一列,也就是说,里面的数字都在彼此的下面。我试图让它在每次使用一个数字时,旁边都有一个图标,表示这个数字已经被EA使用过了。

你可以准备一个有两列的*.csv文件 - [NUMBER]; [SIGN]。

 
wolfovik:

在测试器中也有一个持续的错误PB Trade EURUSD,H1: OrderSend error 130

虽然止损点在300点!

它不是这样工作的!

我哪里做错了?


交易订单 中的计算价格必须规范化为数字。

ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,NormalizeDouble(Bid-300*Point,Digits),NormalizeDouble(Bid+300*Point,Digits));

你还需要根据StopLevel的要求,检查止损单的价值是否有效。

input int  StopLoss    =  300;   // Значение Stop Loss в пунктах
input int  TakeProfit  =  300;   // Значение Take Profit в пунктах
int   level=0, spread=0;
//+------------------------------------------------------------------+
//|   Старт                                                          |
//+------------------------------------------------------------------+
void OnTick() {
   level=MarketInfo(Symbol(),MODE_STOPLEVEL);
   spread=MarketInfo(Symbol(),MODE_SPREAD);
   if(level==0) level=spread*2;
//---
   int    ticket=0;
   double sl=0, tp=0;
   if(StopLoss>0) sl=NormalizeDouble(MathMin(Bid-StopLoss*Point,Bid-(level+1)*Point),Digits);
   if(TakeProfit>0) tp=NormalizeDouble(MathMax(Bid+TakeProfit*Point,Bid+(level+1)*Point),Digits);
   ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,5,sl,tp);
   return;
}

对于购买,大约是这样的

 
Dmitry01110:
你好,请你告诉我如何编辑用FileOpen函数创建的文件,例如从当前位置删除一个字节并在其位置插入另一个字节!
你把整个文件的文本调用到一个字符串变量中,把它编辑成一个简单的变量,然后只调用该文件进行写入,并把该变量返回。
 
Roger:
你把一个文件的全部文本调用到一个字符串变量中,把它作为一个简单的变量进行编辑,然后把这个文件调用为只写,并把这个变量返回。

如果文件中的字符数超过了字符串变量的最大字符数,怎么办?
 
我已经有点明白了!要替换某个文件位置上的值,你只需要用FileSeek把指针放到前一个字节上,然后用FileWriteInteger,比如说,在那里写一个新的值,它将覆盖旧的值。最主要的是,新旧值应该是相同的大小,例如,int的LONG_VALUE。
 
我今天更新了我的终端。现在它不能看到指标... 该怎么做,我的说法是否正确。在与之前相同的文件夹(路径)中。
 

for(int l =StringLen(tfs)-1; l >= 0; l--){ int char = StringGetChar(tfs,l); } }

代码中存在一个错误。为什么 "char "会宣誓就职?我如何以及用什么来取代它?

 
artmedia70:
如果文件中的字符数超过了字符串变量的最大字符数,怎么办?

字符串变量是没有限制的。或者说,有,但它非常大。对于529版本的MT4,它是2147483647个字符,如果MT4在32位操作系统中,它将减少2倍。而这并不总是。有不同的钥匙和PAE。

Dmitry01110:
想明白了一点!要替换某个文件位置上的值,你只需要用FileSeek把指针放到前一个字节上,然后用FileWriteInteger,比如说,把新值写到那里,它将覆盖旧值。最主要的是,新旧值必须是相同的大小,例如,int的LONG_VALUE。
是的,对于CSV来说,字符数必须匹配。

佐罗泰

for(int l = StringLen(tfs)-1; l >= 0; l--) { intnChar= StringGetChar(tfs,l); }

代码中存在一个错误。为什么 "char "会宣誓就职?我如何以及用什么来取代它?

 
cp