bool takelimit; // Здесь переменная равна false//--- Здесь вот что: сначала выбирается ордер по тикету (MODE_TRADES здесь не нужно от слова "совсем", что говорит о том, что вы не представляете что вы делаете), //--- далее переменной takelimit присваивается результат работы функции выбора ордера, //--- и если ордер есть с таким тикетом, или был когда-то, то функция вернёт true, и takelimit будет присвоено true, соответственно, будет выведен код последней ошибки,//--- что вовсе не говорит, что ошибка здесь была при выборе ордера по тикету - вы же переменную, хранящую код последней ошибки, не сбросили при помощи ResetLastError()//--- И далее вообще не понятно к чему у вас фигурные скобки - они висят в пустоте, а это составной оператор, который должен после условия идти.if(takelimit=OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print(string(takelimit)+" :",GetLastError());//здесь возвращает число 11, получается ошибка код 11, но не нашел расшифровку нигде?
{
if(iBarShift(Symbol(),0,OrderOpenTime())==1)
deletelimit=OrderDelete(ticket);
if(!deletelimit)
Comment(GetLastError());
}
//+------------------------------------------------------------------+//--- А нужно примерно так (фигурные скобки специально оставил для понимания где какой блок кода):ResetLastError();
if(OrderSelect(ticket,SELECT_BY_TICKET) && OrderCloseTime()==0)
{
if(iBarShift(Symbol(),PERIOD_CURRENT,OrderOpenTime())==1)
{
if(!OrderDelete(ticket))
Print("Ошибка удаления ордера #",(string)ticket,": ",GetLastError());
}
}
else
{
Print("Ошибка выбора ордера #",(string)ticket,": ",GetLastError());
}
int ticket;
void Fn()
{
ResetLastError();//Сбрасываем код предыдущей ошибкиif(!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)){Print(GetLastError());}//Если не выбран ордер по указанному тикету-принтим код ошибкиelse//иначе(если ордер нашёлся)
{
if(iBarShift(Symbol(),0,OrderOpenTime())==1 && !OrderDelete(ticket)){Comment(GetLastError());}//Если выбранный ордер открылся на предыдущем баре и не удалось его удалить(надеюсь Вы работаете с отложенниками)-тогда выводим комент ошибки
}
}
大家好!
我花了半个晚上的时间试图弄清楚为什么一个简单的条件不起作用,请帮助我弄清楚它。
我在历史数据上运行,变量macd1,2,lowprice,highprice都被赋值了,但条件却不想运行,我打破了头也不明白该往哪里挖...(((
也许1和1?/即真和错误代码 1
完全混乱,不了解你在做什么
Print(takelimit,GetLastError())返回两个值,因为第1个变量是bool类型,不需要GetLastError,由于有一个逗号,GetLastError返回调用GetLastError时代码中的最后一个错误?
是的......有两个值,打印.....
这几乎正是你所写的内容。
是的......有两个值可以打印.....
这几乎正是你所写的内容。
完全是一团糟,对自己的工作有误解......
我实际上没有做什么,我只是假设这个人将打印1和1而不是11))
而这一切...
完全是一团糟,对自己的工作有误解...
啊......所以你回应的是错误的人......我明白了)
我实际上没有做什么,我只是假设这个人不会打印11,而是1和1)。
像这里的这句话。
我应该打印 "11 "吗?
那么它将打印 "1:1"。
错误代码 1是没有错误,但结果是未知的。
像这里的这句话。
它可以打印 "11 "吗?
那么它将打印 "1:1"。
错误代码 1是没有错误,但结果是未知的。
是的,我已经改过了!
啊......所以你回应的是错误的人......我明白了)
是的,我是在回复你所回复的同一个人。但你也告诉了他错误的事情--阅读什么时候需要MODE_TRADES,什么时候不需要。以及在票据上应 如何选择订单。
嗯,是的,我是在回答你所回答的同一个人。但你也没有正确地告诉他一切--阅读什么时候需要MODE_TRADES,什么时候不需要。以及在票据上应 如何选择订单。
MODE_TRADES还没有看,只看了11日打印的那篇...