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

 
Snower: 黄线是价格应该突破的价格通道,该订单将以笑脸蜡烛开盘,之前的都将被忽略。

在你的这段代码中,价格通道channel_top和channel_bottom是否在上面定义?针杆的定义在哪里?

 
Vitaly Muzichenko:

回复

Artyom,你没有仔细阅读:TS只需要在针形柱的突破处打开,分别是,如果你规定一个针形柱(小体和大阴影),条件可以满足

维塔利,我是在回答这个问题。

...而忽略了之前所有的...

如果之前的都是针锋相对,那么当他们现行的时候,你怎么能忽视他们,是针锋相对的越界?

 
Sergey Likho:

MT4的iCustom功能是如何处理的?请知道的人回复!


例如,在策略测试器中,一个专家顾问在每一个tick上访问指标。

当函数被调用时,指标被加载到内存中,重新计算从零条到Bars的所有数值,然后返回所需偏移量的数值。

如果我在第一个点上要求1个条形的值,在第二个点上要求第二个条形的值,那么我的专家顾问将在整个历史上计算指标两次?


如果专家顾问访问指标1,并且它对指标2有iCustom。当请求指标1 的值时,指标2将被重新计算多少次?


也许,策略测试器和MT4终端将指标值存储在每个条形上,这样就不会在重复要求时重新计算它们?

这完全取决于指标的实现。如果计算正确,那么该指标只计算当前的条形图--其他的条形图是在(rates_total-prev_calculate)>1时计算的。

 

如果数组中存在EMPTY_VALUE 值,如何对数组中的iMAOnArray进行平均?

 
Максим Дмитриев:

如果数组中存在EMPTY_VALUE 值,如何对数组中的iMAOnArray进行平均?


我明白了!如果在平均样本中至少有一个值是EMPTY_VALUE ,那么该点的iMAOnArray值也是EMPTY_VALUE

 

祝大家今天愉快。我正在测试一个EA。我不打算用它进行交易,只是为了检查一些规律性。EA在每分钟的蜡烛图上开一个订单,如果订单在SL上被关闭,它会在SL上以收盘价开另一个BUY订单。


int start()                                             
{
if(Bid == iOpen(NULL,PERIOD_M1,0))
if ( G != Minute() )
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,Y10,123 );
G  =  Minute();
}
////*******   Если в списке закрытых ордеров есть ордер закрытый по СЛ - открыть другой ордер
int Счетф=0,  Номерф=OrdersHistoryTotal()-1;
for( ; Номерф>=0; Номерф--)
{
if(!OrderSelect(Номерф, SELECT_BY_POS, MODE_HISTORY)) continue;
if(OrderProfit()>=0) break;
Счетф++;
if(Счетф>0)
if(TimeCurrent()==OrderCloseTime())
OrderSend(Symbol(),OP_BUY,1,Ask,1,Bid-400*Point,Bid+200*Point,Y11,123 );
}
return;
}

问题 是...如果几个订单在一个tick上被关闭,而最后一个订单在TP上被关闭,我需要的BUY订单就无法打开。这是因为程序认为最后一笔订单是由TP关闭的,而不是由SL关闭的。下面是这种情况的一个例子

13:38:15.859 2008.01.02 15:01:46 测试员:止损#232在1.46566(1.46560 / 1.46562)。

13:38:15.859 2008.01.02 15:01:46 测试仪:止损#233在1.46566(1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:01:46 测试仪:止盈#302在1.46562 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:02:00 MACD样本EURUSD,M1: open #347 sell 0.10 EURUSD at 1.46570 sl: 1.46972 Tp: 1.46372 好的
请您解释一下,在SL订单与SL订单在同一时间段内关闭后,应该用什么语言结构在一个点上打开BUY订单。

谢谢你。

 

你好!

我已经绞尽脑汁了。如何检查双数组中是否有某个价格?

我是为了测试而这样写的。


double prmas[5] = {11,22,33,44,99};

ArrayBsearch(prmas,OrderOpenPrice(),WHOLE_ARRAY,0,MODE_ASCEND));


脚本找到了11、22、33、44,没有任何问题(终端有这样的命令)。然而,如果脚本处理的价格是45,例如,它仍然显示3(价格44在阵列中的位置)。

我真正需要的是一个bool--如果数组中存在正在处理的订单的价格,它应该返回true,如果没有,它应该返回false。但我还没有在语言中找到这样的功能。

 

下午好。你能告诉我为什么文件没有被创建,数据没有被写入。

   string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
   string file_name=terminal_data_path+"\\MQL4\\Files\\VolC(Symbol(),Period())";
   int file_handle=FileOpen(file_name,FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);
   FileClose(file_handle);
 
YarTrade: 下午好。你能告诉我为什么文件没有被创建,数据也没有被写入其中吗?

仔细检查Files文件夹!!!。始终写到沙盒= 文件夹。这样试试吧。

   string file_name=VolC(Symbol(),Period());  // А кто такой ВолК = VolC  ???
   int file_handle=FileOpen(file_name,FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);
   FileClose(file_handle);
 
STARIJ:

仔细检查Files文件夹!!!。始终写到沙盒= 文件夹。像这样试试吧。


VolC - 我是这样给文件命名的。难道不需要文件名吗?

原因: