inputint StopLoss=30; // Stop Lossinputint TakeProfit=100; // Take Profitinputdouble Lot=0.1; // Количество лотов для торговлиint A; ////+------------------------------------------------------------------+voidOnTick()
{
Print( "====================================================", TimeCurrent() ) ;
//--- Объявляем структуры, которые будут использоваться для торговлиMqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросовif(!SymbolInfoTick(_Symbol,latest_price))
{
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
mrequest.sl = NormalizeDouble(latest_price.ask + StopLoss*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask - TakeProfit*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
}
return;
}
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
inputint StopLoss=30; // Stop Lossinputint TakeProfit=100; // Take Profitinputdouble Lot=0.1; // Количество лотов для торговлиint A; ////+------------------------------------------------------------------+voidOnTick()
{
Print( "====================================================", TimeCurrent() ) ;
//--- Объявляем структуры, которые будут использоваться для торговлиMqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросовif(!SymbolInfoTick(_Symbol,latest_price))
{
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
mrequest.sl = NormalizeDouble(latest_price.ask + StopLoss*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask - TakeProfit*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult); // получите (запросите) результаты исполнения / сделки и распечатайте, будет понятней
}
return;
}
Возвращает последнее известное время сервера, время прихода последней котировки по одному из выбранных в "Обзоре рынка" символов. В обработчике OnTick() данная функция вернет время пришедшего обрабатываемого тика. В других случаях (например, вызов в обработчиках OnInit(), OnDeinit(), OnTimer() и так далее) это –...
使用https://www.mql5.com/ru/docs/dateandtime/timecurrent
第二个版本的函数调用
一般来说,它是https://www.mql5.com/ru/docs/dateandtime/timetostruct非常感谢您提供的宝贵信息。
我明白这个结构是什么,如何运作,但我还没有理解所有的细节。
我还没有完全掌握与之相关的微妙之处。在清晰的例子的帮助下,我对新材料的学习有了很大的提高。
如果你能告诉我如何在mql5中写出以下条件的代码,我将非常感激
我已经学会了如何使用结构打开一个订单
如果(Hour()==10)
来打开一个订单。
你不需要写模式来打开订单....。只有条件的书写。
再次感谢您的帮助。
必须是你想如何确定酒吧的价格和时间。
或者说是图表上的时间+价格值中的鼠标点击坐标,条形图需要通过iBarShift()定义。是的,就是这样,因为它被进一步理解。谢谢你)
非常感谢您提供的宝贵信息。
我明白结构是什么,如何运作,但我还没有掌握其中的内涵和外延。
我通过实例更好地学习新材料。在清晰的例子的帮助下,我对新材料的学习有了很大的提高。
如果你能告诉我如何在mql5中写出以下条件的代码,我将非常感激
我已经学会了如何使用结构打开一个订单
如果(Hour()==10)
来打开一个订单。
你不需要写模式来打开订单....。只是记录一下情况。
再次感谢您的帮助。
非常感谢您的帮助。现在一切都很清楚,可以理解。
大家好!
,我正试图将mql4转为mql5。我已经创建了一个简单的代码,打开订单进行测试。在测试器中,EA打开了订单。我把函数Print()放在了void OnTick()函数的开头,我的专家顾问将在每个tick 进入这个函数,并在日记的每个tick上打印。而在第五次打勾时,专家顾问没有输入任何Print()函数,也没有在汽车 注册日志中打印出任何东西。在专家顾问中,可视化和优化被禁用。
请告知如何修改代码,使Print()在每一次打勾时都打印在日记本上,就像4.A.C.D.D.E.E.E.E.E.E.E.E.。
提前感谢那些帮助我的人。
以下是我的代码
我已将EA的存款增加到100 000。结果,在每一个tick上Print()被打印在journal....,但没有一个交易被打开。
但我需要它打开交易和Print()被打印。
大家好!
,我正试图将mql4转为mql5。我已经创建了一个简单的代码,打开订单进行测试。在测试器中,我的EA打开了订单。我把函数Print()放在了void OnTick()函数的开头,我的专家顾问将在每个tick 进入这个函数,并在日记的每个tick上打印。而在第五次打勾时,专家顾问没有输入任何Print()函数,也没有在汽车 注册日志中打印出任何东西。在专家顾问中,可视化和优化被禁用。
请告知如何修改代码,使Print()在每一次打勾时都打印在日记本上,如4.A.C.D.E.E.E.E.E.。
提前感谢那些帮助我的人。
以下是我的代码
我已将EA的存款增加到100 000。结果,在每一个tick上Print()被打印在journal....,但没有一个交易被打开。
但我需要交易被打开,Print()被打印。
看一下日志,看一下打印的内容,每一步的信息都是在那里输入的。最有可能的是,打开订单时出了问题,EA不工作了。
C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E\MQL5\Logs
我们已经讨论过是否有必要从MQL4中反复访问终端数据,那么OrderSelecthttps://www.mql5.com/ru/forum/342989#comment_16743716
我认为也可以在每个勾选中使用100500次,因为输出将在每秒增加数百万次。
市场观察窗口中的符号越多,终端本身的负荷就越大,而且,如果你从很多不同的符号中调用数据,那么你也会得到滞后。
也就是说,如果你合理地使用终端,没有什么会被冻结--在市场观察窗口中,有十个你使用的符号
我没有检查过你可以同时打开多少个图表,但我认为如果你把历史记录限制在1000条,那么我认为终端可能会打开几十个图表窗口而没有任何问题。
100
看一下日志,看看它打印了什么,每一步都有信息记录。最有可能的是,开单有问题,EA不工作了。
C:\Users\....\AppData\Roaming\MetaQuotes\Terminal\99193835FC75DE8874B99F9A3B93F15E\MQL5\Logs
谢谢你的提示。
这真的没有用。它说。
2020.10.27 06:40:45.311 Tester EURUSD: 历史数据从2018.01.02 00:00开始
2020.10.27 06:40:45.312 核心1 连接到127.0.0.1:3000
2020.10.27 06:40:45.312 Core 1 已连接。
2020.10.27 06:40:45.320 Core 1 authorized (agent build 2650)
2020.10.27 06:40:45.323 Tester EURUSD,M1 (Alpari-MT5-Demo): 从2020.09.01 00:00到2020.09.03 00:00测试 experts\GRAAL.ex5
2020.10.27 06:40:45.327 核心1 通用同步完成。
2020.10.27 06:40:45.328 Tester 分析的历史质量为100%。
2020.10.27 06:40:45.348 Core 1 test experts\GRAAL.ex5 on EURUSD,M1 thread finished
2020.10.27 06:40:45.348 核心1
2020.10.27 06:40:45.348 Core 1 登录(构建2650)
2020.10.27 06:40:45.348 Core 1 发现货币为美元的账户信息。
2020.10.27 06:40:45.348 Core 1 1482字节的测试器参数被加载。
2020.10.27 06:40:45.348 Core 1 1724字节的输入参数被加载。
2020.10.27 06:40:45.348 核心1 以点计算利润,初始存款10000,杠杆1:100
2020.10.27 06:40:45.348 Core 1 成功初始化。
2020.10.27 06:40:45.348 Core 1 共收到731字节的初始化数据
2020.10.27 06:40:45.348 Core 1 Intel Core i5-6400 @ 2.70GHz, 7883 MB
2020.10.27 06:40:45.348 Core 1 EURUSD:符号 要同步了
2020.10.27 06:40:45.348 Core 1 EURUSD: 符号已经同步,收到18个字节
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: 从2019.01.02 06:00开始缓存的历史数据
2020.10.27 06:40:45.348 Core 1 EURUSD,M1 (Alpari-MT5-Demo): 每个tick都在产 生
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: 从2020.09.01 00:00到2020.09.03 00:00开始测试experts\GRAAL.ex5的输入。
2020.10.27 06:40:45.348 Core 1 StopLoss=30
2020.10.27 06:40:45.348 Core 1 TakeProfit=100
2020.10.27 06:40:45.348 核心1 Lot=0.1
2020.10.27 06:40:45.348 核心1 最终余额10000.00点
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: 111967 ticks, 2880 bars generated.测试在0:00:00.019通过。
2020.10.27 06:40:45.348 核心1 使用了270Mb内存,包括35Mb的历史数据,64Mb的tick数据。
2020.10.27 06:40:45.348 Core 1 日志文件 "C:\Users\a1960\AppData\Roaming\MetaQuotes\Tester\36A64B8C79A6163D85E6173B54096685\Agent-127.0.0.1-3000\logs\20201027.log "写入
2020.10.27 06:40:45.371 Core 1 连接关闭
我正在测试它,为期一天。这意味着专家顾问应该打开1440个订单。这可能是一个问题。也许,在同一时间内,对未结订单的数量有一些限制。
如果我检查了,可能是因为当我的EA的存款有10 000时,它只开了300个订单,其余的因某些与钱有关的原因而错过了(我从日记账中了解到)。后来,我把EA的存款增加到100 000,它就没有权利再跳过了。而且它完全停止了开单。
但后来我又把EA的存款减少到10 000。然而,我的专家顾问仍然没有打开任何东西,总是写着我上面所说的数值。
我已经创建了另一个EA。我把同样的代码下载到里面。我有10 000元的存款。我也遇到了同样的问题:我没有打开订单。
请告知如何使我的EA正常工作。它发出了同样的信息,只是我的高亮黄线有271,而不是270 mb
我有Windows 10。我有64位操作系统和8GB内存。
谢谢你。
谢谢你的提示。
这真的没有用。它说。
2020.10.27 06:40:45.348 Core 1 EURUSD,M1: 111967 ticks, 2880 bars generated.测试在0:00:00.019通过。
2020.10.27 06:40:45.348 核心1 使用了270Mb内存,包括35Mb的历史数据,64Mb的tick数据。
2020.10.27 06:40:45.348 Core 1 日志文件 "C:\Users\a1960\AppData\Roaming\MetaQuotes\Tester\36A64B8C79A6163D85E6173B54096685\Agent-127.0.0.1-3000\logs\20201027.log "写入
2020.10.27 06:40:45.371 Core 1 连接关闭
我正在测试它,为期一天。这意味着专家顾问应该打开1440个订单。这可能是一个问题。也许,对同时开启的订单数量有一些限制。
如果我检查了,可能是因为当我的EA的存款有10 000时,它只开了300个订单,其余的因某些与钱有关的原因而错过了(我从日记账中了解到)。后来,我把EA的存款增加到100 000,它就没有权利再跳过了。而且它完全停止了开单。
请告知如何使我的EA正常工作。
我将一直努力让它像以前一样工作。
如果每天有1440个订单,专家顾问应该检查分钟的开始,或者更简单,检查一分钟的柱子的出现。而它在这一刻打开。你没有,因此EA在每个tick都开仓,根据我们在当前报价的符号,这本身就是一个艰难的条件。这一条件可能没有得到满足,因此会漏掉蜱虫。而在某些时候,会发生一个关键的错误。
也是订单执行 的类型(建立头寸的订单) 全部或没有。
能否请你告诉我!?
为什么当新的刻度出现时,服务器的时间没有更新?
在EA启动的那一刻,一切都按部就班地进行,但时间过去后,当前分钟的新值却没有进入变量。
也就是说,专家顾问的工作取决于变量int M = TimeMinute(TimeCurrent())中获得的数字。
实际上这一行代码来自于参考文献,它不起作用。
例如,我在12点启动它-- 服务器返回的当前时间 与变量中的时间相对应,但随后变量仍停留在12点,尽管时钟上已经有15-20分钟了。