FAQ 04.03.201112:56
Подскажите, как найти цену последнего фрактала?
sergeev: Для этого можно воспользоваться индикатором iFractals. Он возвращает значение 0, если на баре нет фрактала и значение цены фрактала если он есть. Фракталы делятся на верхние и нижние. Если вам надо получить верхние, то в функцию iFractals передается MODE_UPPER, а для нижних - MODE_LOWER. Поэтому для поиска фрактала надо пройти в цикле по барам и первое не 0 значение и будет искомым фракталом.
пример:
double frac;
for (int i=3; i<Bars; i++)
{
frac=iFractals(Symbol(), Period(), MODE_UPPER, i); if (frac>0) break;
frac=iFractals(Symbol(), Period(), MODE_LOWER, i); if (frac>0) break;
}
if (frac>0) Print("Цена последнего фрактала: ", frac);
пример организации отдельной функции:
//--------------------------------------------------------------- GetLastFracdouble GetLastFrac(string smb, int tf, int iB)
{
int n=iBars(smb, tf); double frac;
for (int i=iB; i<n; i++)
{
frac=iFractals(smb, tf, MODE_UPPER, i); if (frac>0) return(frac);
frac=iFractals(smb, tf, MODE_LOWER, i); if (frac>0) return(frac);
}
return(0);
}
.....
Print("Последний фрактал: ", GetLastFrac("EURUSD", 60, 3));
for (i = 0; i < a1; i++)
{
OrderSelect(i,SELECT_BY_POS);
OrderDelete(OrderTicket() );
}
这里有一个简单的脚本,这样的脚本应该删除所有的挂单,但它正好删除了一半的订单 ...???
a1 = OrdersTotal();
for (i = 0;i < a1; i++)
{
OrderSelect(i,SELECT_BY_POS)。
OrderDelete(OrderTicket();
}
这个简单的脚本应该删除所有的挂单,但它正好删除了一半的挂单...???
比方说,有10个订单。
这里你已经删除了一半(零到五)。
现在你想选择第六个......而现在只剩下五个了。有一个错误,没有什么可以删除。其他人也是如此。
a1 = OrdersTotal();
for (i = 0; i < a1; i++)
{
OrderSelect(i,SELECT_BY_POS)。
OrderDelete(OrderTicket();
}
这个简单的脚本应该删除所有的挂单,但它正好删除了一半的订单 ...???
改变订单搜索的方向。
for (i=a1-1; i>=0; i--) {....}
改变订单枚举的方向。
for (i=a1-1; i>=0; i--) {....}
1.你检查过吗?
报告:有帮助,但似乎有小毛病。
第一个终端。删除了所有图表和符号,增加了7个美元符号,增加了图表。都有重装。
拉长了股票代码,占到了屏幕的3/4。填满了前6个,第7个达到了5个方块。
下一次重启后,并不是所有的单元格都被填满,分布几乎是随机的--列表中的符号越低,得到的单元格就越少。
第二个终端。上面有7个日元对。去掉了多余的字符,重新开始--它们填充得更深,但填充的深度原来是随机分布的。
我倾向于这是一个错误,因为缓存太小了--它只是不够每个人使用,而分配是随机的,或者是 "先来后到"。
在任何情况下,对于一种货币来说,这种方法是有效的。摘要:对事实的描述 :) 谢谢。
它的作用是...但是,逻辑是什么呢--i++或i--有什么区别?
你已经被告知原因是什么。这不是i++或i--的问题,而是你从列表的哪一端开始删除订单--列表的开头(如你所做的)或列表的结尾(如你在这个案例中需要做的)。
要了解当订单被删除时会发生什么,你需要知道并理解订单是如何存储在数组中的。
当你先删除第一个订单时(它的索引为i=0),所有订单的索引在数组中被移位--第一个订单变成空,第二个订单变成第一,第三个--第二,以此类推。这就是为什么所有的订单都没有被完全删除--事实上,当i变成6时,第六个订单被转移到订单数组中的第五个位置,并且该订单根本没有被索引6选中。
当你从列表的末尾删除订单时,转变不会发生--第一个订单在列表中的位置为零,它将继续拥有这个位置。第10个订单的位置是9,它被删除了,然后第9个订单,它在列表中的位置是8,被删除了,以此类推,直到订单阵列中第一个位置是0的订单。
作品 ....但逻辑是什么呢?"i++"或 "i-"有什么区别?
你已经被用户回答过了
...自主地打开时间表。