任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 148

 

你好。
OrderSelect函数 返回错误0(ERR_NO_ERROR - 贸易交易成功)?
如何避免这个错误?
我在此附上程序代码和日记条目。
恭敬地说。舒尔金。

//+------------------------------------------------------------------+
//|                                                    PoligonTd.mq4 |
//|                                           17 сентября 2013 года. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "17 сентября 2013 года."
#property link      ""

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----Функция OrderSelect--------------------------------------------+
string Str="#20552937 buy 1.00 GBPUSD at 1.55450";//Строка
int Tct=StrToDouble(StringSubstr(Str,1,9));//Номер ордера
   if(OrderSelect(Tct,SELECT_BY_TICKET)==true)//Выбор ордера по номеру
string OdSmb=OrderSymbol();//Символ ордера
   else Print("OrderSelect() вернул ошибку - ",GetLastError());
Print("Кс:"," Str=",Str,"; Tct ",Tct,"; OdSmb ",OdSmb,"?");//Кс
//----
   return(0);
  }
//+------------------------------------------------------------------+

2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: remove
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: uninit reason 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: Ks: Str=#20552937 buy 1.00 GBPUSD at 1.55450; Tct 20552937; OdSmb ?
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: OrderSelect() returned error - 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: loaded successfully

 
Shurkin:

你好。
OrderSelect函数返回错误0(ERR_NO_ERROR - 贸易交易成功)?
如何避免这个错误?
我在此附上程序代码和日记条目。
注意到。舒尔金。

2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: 删除
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: uninit reason 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: Kc: Str=#20552937 buy 1.00 GBPUSD at 1.55450; Tct 20552937; OdSmb ?
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily: OrderSelect() 返回错误 - 0
2013.09.17 13:07:04 PoligonTd GBPUSD,Daily:加载成功

实际上没有选择错误,有这样一张票的订单并不存在。
 
Sepulca:
事实上,没有选择错误,有这样一张票的订单并不存在。 。

嗯...如果没有这个票据的订单,OrderSelect()将返回false。

因此,似乎有一个错误,因为我们要转移到其他地方。问题是为什么没有错误?

 

我想不出如何用最少的精力来实现这个逻辑。

如果(......)设置一个止损单。

如果(订单的有效期>时间)撤回订单,如果(...)设置一个新订单。

困难的是,可能有几个位置 已经开放 了,我们怎样才能把它们都打下来呢?什么是最简单的方法?

谢谢你!

 

我在考虑放弃特殊的init()函数。我想这是正确的解决方案,不是吗?

我的看法是这样的。

1.全局声明一个变量,例如,像这样。

gInitTrue = false;

然后我们创建我们自己的INIT。

bool myInit()
{
  // Инициализируем..
  // неоходимые..
  // нам..
  // переменные..
  return(true);
}

在最开始的时候,像这样的开始。

if (gInitTrue == false)
    myInit();
如果能听到更多有经验的人对这种方法是否合适的意见,以及对我提出的这个问题的解决方案是否正确的意见,将是很有意思的。
 
Sepulca:

更多的缓冲区。

哎呀,出错了。我还需要添加2种颜色,用于2个缓冲器。
 
hoz:

我在考虑放弃特殊的init()函数。我想这是正确的解决方案,不是吗?

我的看法是这样的。

1.全局声明一个变量,例如,像这样。

然后我们创建我们自己的INIT。

在最开始的时候,像这样的开始。

如果能听到更多有经验的人对这种方法是否合适的意见,以及对我提出的这个问题的解决方案是否正确的意见,将是很有意思的。

感受新的解决方案有什么新意?:-))

一个该死的东西。从来不需要这样做。

 
artmedia70:

嗯...如果没有这个票据的订单,OrderSelect()将返回false。

因此,似乎有一个错误,因为我们要转移到其他地方。问题是为什么会有零?



我检查过了--如果票号相符--一切正常。

如果不是--函数返回False,但OrderSelect() 是沉默的,因为什么都没有发生,ZERO,什么都没有发生。

 
Zhunko:

感受新的解决方案有什么新意?:-))

一个该死的东西。从来不需要这样做。



但更重要的是什么?已经讨论过了,INIT在例如断开连接或其他类似情况下可能会失败。因为它不会在事后重新初始化数据本身,以备不时之需,而且它只运行一次!因此,这并不是真正正确的选择。
 

这个问题很枯燥,但答案却无处可寻,或许我只是看错了。

在函数中,也可能在其他地方,我见过数据类型 后面的& 符号,如果我没记错的话,有一次&&

func(int& mm_mode, string symbol, int magic,bool& stop) {

它的作用是什么? 它能做什么?(参考,如果你能找到更多的信息))。