bool res=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Blue);
if(!res)
Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
elsePrint("Цена Stop Loss ордера успешно модифицирована.");
bool res=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Blue);
if(!res)
Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
else Print("Цена Stop Loss ордера успешно модифицирована.");
我开始为开仓和修改订单的函数写一个封装器(我认为它可以解决我在这些操作符的返回值 方面的问题),但还是有同样的问题。
解释一下问题所在(无论我怎么写,从OrderSend、OrderSelex和ModifyOrder返回的值总是有问题)。
包裹代码.
int start()
{
如果(信号==1)
{
OrderSendX(Symbol(),OP_BUY,0.1,Ask,0,500,500,"123",123,0,Red);
}
return(0);
}
//-----------------------------------------------
int OrderSendX (string symbol,int cmd, double volume,double price,int slippage,double stoploss,double takeprofit,string comment,
int magic,datetime expiration,color arrow_color)
{
int err=GetLastError()。
err = 0。
bool exit_loop = false。
int ticket = -1;
int Retry = 10;
int cnt = 0。
如果(cmd == OP_BUY || cmd == OP_SELL) //检查要开的订单类型。
{
while(!exit_loop)
{
ticket = OrderSend(symbol,cmd,volume,price,slipage,stoploss,takeprofit,comment,magic,expiration,arrow_color);
err = GetLastError()。
switch(err)
{
case ERR_NO_ERROR:
exit_loop = true。
突破。
{ case ERR_SERVER_BUSY:
case ERR_NO_CONNECTION:
case ERR_INVALID_PRICE:
case ERR_BROKER_BUSY:
case ERR_TRADE_CONTEXT_BUSY:
cnt++。
突破。
case ERR_PRICE_CHANGED:
case ERR_OFF_QUOTES:
case ERR_REQUOTE:
RefreshRates()。
继续。
默认情况下。
exit_loop = true。
突破。
}
如果(cnt>Retry)
exit_loop = true。
if(!exit_loop)
{
睡眠(1000)。
RefreshRates()。
}
否则
{
如果(err !=ERR_NO_ERROR)
{
Print("Error : " + err);
}
}
如果(err ==ERR_NO_ERROR)
{
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)。
return(ticket)。
}
Print("Error opening order after" + cnt + "attempts");
返回(-1)。
}
}
}
我开始为开仓和修改订单的函数写一个封装器(我认为它可以解决我在这些操作符的返回值 方面的问题),但还是有同样的问题。
向我解释一下问题所在(无论我写了什么,我在从OrderSend、OrderSelex和ModifyOrder返回值时总是有问题)。
https://docs.mql4.com/ru/trading/ordermodify
OrderModify()返回yes , no
没有人可以解释。
让我们尝试另一个例子,而不是把帮助复制100次给我。
我将用一个例子来理解改正。
{
SL=NormalizeDouble(Bid-TrailingStop*Point,Digits)。
如果(OrderStopLoss()!=SL)
OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0)。
}
请勿插入
""票据""=OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0); 每次都正确吗?
并感谢每一位试图解释的人。
不幸的是,我不明白如何将一个变量指定给一个预定义为函数的变量。
并感谢每一位试图解释的人。
不幸的是,我不明白如何将一个变量指定给一个预定义为函数的变量。
亲爱的Leanid。 学会阅读帮助,并与错误和警告一起工作。如果你不学习如何做,你甚至不会正确编程。这些是基本的。你有没有试着翻译警告中写的内容?你理解 "需要检查 "的功能的含义吗?帮助描述了一个处理这些功能的正确例子。例如,OrderModify()。看一下帮助。
返回值
如果函数成功完成,它将返回 "true",如果出现错误,则返回 "false"。要获得错误的信息,你需要调用GetLastError()函数。
然后跟随一个例子。
正如你所看到的,函数的返回值是在if-else操作符中处理的。需要res变量的原因是 "为了美"。它是执行交易功能 的结果! 你的钱所依赖的功能!相应地,为了正确处理所有可能的变体(本例中的处理没有提供),我们需要res变量和GetLastError()函数返回的错误代码。开发人员特意加入了警告,以提醒人们不要忘记有 "重要 "的函数要注意处理值!还要注意,如果没有检查值,就不会有错误!如果没有检查值,就不会有错误。也就是说,在这种情况下,该功能将照常工作,但如果发生异常情况,将不被处理。非标准情况的列表是GetLastError()函数的返回代码。
我希望这样会更清楚。
开始为订单打开和修改函数写一个包装器(以为这样可以解决我从这些运算符返回数值 的问题),但还是有同样的问题。
而在这种情况下,我们不需要写一个包装器。它不会解决关于检查返回值的警告问题!请看一下这些函数的例子,并做同样的事情吧!
正如参考文献中指出的那样,给出了一个错误。
我这样写的,很好
如果(OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0))
{
Print("Modification was successful.");
}
else Print("修改 订单错误。")。
在帖子中正确插入代码:在论坛中正确插入代码
为什么 "拖网 "对销售不起作用? 它对购买起作用!?
没有错误或警告,在基因编译中。
以下是代码。