对巴解组织的看法很有意思 - 页 3 12345678910...13 新评论 Vasiliy Sokolov 2021.01.29 12:33 #21 Alexandr Andreev:)也可以用汇编语言来完成。问题是哪里更容易。也不要把我放在一边或另一边....我并不拘泥于某件事情。 没有人是。我只是说,现在的OP功能在现代OOP语言中都有,多范式语言中的OOP功能也有。此外,许多功能的FP提出的东西特别和惊人的,其实,是相同的鸡蛋在配置文件。它们已经存在了很长时间--就像Pascal中的闭包或C语言中的函数延迟执行,其中一个指针被传递给它而不是结果。文章中的例子在任何语言中给出的东西,除了js之外,几乎在任何地方都不适用(也许在Python中除外)。 Fast235 2021.01.29 12:34 #22 fxsaber:我不擅长OOP。但我确实使用了其中的原始东西。从最近的情况来看,我已经发布了一些非常简单的代码。在FP中开始写,当时我不明白我最终会看什么。通过OOP的原始元素完成。可能是失去了FP技能,但这里的OOP似乎更简单,更易读。该代码非常简单和简短(描述)。如果你把它写在FP中,比较一下会很有意思。这段代码比经常在这里发布的要小得多,你最好在这里展示一下,这对教育目的有好处 我希望德米特里-费多谢耶夫能写出他的版本,然后专家将用他的版本来嘲弄他) Mikhail Mishanin 2021.01.29 12:56 #23 fxsaber:我不擅长OOP。但我确实使用了其中的原始东西。从最近的情况来看,我发布了一些非常简单的代码。在FP中开始写,当时我不明白我最终会看什么。通过OOP的原始元素完成。可能是失去了FP技能,但这里的OOP似乎更简单,更易读。该代码非常简单和简短(描述)。如果你把它写在FP中,比较一下会很有意思。 我一有空就会看一下计算器。而你是心灵感应者,我本来想在另一个主题中问,但我在这里问,根据你在 "真实模式 "中的调试经验--在MT4和MT5中的T_OHLC_V数据是否可能存在 "漏洞"? 也就是说,是否有可能在任何松懈(连接失败、终端挂断、系统挂断)之后,新的数据最初会有一些跳过,然后跳过/"洞 "会被写入阵列内部?当然,我会自己编写指标和EA的检测器,但也许你已经有这种测试的经验,我不必担心。 我没有经验的FP(或有,但不知道的名称),自动在哪里参考?),我想我正在用程序化的范式来做。 zy. 请求请求) Mikhail Mishanin 2021.01.29 13:09 #24 Aleksey Mavrin:奇怪的文章。OOP与程序化风格没有什么区别,因为在OOP中,你可以默认用程序化风格做所有的事情,反之亦然,没有可怕的代码膨胀,也就是说,OOP是一种 "上层建筑",而不是一种根本性的不同风格。如果这篇文章真的是关于功能性的而不是程序性的(如果你挑剔的话,这并不那么明显),那么为什么要比较那些用途完全不同的东西。托皮卡启动器,你自己在写,现在说的是哪一个? 功能性的还是程序性的? 随着OOP的出现,它真的把我吓坏了,封装、继承和其他形态,这些都是流行的OOP介绍的开始。他们会把这些数据和函数简单地写在一个块中--一个类。但后来我习惯了这种时尚--每次都要发明新的术语。当我需要OOP时--没问题,但由于在我看来,它比程序性的变体更贪婪,速度更慢,所以我最多只能用程序性的。 而这个问题的出现,是因为我想听听大家对FP和其他变体的意见,除了OOP和procedural之外,也许有人有超级积极的经验。而且我想,使用某种功能的组合,不成为一个狂热的人是明智的。 TheXpert 2021.01.29 13:12 #25 彼得,重新链接你的名字。 fxsaber 2021.01.29 13:39 #26 Fast235:这段代码比经常在这里发布的要小得多,你最好把它部署在这里,用于教育目的。 小菜一碟。 #property strict #property script_show_inputs input double inPerformance = 100; // Сколько процентов дает система за период input double inGift = 50; // Награда управляющего в процентах (< 100) input int inN = 12; // Сколько расчетных периодов struct BASE { double Investor; double Manager; double Summary; // Если управляющий снимает деньги в конце каждого расчетного периода. void Set1( const double Performance, const double Gift, const int N ) { this.Investor = ::MathPow(1 + (Performance - 1)* (1 - Gift), N); this.Manager = (this.Investor - 1) * Gift / (1 - Gift); this.Summary = this.Investor + this.Manager; return; } // Если ничего не делалось в расчетные периоды. void Set2( const double Performance, const double Gift, const int N ) { this.Summary = ::MathPow(Performance, N); this.Manager = (this.Summary - 1) * Gift; this.Investor = this.Summary - this.Manager; return; } // Если управляющий снимает деньги в конце каждого расчетного периода и реинвестирует их. void Set3( const double Performance, const double Gift, const int N ) { this.Summary = ::MathPow(Performance, N); this.Investor = ::MathPow(1 + (Performance - 1)* (1 - Gift), N); this.Manager = this.Summary - this.Investor; return; } void operator *=( const double Deposit = 1 ) { this.Investor *= Deposit; this.Manager *= Deposit; this.Summary *= Deposit; return; } #define TOSTRING(A) #A + " = " + ::DoubleToString(A, 4) + " " string ToString( const bool FlagName = true ) const { return(FlagName ? TOSTRING(Investor) + TOSTRING(Manager) + TOSTRING(Summary) : ::StringFormat("||%-12.4f||%-12.4f||%-12.4f||", this.Investor, this.Manager, this.Summary)); } #undef TOSTRING }; struct PAMM { double Performance; // Доходность за расчетный период double Gift; // Вознагражение управляющего. int N; // Сколько расчетных периодов. BASE Base1; // Если управляющий снимает деньги в конце каждого расчетного периода. BASE Base2; // Если ничего не делалось в расчетные периоды. BASE Base3; // Если управляющий снимает деньги в конце каждого расчетного периода и реинвестирует их. void Set( const double dPerformance, const double dGift, const int iN ) { this.Performance = dPerformance; this.Gift = dGift; this.N = iN; this.Base1.Set1(1 + this.Performance / 100, this.Gift / 100, this.N); this.Base2.Set2(1 + this.Performance / 100, this.Gift / 100, this.N); this.Base3.Set3(1 + this.Performance / 100, this.Gift / 100, this.N); } void operator *=( const double Deposit = 1 ) { this.Base1 *= Deposit; this.Base2 *= Deposit; this.Base3 *= Deposit; return; } string GetDescription( void ) const { return("Доходность за расчетный период " + ::DoubleToString(this.Performance, 1) + "%\n" + "Вознагражение управляющего " + ::DoubleToString(this.Gift, 1) + "%\n" + "Количество расчетных периодов. " + (string)this.N); } string ToString( const bool FlagName = true, const bool FlagDescription = true ) const { return(FlagDescription ? "Данные для инвестиционного счета со следующими характеристиками:\n\n" + this.GetDescription() + "\n\nКонечный результат для Инвестора, Управляющего и Суммарно:" "\n\nЕсли управляющий снимает деньги в конце каждого расчетного периода (1).\n" + this.Base1.ToString(FlagName) + "\n\nЕсли ничего не делалось в расчетные периоды (2).\n" + this.Base2.ToString(FlagName) + "\n\nЕсли управляющий снимает деньги в конце каждого расчетного периода и реинвестирует их (3).\n" + this.Base3.ToString(FlagName) : this.Base1.ToString(FlagName) + this.Base2.ToString(FlagName) + this.Base3.ToString(FlagName)); } }; void OnStart() { PAMM Pamm; Pamm.Set(inPerformance, inGift, inN); Print(Pamm.ToString()); string Str = Pamm.GetDescription() + "\n "; for (int i = 1; i <= 3; i++ ) Str += ::StringFormat("||%-12s||%-12s||%-12s||", "Investor" + (string)i, "Manager" + (string)i, "Summary" + (string)i); for (int i = 1; i <= inN; i++ ) { Pamm.Set(inPerformance, inGift, i); Str += StringFormat("\n%-2d:", i) + Pamm.ToString(false, false); } Print(Str); } 从技术上讲,这可能是一个OOP。但这是它最原始的部分。然而,没有它,我就做不到。可能是,愚蠢的大脑重新排列,铆足了劲儿做这种事。 Maxim Dmitrievsky 2021.01.29 13:50 #27 Peter ahahah stop it. 我的方法,桶是一个锅 Мой подход. Ядро - Движок. 2018.12.05www.mql5.com В этой ветке, я хочу рассказать о своем подходе в программировании. Заранее предупреждаю, - здесь не будет обсуждений GUI... Maxim Kuznetsov 2021.01.29 14:11 #28 Maxim Dmitrievsky:Peter ahahah stop it.我的方法,桶是一个锅 我已经有一段时间没有看到他了... 他真的用了不同的网名吗? Maxim Dmitrievsky 2021.01.29 14:35 #29 Maxim Kuznetsov:我已经有一段时间没有看到他了...他真的用了不同的网名吗? 有传言说,他去建立一个强大的人工智能。 Vladimir Simakov 2021.01.29 14:36 #30 Maxim Dmitrievsky:有传言说,他已经去创建一个强大的人工智能 只是不要让任何事情发生,否则COVID就不会睡觉...... 12345678910...13 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
)也可以用汇编语言来完成。问题是哪里更容易。
也不要把我放在一边或另一边....我并不拘泥于某件事情。
没有人是。我只是说,现在的OP功能在现代OOP语言中都有,多范式语言中的OOP功能也有。此外,许多功能的FP提出的东西特别和惊人的,其实,是相同的鸡蛋在配置文件。它们已经存在了很长时间--就像Pascal中的闭包或C语言中的函数延迟执行,其中一个指针被传递给它而不是结果。文章中的例子在任何语言中给出的东西,除了js之外,几乎在任何地方都不适用(也许在Python中除外)。
我不擅长OOP。但我确实使用了其中的原始东西。从最近的情况来看,我已经发布了一些非常简单的代码。
在FP中开始写,当时我不明白我最终会看什么。
通过OOP的原始元素完成。可能是失去了FP技能,但这里的OOP似乎更简单,更易读。
该代码非常简单和简短(描述)。如果你把它写在FP中,比较一下会很有意思。
这段代码比经常在这里发布的要小得多,你最好在这里展示一下,这对教育目的有好处
我希望德米特里-费多谢耶夫能写出他的版本,然后专家将用他的版本来嘲弄他)我不擅长OOP。但我确实使用了其中的原始东西。从最近的情况来看,我发布了一些非常简单的代码。
在FP中开始写,当时我不明白我最终会看什么。
通过OOP的原始元素完成。可能是失去了FP技能,但这里的OOP似乎更简单,更易读。
该代码非常简单和简短(描述)。如果你把它写在FP中,比较一下会很有意思。
我一有空就会看一下计算器。而你是心灵感应者,我本来想在另一个主题中问,但我在这里问,根据你在 "真实模式 "中的调试经验--在MT4和MT5中的T_OHLC_V数据是否可能存在 "漏洞"?
也就是说,是否有可能在任何松懈(连接失败、终端挂断、系统挂断)之后,新的数据最初会有一些跳过,然后跳过/"洞 "会被写入阵列内部?当然,我会自己编写指标和EA的检测器,但也许你已经有这种测试的经验,我不必担心。
我没有经验的FP(或有,但不知道的名称),自动在哪里参考?),我想我正在用程序化的范式来做。
zy. 请求请求)
奇怪的文章。OOP与程序化风格没有什么区别,因为在OOP中,你可以默认用程序化风格做所有的事情,反之亦然,没有可怕的代码膨胀,也就是说,OOP是一种 "上层建筑",而不是一种根本性的不同风格。
如果这篇文章真的是关于功能性的而不是程序性的(如果你挑剔的话,这并不那么明显),那么为什么要比较那些用途完全不同的东西。
托皮卡启动器,你自己在写,现在说的是哪一个? 功能性的还是程序性的?
随着OOP的出现,它真的把我吓坏了,封装、继承和其他形态,这些都是流行的OOP介绍的开始。他们会把这些数据和函数简单地写在一个块中--一个类。但后来我习惯了这种时尚--每次都要发明新的术语。当我需要OOP时--没问题,但由于在我看来,它比程序性的变体更贪婪,速度更慢,所以我最多只能用程序性的。
而这个问题的出现,是因为我想听听大家对FP和其他变体的意见,除了OOP和procedural之外,也许有人有超级积极的经验。而且我想,使用某种功能的组合,不成为一个狂热的人是明智的。
这段代码比经常在这里发布的要小得多,你最好把它部署在这里,用于教育目的。
小菜一碟。
从技术上讲,这可能是一个OOP。但这是它最原始的部分。然而,没有它,我就做不到。可能是,愚蠢的大脑重新排列,铆足了劲儿做这种事。
Peter ahahah stop it.
我的方法,桶是一个锅
Peter ahahah stop it.
我的方法,桶是一个锅
我已经有一段时间没有看到他了...
他真的用了不同的网名吗?
我已经有一段时间没有看到他了...
他真的用了不同的网名吗?
有传言说,他去建立一个强大的人工智能。
有传言说,他已经去创建一个强大的人工智能