新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 622

 
neverness:

我们不是孩子,我们是完全理智的个体。

让我们不要试图窃窃私语,互相欺骗。

我再次重复我的问题。

请给我一个简单的指标代码,在其中建立一些脚本对象(OnStart(),例如一个椭圆)。

该程序如下。

你进入MetaEditor。点击文件->创建....

单击 "指标"。

而在这个环境中,你要输入脚本对象的代码(OnStart(),例如,椭圆)。

它是如此简单!!!。

祝你好运

如果所有必要的功能都可以在指标中描述,为什么还要从指标中调用脚本?
 
Vitaly Gorbunov:
如果所有必要的功能都可以在指标中描述,为什么还要从指标中调用一个脚本?

这是任何编程环境中最简单的程序。在C++中,完全没有问题。

我们从数据流中建立一个图形对象。物体的位置、形状和其他特征取决于这个流的值。

由于指标负责MQL环境中的输入数据流,我们在这个环境中构建感兴趣的对象。

一切都是合乎逻辑的。

但MQL不允许建立这些对象。

尽管这在C++、BASIC、JavaScript或任何其他编程环境中都不是问题。

你打算描述什么样的 "必要功能",对我来说是个谜。

一般来说。

程序员通常用一种代码语言说话。

如果你能做到这一点,请给我一个代码的例子。

如果你不能,你除了同意我的观点外没有其他选择。

就这么简单!

 

То есть, требуется не просто бросить объект на форму, или создать независимый ни  от чего объект, как в Вашем примере, а внедрить этот объект в вычислительную среду индикатора .

换句话说,如果指标数据流发生变化,图形对象也会发生变化。

而不是像你的例子那样,只是图表上的一个假人,不依赖任何东西。


如果指标知道如何与这个对象一起工作,它将与这个对象一起工作,这有什么问题?你能具体地描述一下这个问题吗?否则我们就是在讨论真空中的球形马。

 
neverness:

这是任何编程环境中最简单的程序。在C++中,完全没有问题。

我们从数据流中建立一个图形对象。物体的位置、形状和其他特征取决于这个流量的值。

由于指标负责MQL环境中的输入数据流,我们在这个环境中构建感兴趣的对象。

一切都是合乎逻辑的。

但MQL不允许建立这些对象。

尽管这在C++、BASIC、JavaScript或任何其他编程环境中都不是问题。

你打算描述什么样的 "必要功能",对我来说是个谜。

一般来说。

程序员通常用一种代码语言说话。

如果你能做到这一点,请给我一个代码的例子。

如果你不这样做,你除了同意我的观点外没有其他选择。

就这么简单!

不知道如何使用语言并不是被侮辱的理由。

代码在代码库中比比皆是,不同的代码,适合各种口味和颜色。

MQL5 Code Base
MQL5 Code Base
  • www.mql5.com
Две одинаковые торговые системы (для лонгов и шортов), построенные на сигналах индикатора ColorSchaffJJRSXTrendCycle, которые можно настраивать различным образом в одном эксперте с возможностью менять размер предстоящей сделки в зависимости от результатов предыдущих сделок для данной торговой системы.
 

Строим графический объект по потоку данных. Положение объекта, его форма и другие характеристики зависят от значений этого потока.

由于指标负责MQL环境中的输入数据流,我们在这个环境中建立感兴趣的对象。

一切都是合乎逻辑的。

但MQL不允许建立这些对象。


什么物体不能在指标中建造?

 
Vitaly Gorbunov:

如果指标知道如何与这个对象一起工作,它就会与这个对象一起工作,这有什么问题?你能具体描述一下这个问题吗?否则我们就是在讨论真空中的球形马。

这很简单。

让我们以指标的事件 为例

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])

和,例如,取一个值的线程orn[],如果这个线程中的值大于预设的值,我们将在图表的某一点上构建一些具有计算特征的图形脚本对象。

