int Price_of_orders(int Magic_) // цена ближайшего ордера к цене по магику
{
//--- получим общее количество ордеровint ord = 0; // итоговое значение кол-ва ордеровint orders=OrdersTotal();
//--- пробежим по списку ордеровfor(int i=0;i<orders;i++)
{
ResetLastError();
//--- скопируем в кэш ордер по его номеру в спискеulong ticket=OrderGetTicket(i);
if(ticket!=0)// если ордер успешно скопирован в кэш, работаем с ним
{
double price_open =OrderGetDouble(ORDER_PRICE_OPEN);
datetime time_setup=OrderGetInteger(ORDER_TIME_SETUP);
string symbol =OrderGetString(ORDER_SYMBOL);
long magic_number =OrderGetInteger(ORDER_MAGIC);
if(magic_number==Magic_)
{
// обработаем ордер с заданным ORDER_MAGIC - посчитаем
ord++;
}
PrintFormat("Ордер #%d по %s был выставлен %s, ORDER_MAGIC=%d",ticket,symbol,TimeToString(time_setup),magic_number);
}
else// вызов OrderGetTicket() завершился неудачно
{
PrintFormat("Ошибка при получении ордера из списка в кэш. Код ошибки: %d",GetLastError());
}
}
return (ord);
}
2)如果一个数组是反向索引的,那么新的单元格应该出现在数组的开头--事实并非如此
为什么新单元格要出现在数组的开头?- 如果我没记错的话,帮助中应该写到,当你使用ArraySetAsSeries()时,数组不会在内存中被重新分配,但在访问数组元素时,会应用反向索引。
SZZ:你的例子很复杂,我把它勾画出来了。
2022.04.18 21:31:59.223 tst EURUSD,H1: arr2 = 5 , 4 , 3 , 2 , 1 , 0 , 0 , 0 , 0 , 0 。
2022.04.18 21:31:59.223 tst EURUSD,H1: arr1 = 1 , 2 , 3 , 4 , 5 , 0 , 0 , 0 , 0 , 0 。
2022.04.18 21:31:59.223 tst EURUSD,H1: 调整大小 : 10 , 10
2022.04.18 21:31:59.223 tst EURUSD,H1: Start size : 5 , 5
我得到"iClose"错误--对超载函数的模糊调用。
一般来说,目标是选择TF。
出于习惯,我想用MT4选择它。
但我已经失败了。
一般来说,目标是选择TF。
出于习惯,我想用MT4选择它。
但我失败了。
MT5中的时期
if(Period()==1) 返回 "M1"。
if(Period()==2) 返回 "M2"。
if(Period()==3) 返回 "M3"。
如果(Period()==4) 返回 "M4"。
if(Period()==5) 返回 "M5"。
if(Period()==6) 返回 "M6"。
if(Period()==10) 返回 "M10"。
if(Period()==12) 返回 "M12"。
if(Period()==15) 返回 "M15"。
if(Period()==20) 返回 "M20"。
if(Period()==30) 返回 "M30"。
if(Period()==16385) 返回 "H1"。
如果(Period()==16386) 返回 "H2"。
if(Period()==16387) 返回 "H3"。
if(Period()==16388) 返回 "H4"。
if(Period()==16390) 返回 "H6"。
if(Period()==16392) 返回 "H8"。
如果(Period()==16396) 返回 "H12"。
if(Period()==16408) 返回 "每日"。
if(Period()==32769) 返回 "每周"。
if(Period()==49153) 返回 "每月"。
在mt5中的时期
if(Period()==1) 返回 "M1"。
如果(Period()==2) 返回 "M2"。
if(Period()==3) 返回 "M3"。
如果(Period()==4) 返回 "M4"。
if(Period()==5) 返回 "M5"。
if(Period()==6) 返回 "M6"。
if(Period()==10) 返回 "M10"。
if(Period()==12) 返回 "M12"。
if(Period()==15) 返回 "M15"。
if(Period()==20) 返回 "M20"。
if(Period()==30) 返回 "M30"。
if(Period()==16385) 返回 "H1"。
如果(Period()==16386) 返回 "H2"。
if(Period()==16387) 返回 "H3"。
if(Period()==16388) 返回 "H4"。
if(Period()==16390) 返回 "H6"。
if(Period()==16392) 返回 "H8"。
如果(Period()==16396) 返回 "H12"。
if(Period()==16408) 返回 "每日"。
if(Period()==32769) 返回 "每周"。
if(Period()==49153) 返回 "每月"。
谢谢你!
谢谢你!
你为什么不喜欢ENUM_TIMEFRAMES?
而且你可以把变量以枚举的形式放在输入中,并随心所欲地选择它们......为什么要弄得这么乱呢? 而且在mql4中,这种枚举已经有很长时间了......
你为什么不喜欢ENUM_TIMEFRAMES?
而且你可以把变量作为一个枚举放在输入中,并随心所欲地选择它们......为什么你要这么麻烦呢? 而且在mql4中,这个枚举已经存在很久了......
+
你为什么不喜欢ENUM_TIMEFRAMES?
而且你可以把变量以枚举的形式放在输入中,并随心所欲地选择它们......为什么要弄得这么乱呢? 而且在mql4中,这种枚举也已经存在很久了......
谢谢你!我不知道。
同事们,请告知最佳算法,以找到最接近当前价格的先前下达的限价单的价格--分别为上升卖出限价、出价
最接近底部的买入限额。
这个f-iio计算数量,但我需要之前下的限价单的价格来使f-iio返回。
到目前为止,我使用最小价格作为卖出限制,最大价格作为买入限制....。
同事们,请告知最佳算法,以找到最接近当前价格的先前下达的限价单的价格--分别为上升卖出限价、出价
最接近底部的买入限额。
这个f-iio计算数量,但我需要之前下的限价单的价格来使f-iio返回。
到目前为止,我使用最低价格作为卖出限制,最高价格作为买入限制....。
我想在我的结构或数组中保存所需的价格和门票,也许还有其他东西,例如时间,并在添加后立即按价格排序。按资源来说,如果你不经常搜索,那么它的价格是一样的,或者更贵一点,如果经常搜索,最好能记住。当然,如果你没有100500个订单)那么它可能太贵了。一般来说,结构或多维数组中的排序问题只解决了第一个索引的不幸。
有时我使用几个具有相同索引的一维数组,门票、时间、价格。并通过必要的财产索引进行搜索。例如,我们得到一个较小的时间或较大的价格的指数,并得到必要的订单的票。 当然,这是一个拐杖,但它的作用很明显。
出现了一个问题,在搜索中没有发现。是否有可能从EA启用自动交易。获取终端的属性,无论它是否被启用。
是否有可能在一个终端上运行一个启用了algotrading的EA,而另一个没有。