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

 

你好,我正在获取一小时烛台收盘时的数据,我绘制了它,一切正常,我想获取N期前的数据,写出的数组超出了范围。

我试图使用数组中的指标缓冲区,请告知如何获得前一时期的数据。

{
 


if(prev_calculated<1) limit=rates_total-1;
if(prev_calculated>0)limit=rates_total-prev_calculated;
for(i=limit; i>=0; i--)
{  
int yesterday_weekday = TimeHour(iTime(Symbol(),0,i+1))-TimeHour(iTime(Symbol(),0,i));
if(yesterday_weekday!=0)  
  {
P=C; 
T = iTime(NULL,0,i+1); 
shift=iBarShift(NULL,PeriodGR,T); 
C= iClose(NULL,PeriodGR,shift);   
CB[n]=C;n++; 

 }
 CC[i]=C; 
 Comment(StringFormat("CC[i]=%G\r\nCB[n-2]=%G\r\n",CC[i],CB[n-2])); 
  }
   return(rates_total);
  }
 
PokrovMT5:

下午好!我得到了小时蜡烛图的收盘数据,我画了出来,一切都很好,我想得到N期以前的数据,写了一个空数组,我试图使用数组中的指标缓冲区,请教如何得到前一期的数据?

也许这将有助于

https://www.mql5.com/ru/code/7297

https://www.mql5.com/ru/code/20343

TZ-Breaktout
TZ-Breaktout
  • 投票: 2
  • 2007.09.14
  • Scriptor
  • www.mql5.com
Индикатор TZ-Breaktout.
 
PokrovMT5:

你好,我正在获取一小时烛台收盘时的数据,我绘制了它,一切正常,我想获取N期前的数据,写出的数组超出了范围。

我试图使用数组中的指标缓冲区,请告知如何获得前一时期的数据。

limit=rates_total-1;

你的极限指向了历史上的第一个酒吧。但你想要的是i+1--这就是为什么i超出了范围

尝试

limit=rates_total-2;

...尽管这不太可能有帮助--可能还有很多计算值你没有检查......

 
你好。我有个问题,mql4中的指标变量限制按天显示3555条黄金,而mql5显示一半?在哪里放置引言?还有一个问题,对于上面讨论的limit=rates_total-2,在我的变体中没有数组溢出,只有当limit=rates_total-5,程序才工作我还注意到,在mql5中,代码编译的速度明显变慢了,这个过程大约需要13秒,这是否正常?谢谢你。

 
mwwm:
你好。我的问题是,可能在mql4中的指标变量限制显示黄金每日3555条,而mql5显示少了一倍?在哪里放置引言?还有一个问题,对于上面讨论的limit=rates_total-2,在我的变体中没有数组溢出,只有当limit=rates_total-5,程序才工作另外我注意到在mql5中,代码编译的速度明显变慢了,这个过程需要13秒,这是否正常?谢谢你。

在MT5中,报价是从服务器上下载的:那里的东西就是那里的东西...

关于极限,你不必猜测和调整,你必须准确计算--偏移量取决于哪些变量,并从rate_total和这些变量的值中抽取一个单位(如果它们没有被计算)。如果变量被计算出来,你应该控制循环索引的值,如果它大于 rates_total-1,就跳过这个迭代(继续)。

 

你好,谁能告诉我,如果有人知道的话,我加载tick数据进行测试,99%的数据都是应该的,30分钟图一切正常,但只要我加载H4数据并试图在测试器中运行EA,-就不工作了,测试器给出了2018。04.05 16:41:08.576 TestGenerator:文件 "C:\Users\user\AppData\Roaming\MetaQuotes\Terminal\7E781795884A398A87F33ED1B942D689\tester\history\USDJPY240_0.fxt "无法打开[5] 。

而2018.04.05 16:41:08.535 TestGenerator:文件 "C:\Users\user\AppData\Roaming\MetaQuotes\Terminal\7E781795884A398A87F33ED1B942D689\tester\history\USDJPY240_0.fxt" 是只读的

原因是什么??????
 
pryn:

你好,谁能告诉我,如果有人知道的话,我加载tick数据进行测试,99%的数据都是应该的,30分钟图一切正常,但只要我加载H4数据并试图在测试器中运行EA,-就不工作了,测试器给出了2018。04.05 16:41:08.576 TestGenerator:文件 "C:\Users\user\AppData\Roaming\MetaQuotes\Terminal\7E781795884A398A87F33ED1B942D689\tester\history\USDJPY240_0.fxt "无法打开[5] 。

而2018.04.05 16:41:08.535 TestGenerator:文件 "C:\Users\user\AppData\Roaming\MetaQuotes\Terminal\7E781795884A398A87F33ED1B942D689\tester\history\USDJPY240_0.fxt" 是只读的

原因是什么??????
请不要把你的问题 乘虚而入。
 
Artyom Trishkin ...如果当前时间较长,则将其保存在一个变量中以便检查...

谢谢你,找到了我要找的东西。

另一个问题--我部分平仓,在计算当前利润时,如何将这个平仓的利润或损失考虑在内。

 
PolarSeaman:

谢谢你,我找到了我要找的东西。

另一个问题--我部分平仓,在计算当前利润时,如何将这个平仓的利润或损失考虑在内。

与计算完全关闭的方法完全相同。仓位被分割:关闭的部分进入历史,剩下的部分得到一张新的票,并留在市场中。

 
Artyom Trishkin:

一个封闭的部分进入了历史。

我怎么知道在这个特定位置封闭部分的历史?

我开了一个 1.0手的头寸,以10美元的损失平了0.5手。 后来我又以5美元的利润平了0.25手。 我将以50美元的利润全部平仓。事实上,现在我有50美元的利润。

if (OrderProfit()+OrderSwap()>=50) ClosePosBySelect();

在计算当前利润时,如何关闭-10美元和+5美元?以55美元的利润收盘

原因: