新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 901 1...894895896897898899900901902903904905906907908...1953 新评论 Oleg Kolesov 2019.06.28 21:40 #9001 引自手册。 //+------------------------------------------------------------------+ //| 专家初始化功能|//+------------------------------------------------------------------+intOnInit(){//----获得自定义指标的值doublevalue=iCustom(_Symbol,_Period,":Indicators\\SampleIndicator.ex4",0,0)。 在初始化函数中引用指标变量 ,而不是在启动函数中?在 初始化函数中引用指标变量 只能打开一个位置。 Oleg Kolesov 2019.06.28 21:46 #9002 天色已晚。Artem,你明天能不能回复?预先感谢你。 Artyom Trishkin 2019.06.28 21:50 #9003 Oleg Kolesov: 引自手册。 //+------------------------------------------------------------------+ //| 专家初始化功能|//+------------------------------------------------------------------+intOnInit(){//----获得自定义指标的值doublevalue=iCustom(_Symbol,_Period,":Indicators\\SampleIndicator.ex4",0,0)。 在初始化函数中引用指标变量 ,而不是在启动函数中?在 初始化函数中引用指标变量 只能打开一个位置。 现在是使用OnTick()和其他事件处理程序的时候了,而不是启动。忘记旧MetaTrader 4的功能。新的MQL4现在非常接近于MQL5 - 唯一的区别是交易功能和指标的组织方式不同 - 它们现在是在OnInit()处理程序中创建的 - 一个指标句柄被创建,并对这个句柄进行数据访问。在MQL4中,情况有所不同。但资源的定位是一样的,如果我的记忆没有改变的话。 而对计算数据的访问与通过iCustom()的访问在通常情况下没有太大区别--其名称只是略有不同。 Документация по MQL5: Обработка событий / OnTick www.mql5.com //| TradeByATR.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://www.mql5.com | //| Expert initialization function |... Artyom Trishkin 2019.06.28 21:51 #9004 Oleg Kolesov: 天色已晚。Artem,你明天能不能回复? 预先感谢你。 没有承诺--忙。 迟到的...现在是04:51 ...这就是 "迟到"。 Doszhan Mengaliyev 2019.06.28 22:18 #9005 Artyom Trishkin: 订单设定价格没有被规范化。 所有的价格都应检查StopLevel - 如果订单与价格的距离(点)小于StopLevel值,那么将出现错误130 - 错误的止损点 我认为问题不在StopLevel上,因为它仍然打开了一个订单。但在下一次点击时,它产生了错误 #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #include <Init_Deinit.mqh> // Переменные extern double lots = 0.01; extern int Level = 300; extern double StopL = 300; extern double TakeP = 1000; // Start Programm void OnTick() { //--- вычисленные значений для BuyStop double price_buystop=NormalizeDouble (Ask+Level*Point, Digits); StopL =NormalizeDouble(price_buystop-StopL*Point,Digits); TakeP =NormalizeDouble(price_buystop+TakeP*Point,Digits); //--- Размещаем отложный ордер BuyStop int ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,price_buystop,3,StopL,TakeP,"Rupture",1111,0,clrGreen); if(ticket<0) { Print("BuyStop завершилась с ошибкой #",GetLastError()); } else Print("Функция BuyStop успешно выполнена"); } Valerius 2019.06.29 05:44 #9006 Doszhan: 我认为问题不在StopLevel上,因为它仍然打开了一个订单。但在下一次点击时,它产生了错误 你需要检查价格是否小于止损或价差,那么当然会有错误。这是第一个。 从文字上看,你没有检查订单是否已经被打开。 这样一来,它就会在每次勾选时 打开到无穷大。 Taras Slobodyanik 2019.06.29 06:19 #9007 Oleg Kolesov: H=iCustom(NULL,TF,"::Indicators\\KChange.ex4", History,Period_1,Period_2,MA_method,0,1)。 编译器没有发现任何错误,但测试器的工作速度要慢得多?这是否正常? //----------------------------------------------------------------------------------------------------------------- MQL4手册说:在初始化 函数中对变量的引用? 在 初始化 函数中引用指标变量 ,而不是在启动函数中? 有经验的人请告诉我! 如果速度慢,你需要优化 - 加快指标的速度 你需要调用你想检查指标值的地方,在初始化 中只收到一个值 nelenaby 2019.06.29 08:22 #9008 nalyk: 你正在寻找第三条杠上的分形,它可能不在那里。寻找周期中的第一个分形。 这也是行不通的。下单的依据是2根蜡烛的高低点。 Doszhan Mengaliyev 2019.06.29 13:27 #9009 Valerius: 你需要检查价格是否小于止损或价差,那么当然会有错误。这是第一个。 从文字上看,你没有检查订单是否已经被打开。 否则,它将在每次打勾 时无限期地打开。 没错,它不是在每次打勾时都打开,只打开一次。 Artyom Trishkin 2019.06.29 13:40 #9010 Doszhan: 没错,它不是在每次打勾时都打开,只打开一次。 日志中是否有一个错误130? 以上解释了它的来源以及如何做正确的事情来避免它。 你没有。 1...894895896897898899900901902903904905906907908...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
引自手册。
//+------------------------------------------------------------------+
//| 专家初始化功能|
//+------------------------------------------------------------------+
intOnInit()
{
//----获得自定义指标的值
doublevalue=iCustom(_Symbol,_Period,":Indicators\\SampleIndicator.ex4",0,0)。
在初始化函数中引用指标变量 ,而不是在启动函数中?在 初始化函数中引用指标变量 只能打开一个位置。
引自手册。
//+------------------------------------------------------------------+
//| 专家初始化功能|
//+------------------------------------------------------------------+
intOnInit()
{
//----获得自定义指标的值
doublevalue=iCustom(_Symbol,_Period,":Indicators\\SampleIndicator.ex4",0,0)。
在初始化函数中引用指标变量 ,而不是在启动函数中?在 初始化函数中引用指标变量 只能打开一个位置。
现在是使用OnTick()和其他事件处理程序的时候了,而不是启动。忘记旧MetaTrader 4的功能。新的MQL4现在非常接近于MQL5 - 唯一的区别是交易功能和指标的组织方式不同 - 它们现在是在OnInit()处理程序中创建的 - 一个指标句柄被创建,并对这个句柄进行数据访问。在MQL4中,情况有所不同。但资源的定位是一样的,如果我的记忆没有改变的话。
而对计算数据的访问与通过iCustom()的访问在通常情况下没有太大区别--其名称只是略有不同。天色已晚。Artem,你明天能不能回复? 预先感谢你。
没有承诺--忙。
迟到的...现在是04:51 ...这就是 "迟到"。
我认为问题不在StopLevel上,因为它仍然打开了一个订单。但在下一次点击时,它产生了错误
我认为问题不在StopLevel上,因为它仍然打开了一个订单。但在下一次点击时,它产生了错误
你需要检查价格是否小于止损或价差,那么当然会有错误。这是第一个。
从文字上看,你没有检查订单是否已经被打开。
这样一来,它就会在每次勾选时 打开到无穷大。
H=iCustom(NULL,TF,"::Indicators\\KChange.ex4", History,Period_1,Period_2,MA_method,0,1)。
编译器没有发现任何错误,但测试器的工作速度要慢得多?这是否正常?
//-----------------------------------------------------------------------------------------------------------------
MQL4手册说:在初始化 函数中对变量的引用?
在 初始化 函数中引用指标变量 ,而不是在启动函数中? 有经验的人请告诉我!
如果速度慢,你需要优化 - 加快指标的速度
你需要调用你想检查指标值的地方,在初始化 中只收到一个值
你正在寻找第三条杠上的分形,它可能不在那里。寻找周期中的第一个分形。
你需要检查价格是否小于止损或价差,那么当然会有错误。这是第一个。
从文字上看,你没有检查订单是否已经被打开。
否则,它将在每次打勾 时无限期地打开。
没错,它不是在每次打勾时都打开,只打开一次。
日志中是否有一个错误130?
以上解释了它的来源以及如何做正确的事情来避免它。
你没有。