[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 233

 
hoz:

我用了多少次自动点,但第一次就不灵了。

这里是Init()

我把它放在程序的任何地方(在这种情况下,甚至放在实验的开始部分)。

该函数返回到日志。

逻辑在哪里?

VladislavVG告诉我:因为在init()函数,你不能保证加载金融工具的数据
 
GaNDarM:
VladislavVG向我建议:因为在init()函数阶段你不能保证加载金融工具的数据

所以,没有Init() 的变量Point 的值应该返回相同的值。
 
hoz:
如果函数专门返回一个对象名称,为什么会有废话呢?
你百分之百确定这个函数会一直、一直正确地工作,它不会在某个地方出现故障或被一些棘手的对象名称噎住,或者你自己不会不小心把一个不存在的对象的号码塞进它?而且,从该函数返回的结果不能用来判断其工作是否正确。这是它在文件中所说的。唯一正确的方法是获得错误代码,然后绕过它。这就是你如何保护自己不受自己(或别人)的失误影响。
 
hoz:

我用了多少次自动点,但第一次就不成功了。


逻辑在哪里?

像这样试试吧。

int init()
{
   if (Digits == 2 || Digits == 4)
     pt = MarketInfo(Symbol(), MODE_POINT);
   if (Digits == 1 || Digits == 3 || Digits == 5)
     pt = MarketInfo(Symbol(), MODE_POINT) * 10;
 
  return (0);
}

甚至不是像这样,而是像这样。

int init()
{
   int MyDigits = MarketInfo(Symbol(), MODE_DIGITS)
   if (MyDigits == 2 || MyDigits == 4)
     pt = MarketInfo(Symbol(), MODE_POINT);
   if (MyDigits == 1 || MyDigits == 3 || MyDigits == 5)
     pt = MarketInfo(Symbol(), MODE_POINT) * 10;
 
  return (0);
}

因为Digits 是一个内部变量,就像Piont 一样。

这应该是可行的 :)



 
hoz:

所以,没有Init()Point 变量的值应该返回相同的值。

这不是一个事实... 是MQL处理器的一个内部变量,它需要一些时间和一些初始化动作来更新它。所有这些通常只发生在处理器调用start()之前,在init()阶段,处理器的内部变量的值可能没有被设置。
 
GaNDarM:


"哭诉 "这件事。

这里是日志。

18:25:09 IndikatorZZ GBPJPY,Daily: F_CYF INIT: DownL = 0 UpL = 0


变量不可能是int?


我曾有几次被自己这样抓到过

 
ilunga:

变量有没有可能是int?


我已经发现自己有几次这样做了


不,双倍。我想知道,int有什么问题?
 
你好!前一天发生了一个情况。在2013年3月19日格林威治标准时间17点左右,我下了一个卖出止损的订单。开盘价为1.2903,止损 1.2913,追踪止损15点,M15,手数-0.5。如账户历史记录所示,该仓位是在17-49点开的。该仓位在格林威治时间21:15再次被关闭,利润为负90。当我看到这段历史时,我的脑海中出现了很多问题。例如,为什么在尖峰期的顶部关闭头寸(见图片)。为什么没有触发追踪止损,因为如果它起作用,利润将是正数,因为价格走势是正确的。 追踪止损后,止损不会是90美元。再说一遍--为什么在上涨的顶部被平仓。点对点。我没有就这个问题与交易中心联系。可能他们不会回答。我想起了这个论坛,希望专业人士能够用简单的语言解释这种异常现象的原因。我不久前开始在MT4上交易。我仍然在嗅着,四处张望。
 
你好。你能告诉我,如果一个EA同时连接到几个货币对窗口,那么一个窗口的EA的变化会影响到另一个窗口的EA吗?"即本地变量 是否变化?
 

先生们,请给我一个提示!

我正试图实现一个简单的想法,在程序的注释中描述了这个想法。

程序在测试器中打开的订单与代码中指定的价格不一致。

例如,订单以0.86084的价格开仓,而数组中最接近的数值是0.85375。

差额是正数,而代码规定,如果差额<0.00000,即为负数,则开立订单。


请告知我们错误的位置。

谢谢你。

int start()
{
 double Price=iOpen (Symbol (),0,0);        
 double SL=NormalizeDouble (Price-3000*Point, Digits);         
 double TP=NormalizeDouble (Price+100*Point, Digits);    
 #include <MASSIV.mqh> //объявление массива типа double (неповторяющиеся значения цены с пятью знаками после точки)
 double value =  Bid ;//параметру value функции ArrayBsearch присваивается значение  цены последнего тика

 int S = ArrayBsearch(  massiv,  value, WHOLE_ARRAY,  0, MODE_ASCEND);//функция возвращает индекс значения цены макс. близкой к цене последнего тика 
 if( (NormalizeDouble (Bid-massiv[S],Digits) <=0))//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000


{
                        
 OrderSend(Symbol(),OP_BUY,0.1,Ask,1,SL,TP,"jfh",123 );//ордер открыть
  }                                  

   }