for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера
{
OrderSelect(cnt, SELECT_BY_POS) if(OrderOpenTime()!=0) ///время не равно 0 значит отложка сработала(или как писал Roger if(OrderType()<2) ) { ///необходимая операция } }
还是你有1个未结订单+3个挂单?
那么你可以试试这种方式
//в глобальных переменных
int tick[3];
//в функции start
//cначало записываем номера тикетов отложек в переменные
for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера
我坐在这里,不大明白如何实现这个算法。
也许有人可以帮忙。
1.找到一天的开始(我做了这个)。
2.找到一天中的最大值(我做了这个)
3.我需要弄清楚在MA从上到下交叉后的第一个分形 后的条形,在那个最大值之后。
我把这个数字附在后面。
与其说是iRSI,不如说是iCCI。
YEPRST......,它完全不在视线范围内.....,谢谢你,我们会修复它。
我坐在这里,不大明白如何实现这个算法。
也许有人可以帮忙。
3.你需要计算在这个最大值之后,从上到下越过MA之后的第一个分形 的条形。"计算一下后面的酒吧......"
简单地写:"我想知道在我打开电脑后,价格会去哪里......" :-)))))
"计算一下后面的酒吧......"
简单地写:"我想知道在我打开电脑后,价格会去哪里......" :-)))))
你不明白。
这些条形图已经在图表上了。或者说,这是当前的条形图。而如果它符合条件--它就是你要找的酒吧。
这首先是。
其次,如果你不明白我们在说什么,又何必去说那些废话呢?
你可以试试这个
OrderSelect(1, SELECT_BY_POS)
if(OrderOpenTime()!=0)
{
///необходимая операция
}
但这只是在你只有1个订单的情况下才有的选择!
所以我们只是检查订单是否在等待中?
这个想法是这样的:随着一个订单的停止,例如在买入时,有三个待定订单被设置为
我想要一个条件,即这3个待定订单中的一个成为正常的 "工作订单"
你不明白。
这些条形图已经在图表上了。或者我们说这是当前的条形图。而如果它符合条件,就是你要找的酒吧。
这首先是。
其次,如果你不明白我们在说什么,为什么还要浪费你的时间?
"计算出第一条分形后 的 条形,再 计算出第二条分形后的条形。"这意味着他们将遵循 它,而不是说他们 "已经存在于图表上"...
但如果 "而如果它符合条件--它就是你要找的酒吧"--那就是另一回事了。描述一下 "条件",有人会帮助你。
我对水灾表示歉意,它只是溜了出来。
"计算出第一个分形之后 的 条形,再..."如果他们跟随,这意味着他们会,而不是如果他们 "已经在图表上"...
但如果 "而如果它符合条件--它就是你要找的那个酒吧"--那就是另一回事了。描述一下 "条件",有人会帮助你。
对不起,洪水泛滥,它只是滑落。
哦,我正是这样写的。
我不会以寻找我不知道的东西为目标,不知道在哪里或如何。
我对已经存在的具体酒吧感兴趣。更确切地说--他们的转变。
顺便说一下,我已经实施了,事实证明这并不难 :)
所以我们只是检查订单是否在等待中?
这个想法是这样的:当你停止一个订单时,例如在买入时,会设置三个待定订单
我想要一个条件,即这3个挂单中的一个成为一个正常的 "工作单"。
那么你有3个挂单,如果至少有一个触发了,那么就会设定一些条件?
如果是,那么就像这样
for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера
{
OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0) ///время не равно 0 значит отложка сработала(или как писал Roger if(OrderType()<2) )
{
///необходимая операция
}
}
还是你有1个未结订单+3个挂单?
那么你可以试试这种方式
//в глобальных переменных
int tick[3];
//в функции start
//cначало записываем номера тикетов отложек в переменные
for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера
{
OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0)
{
tick[cnt]=OrderTicket();
}
}
//а далее проверяем выполнился ли отложенный ордер
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0)
{
for(int cnt2=0;cnt2<3;cnt++)
if(tick[cnt]==OrderTicket())
{
//необходимое условие
}
}
в глоб перем
int mag=12345;
в ф start
/// При открытии отложки укажите ему в качестве магика mag
///ну а далее идет поиск "бывшей" отложки по Magic
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0&&OrderMagic()==Mag)
{
///необходимая операция
}
}
我还没有检查代码中可能存在的错误!
OrderSelect(0,SELECT_BY_POS)函数会返回哪个顺序?哪一个先被打开了?订单能不能不被调换?(我不使用挂单)
对,哪一个是最早的。如果你确定你原则上只能有一个订单开仓,这很方便,你可以避免超额交易。订单不是互换的,而是在较早的订单关闭后转移到最小的订单。