Modify Pending Order
Торговый приказ на модификацию уровней цен отложенного ордера. Требуется указание 7 полей:
action
order
price
sl
tp
type_time
expiration
Пример торговой операции TRADE_ACTION_MODIFY для модификации уровней цен отложенного ордера:
这很清楚。我后面是一个例子,代码如下。
#define EXPERT_MAGIC 123456// MagicNumber эксперта//+------------------------------------------------------------------+//| Модификация отложенных ордеров |//+------------------------------------------------------------------+voidOnStart()
{
//-- объявление и инициализация запроса и результатаMqlTradeRequest request={};
MqlTradeResult result={};
int total=OrdersTotal(); // количество установленных отложенных ордеров//--- перебор всех установленных отложенных ордеровfor(int i=0; i<total; i++)
{
//--- параметры ордераulong order_ticket=OrderGetTicket(i); // тикет ордераstring order_symbol=Symbol(); // символint digits=(int)SymbolInfoInteger(order_symbol,SYMBOL_DIGITS); // количество знаков после запятойulong magic=OrderGetInteger(ORDER_MAGIC); // MagicNumber ордераdouble volume=OrderGetDouble(ORDER_VOLUME_CURRENT); // текущий объем ордераdouble sl=OrderGetDouble(ORDER_SL); // текущий Stop Loss ордераdouble tp=OrderGetDouble(ORDER_TP); // текущий Take Profit ордераENUM_ORDER_TYPE type=(ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE); // тип ордераint offset = 50; // отступ от текущей цены для установки ордера, в пунктахdouble price; // цена срабатывания ордераdouble point=SymbolInfoDouble(order_symbol,SYMBOL_POINT); // размер пункта//--- вывод информации об ордереPrintFormat("#%I64u %s %s %.2f %s sl: %s tp: %s [%I64d]",
order_ticket,
order_symbol,
EnumToString(type),
volume,
DoubleToString(PositionGetDouble(POSITION_PRICE_OPEN),digits),DoubleToString(sl,digits),
DoubleToString(tp,digits),
magic);
//--- если MagicNumber совпадает, Stop Loss и Take Profit не заданыif(magic==EXPERT_MAGIC && sl==0 && tp==0)
{
request.action=TRADE_ACTION_MODIFY; // тип торговой операции
request.order = OrderGetTicket(i); // тикет ордера
request.symbol =Symbol(); // символ
request.deviation=5; // допустимое отклонение от цены//--- установка уровня цены, тейк-профит и стоп-лосс ордера в зависимости от его типаif(type==ORDER_TYPE_BUY_LIMIT)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;
request.tp = NormalizeDouble(price+offset*point,digits);
request.sl = NormalizeDouble(price-offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
elseif(type==ORDER_TYPE_SELL_LIMIT)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_BID)+offset*point;
request.tp = NormalizeDouble(price-offset*point,digits);
request.sl = NormalizeDouble(price+offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
elseif(type==ORDER_TYPE_BUY_STOP)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point;
request.tp = NormalizeDouble(price+offset*point,digits);
request.sl = NormalizeDouble(price-offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
elseif(type==ORDER_TYPE_SELL_STOP)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_BID)-offset*point;
request.tp = NormalizeDouble(price-offset*point,digits);
request.sl = NormalizeDouble(price+offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
//--- отправка запросаif(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // если отправить запрос не удалось, вывести код ошибки//--- информация об операции PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
//--- обнуление значений запроса и результатаZeroMemory(request);
ZeroMemory(result);
}
}
}
//+------------------------------------------------------------------+
在外汇市场上没有价格。
解决办法如下。一定是这样的惊心动魄))。
按你喜欢的方式配置所有的图表显示属性,并将其保存在模板中作为default.tpl。
你是如何做到这一点的?
我不明白为什么要增加这最后一条价格线,从实际意义上来说,它是没有用的。
我如何做呢?
PCM on graphic -> Templates -> Save template
文件名:default.tpl
关于交易、自动交易系统和策略测试的论坛
新手对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论
布鲁克林先生, 2022.02.25 07:15
亲爱的专家们,早上好!
今天,我又遇到了两个我不明白的问题,但这次是在从MQL5参考资料中提取的全部代码中。这一次我没有自己写什么,只是拿了一个现成的例子。
我打开MQL5参考/常量、枚举和结构/数据结构/交易请求的结构。我在那里找到它。
贸易请求的结构这很清楚。我后面是一个例子,代码如下。
我试图理解黄色标示的那一行。一个问题马上出现了:如果这个例子与挂单有关, PositionGetDouble(POSITION_PRICE_OPEN) 与它有什么关系?也许,应该有一条这样的线。
我只在 "专家 "选项卡中发现这个问题。 尊敬的专家,请帮助我理解这个例子,为什么它在目录中,但它的代码却不工作?
问候,弗拉基米尔。
你好。你能告诉我如何将存款提取 到卡上吗?
这是该交易平台开发商的网站。它不是一个经纪人,不是一个DC,没有真正的交易账户。
它 在页面底部清楚地这样说。
请向你的经纪人提出这样的问题--你向你的交易账户转账的是谁。
下午好。你能告诉我如何将存款提取 到卡上吗?
亲爱的开发者们!为什么在第二次和第三次调用中,(T* const Ptr)被重载而不是(T* & Ptr)?
这是一个错误还是一个特点? b3213。
PCM on graphic -> Templates -> Save template
文件名:default.tpl
默认情况下,有这样一个模板。我更换了它。没有任何帮助,唉。在切换到它或从它切换到另一个时,情况还是一样的。
你知道如何给开发者写信吗?当然,这已经向他们报告了几百次了,好吧,我再写。
当滚动时,信号中的标题就会骑上