MetaTrader 4 Build 529测试版发布,带有新的编译器 - 页 18 1...111213141516171819202122232425...161 新评论 Sergey Dzyublik 2013.11.06 11:38 #171 mr_Johns: MQL4手册(在编辑器中)是否也进行了相应的更新? 是的,并要求更新。 MQL4手册 几乎是以5为基础的,目前并不符合编译器的实际情况。 Andrey Khatimlianskii 2013.11.06 11:42 #172 ALXIMIKS: 如果我弄错了,请纠正我。 我在一个指标中使用了一个库函数,这个函数声明了一些静态 变量,参与了指标数组的计算。 如果我想改变指标参数,以纠正指标计算(取决于静态变量)。 将该标志传递给负责重新初始化的库函数(你应该扩展每个有静态变量的函数的输入参数)。 在正文中对静态变量进行归零,不要忘记在完成计算之前删除标志。 如果静态变量有一些参数,在其声明时设置,负责这些变量在重新初始化时是否会被重置为零,那就容易多了。 制作全局变量 而不是局部静态变量(在函数之外),并在第一次调用时初始化它们。 Vladimir Gomonov 2013.11.06 11:44 #173 ALXIMIKS: 如果静态变量在声明时有一些参数需要设置,负责这些变量的值是否会在重新初始化时被重置,那就简单多了。 如果开发者制作像ResetStaticVars()这样的特殊函数,那就更容易了。 // 顺便说一下,这不是那么容易做到的。我不会。简单地将整个数据段归零是一回事,另一回事是正确分配所有用户的初始值。 不过,这也是一种痛苦。 实际上(作为一种范式)在程序的生命周期内保存数值是相当方便的。 这里只是一个向后兼容的问题,所以......。 Mladen Rakic 2013.11.06 11:45 #174 我知道这是论坛的俄语部分,但由于我不善于说俄语(尽管我能读懂),希望大家不要介意在这里发帖(因为就这些问题而言,英语部分似乎完全不活跃,而且我没有看到有人发帖讨论这个问题)。 新的metatrader有一个严重的问题,涉及外部字符串参数。最初它们有一个正确的值,但一旦时间框架或符号 被改变,字符串参数的内容就会丢失。下面是一个简单的例子,它将准确地显示正在发生什么。当这些指标通过iCustom()调用使用时,这个问题也会发生,这使得任何EA或其他代码都无法使用这些指标。 #property indicator_chart_window extern string TestString = "whatever value that we want initially set"; int OnInit() { return(0); } int deinit() { return(0); } int start() { Comment(TestString); return(0); } Vladimir Gomonov 2013.11.06 11:46 #175 ALXIMIKS: 是的,有更新请求。MQL4的手册 几乎是基于5的,并 不符合目前编译器的实际情况。 也许他们在那里留下了在不久的将来的东西,我指望它。 Renat Fatkhullin 2013.11.06 13:37 #176 mr_Johns: MQL4手册(在编辑器中)是否也进行了相应的更新? 是的,它已经更新了很久,并且每天都在积极补充。 Vladimir Pastushak 2013.11.06 17:41 #177 我想不明白为什么我们需要这样的设计 #property icon "\\Files\\button.ico" Andrey Khatimlianskii 2013.11.06 18:00 #178 VOLDEMAR: 我想不明白为什么我们需要这样的设计 当你启动EA时,在 "常规 "标签上会有一张图片。 Vladimir Pastushak 2013.11.06 18:26 #179 无图片 Алексей Тарабанов 2013.11.06 19:00 #180 mladen:我知道这是论坛的俄语部分,但由于我不善于说俄语(尽管我能读懂),希望大家不要介意在这里发帖(因为就这些问题而言,英语部分似乎完全不活跃,而且我没有看到有人发帖讨论这个问题)。新的metatrader有一个严重的问题,涉及外部字符串参数。最初它们有一个正确的值,但一旦时间框架或符号被改变,字符串参数的内容就会丢失。下面是一个简单的例子,它将准确地显示正在发生什么。当这些指标通过iCustom()调用使用时,这个问题也会发生,这使得任何EA或其他代码都无法使用这些指标。姆拉登,我用俄语回答比较容易,因为你的阅读能力很流利。 以下是我对这个问题的解决方案。在我的init()代码中,我包含了ReInit()函数,它重新初始化了那些全局变量,当时间框架或符号发生变化时,这些变量的值应该被恢复。 //----------------------------------------------------------------------------- int init(){ int Error; if( МинНаклонТренда<Zero ) МинНаклонТренда=0; if( МинНаклонТренда-МаксНаклонТренда>Zero ) МаксНаклонТренда=МинНаклонТренда; if( БарОкончания<1 ) БарОкончания=1; if( МинБазовыйПериод<1 ) МинБазовыйПериод=1; if( МаксБазовыйПериод<МинБазовыйПериод ) МаксБазовыйПериод=МинБазовыйПериод; if( БарНачала<МинБазовыйПериод+БарОкончания ) БарНачала=МинБазовыйПериод+БарОкончания; if( БарНачала>Bars-1 ){ if( Bars>МинБазовыйПериод+БарОкончания ) БарНачала=Bars-1; else Alert("Неразрешимая ошибка: история("+Bars+")<=активация("+МинБазовыйПериод +")+окончание("+БарОкончания+")"); } if( ТолщинаТрендовой<1 ) ТолщинаТрендовой=1; if( ТолщинаТрендовой>5 ) ТолщинаТрендовой=5; if( РазмерИндикатораТиков<1 ) РазмерИндикатораТиков=1; if( РазмерИндикатораТиков>5 ) РазмерИндикатораТиков=5; if( СдвигИндикатораТиков<3 ) СдвигИндикатораТиков=3; if( СдвигИндикатораТиков>100 ) СдвигИндикатораТиков=100; if( ПоказыватьВсе ) Visibility=0; else Visibility=EMPTY; LastBar =БарОкончания; ЦветЛиний[0]=ЦветПоддержки; ЦветЛиний[1]=ЦветСопротивления; ЦветХорды[0]=ЦветВосходящейХорды; ЦветХорды[1]=ЦветНисходящейХорды; Цвет123[0] =Цвет123 ВТ; Цвет123[1] =Цвет123 НТ; NewTime =0; ReInit(); // Повторная инициализация ClearScreen(); // Очистить экран Error=fVLine("StartLine","Старт",0,БарНачала,0,0,0,0,0,ЦветВертикалей); Error=fVLine("DeadLine","Пуск",0,БарОкончания,0,0,0,0,0,ЦветВертикалей); DeadLine=TimeCurrent(); if( СтатическийРежим ){ if( РежимОтладки ) РежимРаботы=" Отладка "; else РежимРаботы=" "; РежимРаботы=РежимРаботы+"Статический режим Пауза "+ПериодИмитацииТиков+" мс"; МоделироватьДинамику=false; //РежимОтладки=false; while( true ){ // Бесконечный цикл ReInit(); // Повторная инициализация start(); // Имитация тика Sleep(ПериодИмитацииТиков); // Не работает в индикаторах } } else { if( МоделироватьДинамику ){ РежимРаботы=" Режим имитации динамики Размерность "+DoubleToStr(0.5*БарНачала*БарНачала,0); Print(" "+Version+РежимРаботы+" История: "+(БарНачала)+" баров с "+TimeToStr(Time[БарНачала])); LastBar=БарНачала; while( LastBar>БарОкончания ){ // Перебор всех баров истории LastBar--; start(); // Имитация тика } МоделироватьДинамику=false; Print(" Режим имитации динамики отключен!"); } } if( РежимОтладки ) РежимРаботы=" Отладка "; else РежимРаботы=" "; РежимРаботы=РежимРаботы+"Динамический режим"; Print(" "+Version+РежимРаботы+" История: "+(БарНачала)+" баров с "+TimeToStr(Time[БарНачала])); if( !ПечататьПредупреждения ) Print("Печать предупреждений запрещена!"); if( РежимОтладки ) start(); // Имитация тика return(0); } //----------------------------------------------------------------------------- // Повторная инициализация глобальных переменных и массивов void ReInit(){ StartTime[0] =Time[БарНачала]; StartTime[1] =Time[БарНачала]; Groups[0] =0; Groups[1] =0; OldMG[0] =0; OldMG[1] =0; MainGroup[0] =0; MainGroup[1] =0; QualityMax[0] =0; QualityMax[1] =0; OldStopLine =0; return; } //----------------------------------------------------------------------------- 1...111213141516171819202122232425...161 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
MQL4手册(在编辑器中)是否也进行了相应的更新?
是的,并要求更新。 MQL4手册 几乎是以5为基础的,目前并不符合编译器的实际情况。
如果我弄错了,请纠正我。
我在一个指标中使用了一个库函数,这个函数声明了一些静态 变量,参与了指标数组的计算。
如果我想改变指标参数,以纠正指标计算(取决于静态变量)。
将该标志传递给负责重新初始化的库函数(你应该扩展每个有静态变量的函数的输入参数)。
在正文中对静态变量进行归零,不要忘记在完成计算之前删除标志。
如果静态变量有一些参数,在其声明时设置,负责这些变量在重新初始化时是否会被重置为零,那就容易多了。
如果静态变量在声明时有一些参数需要设置,负责这些变量的值是否会在重新初始化时被重置,那就简单多了。
如果开发者制作像ResetStaticVars()这样的特殊函数,那就更容易了。
// 顺便说一下,这不是那么容易做到的。我不会。简单地将整个数据段归零是一回事,另一回事是正确分配所有用户的初始值。 不过,这也是一种痛苦。
实际上(作为一种范式)在程序的生命周期内保存数值是相当方便的。 这里只是一个向后兼容的问题,所以......。
我知道这是论坛的俄语部分,但由于我不善于说俄语(尽管我能读懂),希望大家不要介意在这里发帖(因为就这些问题而言,英语部分似乎完全不活跃,而且我没有看到有人发帖讨论这个问题)。
新的metatrader有一个严重的问题,涉及外部字符串参数。最初它们有一个正确的值,但一旦时间框架或符号 被改变,字符串参数的内容就会丢失。下面是一个简单的例子,它将准确地显示正在发生什么。当这些指标通过iCustom()调用使用时,这个问题也会发生,这使得任何EA或其他代码都无法使用这些指标。
是的,有更新请求。MQL4的手册 几乎是基于5的,并 不符合目前编译器的实际情况。
也许他们在那里留下了在不久的将来的东西,我指望它。
MQL4手册(在编辑器中)是否也进行了相应的更新?
我想不明白为什么我们需要这样的设计
#property icon "\\Files\\button.ico"
我想不明白为什么我们需要这样的设计
我知道这是论坛的俄语部分,但由于我不善于说俄语(尽管我能读懂),希望大家不要介意在这里发帖(因为就这些问题而言,英语部分似乎完全不活跃,而且我没有看到有人发帖讨论这个问题)。
新的metatrader有一个严重的问题,涉及外部字符串参数。最初它们有一个正确的值,但一旦时间框架或符号被改变,字符串参数的内容就会丢失。下面是一个简单的例子,它将准确地显示正在发生什么。当这些指标通过iCustom()调用使用时,这个问题也会发生,这使得任何EA或其他代码都无法使用这些指标。
姆拉登,我用俄语回答比较容易,因为你的阅读能力很流利。
以下是我对这个问题的解决方案。在我的init()代码中,我包含了ReInit()函数,它重新初始化了那些全局变量,当时间框架或符号发生变化时,这些变量的值应该被恢复。