一切都是初级的简单。

换句话说,我们需要将脚本对象OnStart()嵌入到数据字段OnCalculate()中,用计算值构建感兴趣的对象。

这是最简单的。

如何在MQL中做到这一点?

 
Vitaly Muzichenko:

不知道如何使用该语言并不是被侮辱的理由。

在kodobase中,各种类型的代码比比皆是,以适应各种口味和颜色。

不熟练的人是一起拼的-->https://ru.wiktionary.org/wiki/неумение

我以前说过,我故意不提MQL的 "数学外壳"。

这也是指那些非常 "不同的代码",它们 "在kodobase中比比皆是",有各种 "口味和颜色"。

好了,亲爱的维塔利!

我自己认为这种对我的评论是一种侮辱。

并善待自己,以获得一部分回应。

在这里,它是。

正如你正确指出的那样,各种 "奇迹代码",在kodobase中提供1000%的利润真的是绰绰有余。

但整个问题是这些代码的作者提供给我们的信息有多真实。

如果我们从数学上严格制定建立 "双赢的EA "的任务,这个任务听起来就像这样

问题的措辞。

是否有可能建立一个EA,在这个EA选择的任何情况下都能给出一个双赢的结果?

问题的解决。

所以。

至于问题的纯数学解决方案,事实证明,我们可以指定的组合为

的报价流,在这种情况下,这个EA会明知故犯,交易者会明知故犯地损失他/她的资金。

当然,我不会给出这个问题的纯数学解决方案,但你可以肯定它是真实的。

也就是说,从数学的角度来看,对于任何顾问,你可以指定这样或那样的情况,当这个EA的行动对交易者来说是无利的。


如果我们现在从法律的角度来处理这个问题,所有出售任何顾问的提议都不过是另一个 "欺诈性计划"。

因为没有一个专家顾问能够提供 "双赢"。


因此,亲爱的维塔利,没有 "知道如何使用语言",没有知道 "如何使用代码 "可以保护交易者免受损失。

当然也不能是一种侮辱。

因此,下一次,请更仔细地选择你的语言。

 
Vitaly Gorbunov:

什么物体不能在指标中建造?

好吧,建造一些。

就个人而言,我没有看到地平线上有任何可以建造的此类物体。

我希望至少能看到一些东西。

我毕竟是一个MQL的 "新手"。也许我不知道什么,或者忽略了什么。

 
neverness:

这很简单。

我们取一个指标事件

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[]。
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[]。
const int &spread[])

和,例如,取一个线程的oren[]值,如果这个线程中的值大于预设值,我们将在图表的某个计算点构建一些具有计算特征的脚本图形对象。

一切都是初级的简单。

换句话说,我们需要将脚本对象OnStart()嵌入到数据字段OnCalculate()中,用计算值构建感兴趣的对象。

这是最简单的。

如何在MQL中做到这一点?

那么,建造这个物体,然后控制它。

这样吧--描述一个简单的任务,周一我将尝试实施它。

 
Vitaly Gorbunov:

所以建立这个物体,然后控制它,有什么大不了的?

比方说,你描述了一个简单的任务,我将在周一尝试实施它。

我已经介绍了一项简单的任务。

打开MetaEditor。

点击 "文件->创建"。

在弹出的字段中选择指标。

在指标OnCalculate() 中引入任何带有OnStart()事件的脚本对象。

我个人不知道该怎么做。例如,像这样。

int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
for(int i = 1; i < 100; i++)

{

如果(open[i] > Max)

{

启动时(OnStart)。

而在这里,我们需要写一个脚本来构建我们所感兴趣的对象。例如,一个椭圆或图表上的一个字母或其他东西

} //if(open)

} //for(int i)
//---为下一次调用返回prev_calculated的值
return(rate_total);
}// OnCalculate

这看起来一定是这样的。

但是这段代码不被MQL翻译器所接受。

原因: