Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
//--- Do we have positions opened already?bool Buy_opened=false; // variable to hold the result of Buy opened positionbool Sell_opened=false; // variables to hold the result of Sell opened positionif(PositionSelect(_Symbol)==true) // we have an opened position
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
Buy_opened=true; //It is a Buy
}
elseif(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
Sell_opened=true; // It is a Sell
}
}
//+------------------------------------------------------------------+//| СОВЕРШАЕМ СДЕЛКУ |//+------------------------------------------------------------------+if(last_tick.last < BBLow[2] && Buy_opened == false)
{
int znak = last_tick.last - BBLow[2];
//--- 1. Создать запросMqlTradeRequest Trade_reqst={0}; // Инициализация структуры торгового запроса
Trade_reqst.action=TRADE_ACTION_DEAL; // Тип: немедленное совершение сделки
Trade_reqst.symbol=_Symbol; // Инструмент: текущий
Trade_reqst.volume=Lot; // Объём: 1 лот
Trade_reqst.price=SymbolInfoDouble(_Symbol,SYMBOL_ASK)-TakeProfit*_Point; // Цена исполнения
Trade_reqst.type=ORDER_TYPE_BUY; // Тип ордера: на продажу
Trade_reqst.type_filling=ORDER_FILLING_RETURN; // Политика исполнения
Trade_reqst.sl=last_tick.last - StopLoss * _Point; // Stop Loss
Trade_reqst.tp=SymbolInfoDouble(_Symbol,SYMBOL_ASK) + TakeProfit * _Point; // Take Profit// Trade_reqst.tp=Trade_reqst.price + TakeProfit * 2 * _Point; // Take Profit//--- 2. Отправить торговый приказMqlTradeResult Trade_reslt={0}; // Инициализация структуры результата торгового запросаOrderSend(Trade_reqst,Trade_reslt); // Отправка торгового запроса на сервер//--- выведем в лог ответ сервера //Print(__FUNCTION__," - : - ",Trade_reslt.comment);if(Trade_reslt.retcode==10016) Print("Ответ: ",Trade_reslt.bid,Trade_reslt.ask,Trade_reslt.price);
大家晚上好!我决定在测试器中对未平仓的交易进行追踪,试着通过OrderGet....(),发现交易从订单类别变成了未平仓,分别通过PositionGet....(),但同样没有任何效果。
问题是,我现在是否应该使用HistoryDealGet...()?还是我不明白什么?在测试器中修改开仓交易的SL,该怎么做?提前感谢您的意见。
请指导我!!!!,如何在MQL5中实现对图形对象存在(或不存在)的检查,例如趋势线或垂直线?
理想情况下,我希望使用类似于 "如果秩序不存在 "或 "如果秩序存在 "的逻辑。
请指导我!!!!,如何在MQL5中实现对图形对象存在(或不存在)的检查,例如趋势线或垂直线?
理想情况下,我希望使用类似于 "如果秩序不存在 "或 "如果秩序存在 "的逻辑。
您能告诉我们如何正确实现购买算法吗?
目前,专家顾问不得不多次买入,直到收到有未结头寸的 信息,它就落后了。如何使专家顾问在第一次买入后等待交易所的回应(当条件到来时)。
现在的问题是,变量Bye_opened 应该变成真,这应该使EA在止损点被触发之前不会进行不必要的交易。 但是改变变量 Bye_opened 需要很长的时间, EA有时间做几次交易。
我的代码中缺少什么?请指出不足之处。
现在的问题是,变量Bye_opened 应该变成真,这应该使EA在止损点被触发之前不会进行不必要的交易。 但变量 Bye_opened 的变化需要很长的时间, EA有时间做几个交易。
仅仅因为一个变量的变化需要很长的时间...你是如何确定的?好吧,让我们假设它是。那么,答案就在于这个问题。如果你需要一个延迟开仓 的时间,你必须使用Sleep( N ),其中N是通过实验计算的。
变体2。答案还是在问题中。让Bye_opened成为全局性的,在位置成功打开后立即改变它,就在这个模块中。以同样的方式复位,就像你检查位置的存在一样。
...
如果你插入一个行
在命令:OrderSend()之后,将不会有重新开仓的情况。
也许先检查一下是否已经开仓,然后再......。
???
显然,他有一个机器人在每一次的勾选中运行。在向服务器发送订单和收到服务器的响应之间,还会有几个刻度出现,每个刻度都会有一个额外的头寸打开。我的建议排除了重复开场的情况。而且有必要检查一个仓位是否已经被打开。
这就是我所说的。否则,它将从字面上理解一切,并错过一个重要的检查。
所以这实际上是如何正确检查的?对不起,我搞不清楚状况。
下面是代码(全部位于OnTick 块中)。
为了避免打开不必要的卷宗。
不幸的是,这个条件在开仓交易时不起作用。