for (int i=OrdersHistoryTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) { if (OrderMagicNumber()==magic) { if (OrderStopLoss()==OrderClosePrice()) { lot=lot*4; } } }
for (int i=OrdersHistoryTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) { if (OrderMagicNumber()==magic) { if (OrderStopLoss()==OrderClosePrice()) { lot=lot*4; } } }
for (int i=OrdersHistoryTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) { if (OrderMagicNumber()==magic) { if (OrderStopLoss()==OrderClosePrice()) { lot=lot*4; } } }
如果你把它与余额相比较,就是这样的。
谢谢你。
好的,那么按照我的理解,我们得到三个不同的自定义函数,其返回值是正确的(如果我们寻找三个不同的参数)。
阵列排序
然后
按正确的数字进行ArrayBsearch
然后如何处理它?
正是从数组到结构元素的转变你不明白。
你需要做一个单一的函数,对全局声明的数组 进行填充和排序。数组将需要通过引用传递给函数。
而你需要额外的函数,从这个数组中取出你需要的数据。
你不明白。
你需要做一个单一的函数来填充和排序一个 全局声明的数组。数组将需要通过引用传递给函数。
而你需要额外的函数,从这个数组中获取你需要的数据。
好的,你能演示一下如何从一个结构数组中拉出一些东西吗? 比方说填充和排序
如何通过参考和写作进行转移。
请告知条件应该是什么样子的。如果触发了止损,那么手数将乘以2,如果下一个订单触发了获利,那么手数将回到原来的手数,也就是止损之前的手数。
我是这样理解的,但我不知道该如何继续下去......
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
另一个问题,我在删除订单块中写错了什么? 它并不总是删除订单,在日志中说
market order #1 cannot be deleted
{
for(int n=OrdersTotal()-1;n>=0;n--)
{
if(OrderSelect(n,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
bool del=OrderDelete(OrderTicket());
if (del==true)
{
otl_b=0; otl_s=0; //обнуляем переменные отложек
}
}
}
}
}
另一个问题,我在删除订单的程序块中写错了什么? 它并不总是删除订单,在日志中显示
market order #1 cannot be deleted
{
for(int n=OrdersTotal()-1;n>=0;n--)
{
if(OrderSelect(n,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
bool del=OrderDelete(OrderTicket());
if (del==true)
{
otl_b=0; otl_s=0; //обнуляем переменные отложек
}
}
}
}
}
你试图删除一个市场订单,它们不会被删除,而是用OrderClose()函数关闭。为了使循环能够正确地删除或关闭,我们必须按其类型来区分订单。
if(OrderType()<=OP_SELL) - 用于市场订单,if(OrderType()>OP_SELL) - 用于挂起订单。
有一个东西叫CHARTEVENT_MOUSE_MOVE
问题:这在没有鼠标的移动设备上是否有效?
请告知条件应该是什么样子的。如果触发了止损,那么手数将乘以2,如果下一个订单触发了获利,那么手数将回到原来的手数,也就是止损之前的手数。
我是这样理解的,但我不知道该如何继续下去......
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
请告知条件应该是什么样子的。如果触发了止损,那么手数将乘以2,如果下一个订单触发了获利,那么手数将回到原来的手数,也就是止损之前的手数。
我是这样理解的,但我不知道该如何继续下去......
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
这个问题的解决取决于专家顾问的全部逻辑,你可以通过它的注释来追踪止损或止盈的触发情况。
if(StringFind(OrderComment(),"tp")>=0)// сработал тейкпрофит
...
你不明白。
你需要做一个单一的函数来填充和排序 在全局层面声明的 数组。数组将需要通过引用传递 给函数。
而你需要额外的函数,从这个数组中取出你需要的数据。