新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 857

 

你好!代码中存在一个问题。这个事件出现在工作TF 每一个新条 上。TF--应该是这样的,还是代码中存在错误?

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   ResetLastError();   
   datetime Arr[];
   if(CopyTime(NULL,PERIOD_M5,10,1,Arr)<=0) 
   {
      int error=GetLastError();
      Print("Ошибка 4401 возникает на новом баре раб.ТФ, который должен быть ниже М5 в данном случае ",error);
      Print("Почему запрошенная история не найдена ведь я обращаюсь всего лишь к 10-му бару старшего ТФ М5");
      return(0);
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
novichok2018:

还有Igor Kim的函数bool ExistPositions(),它返回位置存在的标志,这对我来说很难适应我的具体条件。但我认为这也不会在故事中得到检验。

如果没有人有一个代码,在现实世界中实际测试过的,可以给我看,我将科学地尝试。谢谢你。

我的知识又不够用了!在iOpen(NULL,0,0)中对EURUSD进行简单的替换,会产生未声明的标识符和从'数字'到'字符串'的隐式转换错误。在OrderSend(Symbol(),OP_BUY,LOT,Ask,slipage,0,TP,"",magic,0,Blue)中改变Symbol()时也一样;我如何解决?

 
novichok2018:

我的知识又一次不足了!仅仅将iOpen(NULL,0,0)中的NULL替换成EURUSD,就会出现未声明的标识符和从 "数字 "到 "字符串 "的隐式转换错误。在OrderSend(Symbol(),OP_BUY,LOT,Ask,slipage,0,TP,"",magic,0,Blue)中改变Symbol()时也一样;我如何解决?

你不是忘了放倒逗号吗?

 
novichok2018:

是的,这就是我所想象的,但我无法检查它是否在历史上起作用,因为在欧元上开仓 应该由英镑的条件发生,并没有反映在欧元的代码中,而历史上显示的是欧元。因此,该决定的正确性存在不确定性。

然后,我将不得不学习MQL5并测试多货币变体。

 
Alexey Viktorov:

然后,我必须学习MQL5,并测试多货币变体。

哦,不用了,谢谢!我的目标不是要彻底研究MKL4或MKL5。我的目标是编写简单的专家顾问,在95%的开仓中都能获利,并避免在我决定亏损平仓前提取全部余额。我有几个这样的专家顾问,在模拟账户上工作,但每次都有新的想法出现,我想马上测试它们。我坚持认为,代码越简单越好,我不想深入研究语言。反正还没有!对语言的彻底研究只有在通过按订单写专家 来赚钱的情况下才是合理的,IMHO。

谢谢你的引言。还没有试过,要晚一点。

 
novichok2018:

.......我的目标是为自己编写简单的专家顾问,在95%的未平仓头寸中都能获利,而且在我决定亏损平仓之前,一个悬挂的减号不会耗尽我的全部余额。.....。

你已经描述了全世界95%的交易者的梦想。但你甚至不想去理会语言的 拼写和语法。令人羡慕的自信心,我喜欢这样。当然是IMHO。

 
novichok2018:

哦,不,谢谢你!我的目标不是要彻底研究MKL4或MKL5。我的目标是编写简单的专家顾问,在95%的开仓中都能获利,并避免在我决定亏损平仓前提取全部余额。我有几个这样的专家顾问,在模拟账户上工作,但每次都有新的想法出现,我想马上测试它们。我坚持认为,代码越简单越好,我不想深入研究语言。反正还没有!对语言的深入研究只有在通过写定制专家 来赚钱的情况下才是合理的,IMHO。

谢谢你的引言。我还没有试过,过一会儿再试。

MQL5并不比MQL4更复杂。在某些情况下,它甚至更简单、更快速。OOP只是初学者的一个毛病。为了写一个你提到的简单的专家顾问,你不需要知道OOP。

告诉我写作的难度有多大

// MQL4

OrderSend(_Symbol, OP_BUY, lot, price, Slip, sl, tp, "", Magic);
// MQL5

#include <Trade\\Trade.mqh>
CTrade trade;

trade.Buy(lot);
 
Sergey Voytsekhovsky:

你描述了世界上95%的交易者的梦想。但你甚至不想去理会语言的 拼写和语法。令人羡慕的自信心,我喜欢这样。当然,是IMHO。

我不明白你说的 "拼写 "是什么意思,但这并不重要,因为我的机器人确实在工作,而且正是我所描述的方式。

 
Alexey Viktorov:

MQL5并不比MQL4更复杂。而在某些情况下,它甚至更简单、更快速。OOP对初学者来说只是一个恐怖的故事。为了写一个你所说的简单的专家顾问,你不需要知道OOP。

告诉我写作的难度有多大

哦,我的天啊!你杀了我。我什么都不明白,虽然从机械上来说,写第二个版本并不难))。

 

你好,MT4会存在多久?一年还是两年?

对不起,这个问题有点偏离主题(但对我非常重要)。