inputint StopLoss =499; // Stop Lossinputint TakeProfit =999; // Take Profitinputint EA_Magic =12345; // Magic Number советникаinputdouble Lot =0.1; // Количество лотов для торговли//---MqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросов//---int STP = StopLoss;
int TKP = TakeProfit;
//+------------------------------------------------------------------+//| ИНИЦИАЛИЗАЦИЯ |//+------------------------------------------------------------------+intOnInit()
{
//--- Для работы с брокерами, использующими 5-ти значные котировки,// умножаем на 10 значения SL и TP
STP = StopLoss;
TKP = TakeProfit;
if(_Digits==5 || _Digits==3)
{
STP = STP*10;
TKP = TKP*10;
}
return(0);
}
//+------------------------------------------------------------------+//| ДЕИНИЦИАЛИЗАЦИЯ |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
}
//+------------------------------------------------------------------+//| СОБЫТИЕ ТИК ТЕКУЩЕГО СИМВОЛА |//+------------------------------------------------------------------+voidOnTick()
{
SymbolInfoTick(Symbol(),latest_price); // Получаем текущие цены//---
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // последняя цена ask
mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type = ORDER_TYPE_BUY; // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
}
//---
如果事实证明这件事是在执行模式中,那么大约应该这样做。
// В режиме Instant Execution позицию можно открыть// сразу с установленными уровнями Stop Loss и Take Profitif(smb.trade_exec==SYMBOL_TRADE_EXECUTION_INSTANT)
{
// Если позиция не открылась, вывести сообщение об этомif(!trd.PositionOpen(_Symbol,type_ord,lot,oprice,sl,tp,comment))
{ Print("Ошибка при открытии позиции: ",GetLastError()," - ",ErrorDesc(GetLastError())); }
}
//---// В режиме Market Execution сначала нужно открыть позицию и// только после этого можно установить уровни Stop Loss и Take Profitif(smb.trade_exec==SYMBOL_TRADE_EXECUTION_MARKET)
{
// Если позиции нет, то сначала откроем позицию// а затем установим Stop Loss и Take Profitif(!pos.exist)
{
// Если позиция не открылась, вывести сообщение об этомif(!trd.PositionOpen(_Symbol,type_ord,lot,oprice,0,0,comment))
{ Print("Ошибка при открытии позиции: ",GetLastError()," - ",ErrorDesc(GetLastError())); }
else
{// Если позиция открылась, то сначала выберем её и...if((pos.exist=PositionSelect(_Symbol))) // ...если позиция есть, то...
{
// ...установим Stop Loss и Take Profitif(!trd.PositionModify(_Symbol,sl,tp))
{ Print("Ошибка при модификации позиции: ",GetLastError()," - ",ErrorDesc(GetLastError())); }
}
}
}
else
{// Если позиция есть, то увеличим её объём и// оставим Stop Loss и Take Profit на их прежнем уровне// Если позиция не открылась, вывести сообщение об этомif(!trd.PositionOpen(_Symbol,type_ord,lot,oprice,sl,tp,comment))
{ Print("Ошибка при открытии позиции: ",GetLastError()," - ",ErrorDesc(GetLastError())); }
}
}
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
Первое, что следует отметить и принять как должное, это отсутствие локов - встречных позиций. Пожалуй, это основное, что вызывает у части трейдеров недоумение и, возможно, разочарование, в то время как для тех, кто торгует без локов, это изменение вполне закономерно и логично. Если мы обратимся к другим профессиональным платформам, то увидим...
我通过ZeroMemory(mrequest)清零了。
我不太了解订单执行 模式,阿尔帕里经纪人,我认为一切都很标准。该死的,这不管用,我就是不想做。我看了一下订单的sl和tp,它显示的是当前价格+sl。我不知道什么是正常的!"。
即使在这种形式下,服务器上的MQ错误在测试器中也不会发生。
//---
如果事实证明这件事是在执行模式中,那么大约应该这样做。
如何在MQL5中把它写得更短?
你能告诉我MT5的经济日历 在哪里吗?我在我的里面找不到(有的新闻每隔1到5分钟就会准确无误地出现,都不一样)。
谢谢。
http://www.profi-forex.org/journal/number17/page8.html#prettyPhoto
你能告诉我MT5的经济日历在哪里吗?我在我的里面找不到(有的新闻每隔1到5分钟就会准确无误地出现,都不一样)。
谢谢。
http://www.profi-forex.org/journal/number17/page8.html#prettyPhoto
进来的新闻是邮件标签。
日历也在那里。
只有当你连接到真正的MT5账户时,你才能看到它们
mzk_3om6u:
你能告诉我MT5的经济日历在哪里吗?我在我的里面找不到(有的新闻每隔1到5分钟就会准确无误地出现,都不一样)。
谢谢。
从终端帮助(F1)。
如果贸易服务器上的经济日历被禁用,这个标签可能会丢失。
>>日历
你能告诉我MT5中的经济日历在哪里吗...?
经纪人可能不提供日历,相应地,某位经纪人可能没有日历。似乎是这样的。
下午好。
我在哪里可以提出与日程安排变化有关的问题。
这方面的一个例子。我已经多次检查了公司人工控制的时间表,并经常确认。
请写下这个问题的链接!谢谢。
下午好。
我在哪里可以提出与日程安排变化有关的问题。
这方面的一个例子。我已经多次检查了公司人工控制的时间表,并经常确认。
请给我发一个这个问题的链接。
请解读。你是什么意思?历史、交易、制图......?
首先,在任何情况下 - 向公司的技术支持。有证据(截图、日志)。
问候。
你能告诉我,原则上是否可以写一个脚本,将蜡烛图数据传输到Excel文件中?