新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1523 1...151615171518151915201521152215231524152515261527152815291530...1953 新评论 PapaYozh 2021.07.02 11:46 #15221 Сергей Таболин:我,一个无法理解所有类的神圣意义的二流子,以及一般来说,为什么在我们的(贸易)业务中需要OOP,如何理解--类都是(由MQ和大师)编写的代码库,旨在 "促进""非大师代码编写者 "的生活。问题是,我已经说过了,使用所有这些 "救济 "并不能使写代码变得更容易。因为你总是要对你自己发送的所有订单进行反复检查!因为实际上每个人都坚持要我也检查一些 "交易"。更重要的是,这些"......股份 "是随机出现的。我下达命令--在这个地方以这样的角度敲打钉子。就这样了。接下来我得到了一个答复--钉子被敲进去了。然后我得到一个警告说。 也许钉子的尺寸不对--需要检查。 也许是角度不对--需要检查。 也许它敲错了 地方 --需要检查。 那么,为什么我需要这样的表演者(课程)? 我可能有点夸张,但重点并没有改变。 为什么呢?因为在类中处理的任何数据都可以被改变,以至于类甚至不会怀疑它已经被改变。 我明白了。 顺便说一下,我同意OOP并不能使编程变得更容易。 OOP使维护大型项目 更加容易,但往往使创建小型项目更加困难。 OOP对初学者来说更难。 使用其他人的课程在某种程度上是在使用黑盒子。 jarikn 2021.07.02 13:53 #15222 你好。能否请您告诉我,我哪里做错了,为什么指标不显示箭头? #property copyright "Copyright 2021, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window double Buy[]; // Буфер для покупок double Sell[]; // Буфер для продаж input int tenkan_sen1 = 9; input int kijun_sen1 = 26; input int senkou_span_b1 = 52; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- indicator buffers mapping SetIndexBuffer(0,Buy); SetIndexBuffer(1,Sell); // Устанавливаем нулевые значения для индикатора, при которых не будет сигнальных стрелок SetIndexEmptyValue (0, 0); SetIndexEmptyValue (1, 0); //Определяем стиль отображения индикаторных линий - стрелка SetIndexStyle (0, DRAW_ARROW); SetIndexStyle (1, DRAW_ARROW); // Установим значки "стрелки" для буферов SetIndexArrow(0, 234); //Стрелка "вниз" для продаж SetIndexArrow(1, 233); //Стрелка "вверх" для покупок //Устанавливаем текст описания стрелок индикатора для отображения информации в всплывающей подсказке. SetIndexLabel(0, "Продаём"); SetIndexLabel(1, "Покупаем"); //Определяем разрядность значений индикаторных линий - приравниваем разрядности фин. инструмента IndicatorDigits (Digits); //Строка с кратким названием индикатора выводится в сплывающей подсказке при наведении указателя мыши на стрелку IndicatorShortName ("Мой первый индикатор"); //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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[]) { int limit=rates_total-prev_calculated-1; if(limit<1) return(0); for(int i=limit;i>=0;i--) { // Снимем показания индикатора double tenkan_sen = iIchimoku(NULL,0,tenkan_sen1,kijun_sen1,senkou_span_b1,MODE_TENKANSEN,i); double kijun_sen = iIchimoku(NULL,0,tenkan_sen1,kijun_sen1,senkou_span_b1,MODE_KIJUNSEN,i); double senkou_span_b = iIchimoku(NULL,0,tenkan_sen1,kijun_sen1,senkou_span_b1,MODE_SENKOUSPANA,i); double senkou_span_a = iIchimoku(NULL,0,tenkan_sen1,kijun_sen1,senkou_span_b1,MODE_SENKOUSPANB,i); double chikou_span = iIchimoku(NULL,0,tenkan_sen1,kijun_sen1,senkou_span_b1,MODE_CHIKOUSPAN,i); if(tenkan_sen>kijun_sen) Buy[i]=high[i]; if(tenkan_sen<kijun_sen) Sell[i]=low[i]; } /*input int tenkan_sen = 9; input int kijun_sen = 26; input int senkou_span_b = 52;*/ //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.07.02 14:22 #15223 jarikn: 你好。能否请您告诉我,我哪里做错了,为什么指标不显示箭头? #property indicator_buffers 2 jarikn 2021.07.02 14:42 #15224 MakarFX: 我输入了缺失的那一行,但还是没有箭头!我的意思是说,如果你是一个人,那么你就会有一个人。 Tretyakov Rostyslav 2021.07.02 14:54 #15225 jarikn:我输入了缺失的那一行,但还是没有箭头!我的意思是说,如果你是一个人,那么你就会有一个人。 显示 jarikn 2021.07.02 14:58 #15226 MakarFX:显示 //+------------------------------------------------------------------+ //| ishimocu.mq4 | //| Copyright 2021, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 2 //--- input parameters double Buy[]; // Буфер для покупок double Sell[]; // Буфер для продаж input int tenkan_sen1 = 9; input int kijun_sen1 = 26; input int senkou_span_b1 = 52; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- indicator buffers mapping SetIndexBuffer(0,Buy); SetIndexBuffer(1,Sell); // Устанавливаем нулевые значения для индикатора, при которых не будет сигнальных стрелок SetIndexEmptyValue (0, 0); SetIndexEmptyValue (1, 0); //Определяем стиль отображения индикаторных линий - стрелка SetIndexStyle (0, DRAW_ARROW); SetIndexStyle (1, DRAW_ARROW); // Установим значки "стрелки" для буферов SetIndexArrow(0, 234); //Стрелка "вниз" для продаж SetIndexArrow(1, 233); //Стрелка "вверх" для покупок //Устанавливаем текст описания стрелок индикатора для отображения информации в всплывающей подсказке. SetIndexLabel(0, "Продаём"); SetIndexLabel(1, "Покупаем"); //Определяем разрядность значений индикаторных линий - приравниваем разрядности фин. инструмента IndicatorDigits (Digits); //Строка с кратким названием индикатора выводится в сплывающей подсказке при наведении указателя мыши на стрелку IndicatorShortName ("Мой первый индикатор"); //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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[]) { int limit=rates_total-prev_calculated-1; if(limit<1) return(0); for(int i=limit;i>=0;i--) { // Снимем показания индикатора double tenkan_sen = iIchimoku(NULL,0,tenkan_sen1,kijun_sen1,senkou_span_b1,MODE_TENKANSEN,i); double kijun_sen = iIchimoku(NULL,0,tenkan_sen1,kijun_sen1,senkou_span_b1,MODE_KIJUNSEN,i); double senkou_span_b = iIchimoku(NULL,0,tenkan_sen1,kijun_sen1,senkou_span_b1,MODE_SENKOUSPANA,i); double senkou_span_a = iIchimoku(NULL,0,tenkan_sen1,kijun_sen1,senkou_span_b1,MODE_SENKOUSPANB,i); double chikou_span = iIchimoku(NULL,0,tenkan_sen1,kijun_sen1,senkou_span_b1,MODE_CHIKOUSPAN,i); if(tenkan_sen>kijun_sen) Buy[i]=high[i]; if(tenkan_sen<kijun_sen) Sell[i]=low[i]; } /*input int tenkan_sen = 9; input int kijun_sen = 26; input int senkou_span_b = 52;*/ //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.07.02 15:17 #15227 jarikn: 我有一幅画... jarikn 2021.07.02 15:29 #15228 MakarFX:我在画... 该死的。错误的ishimoku运行)))),非常感谢。 Andrei Sokolov 2021.07.02 15:46 #15229 Alexey Viktorov:是的......最少的写作和最大的头痛...... 它到底是什么?也许我只是做错了什么。 Alexey Viktorov 2021.07.02 17:19 #15230 Andrey Sokolov:它到底是什么?我是不是做错了什么? 关于交易、自动交易系统和策略测试的论坛 小学生的OOP。 Alexey Viktorov, 2019.10.04 16:01 我认为mql可以用OOP解决的问题非常有限。在我看来,这门语言本身不过是C++或其他什么的OOP。而这种OOP是以标准库的形式提供的。对这个OOP,建议增加,否则我不会说,另一个OOP。然后再走一步...说得很对,术士虽然生气,但仁者见仁智者见智,对于我的任务来说,OOP就像一个狗的转盘。而且,如果这个问题可以毫无问题地通过程序解决,那么定义一个问题然后用OOP来实现它又有什么用呢。 例如,从 fxsaber`a 取出 .mqh,为 MT5 以及 MT4 写代码。也许有人可能需要它,但看看是谁。对那些不想或绝对不能掌握mql5的人来说。或者从Nikolay......我忘了他的名字,采取iCanvas。它似乎是一个有用的库,但要理解它并不容易,而且没有任何文档,甚至连一个最小的描述都没有。这不是抱怨,对不起,尼古拉,这是一个事实。因此,当我决定尝试写一个图形标签时,不参考标准库或尼古拉的库来写就比较容易。 然后你可以阅读整个主题。 1...151615171518151915201521152215231524152515261527152815291530...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我,一个无法理解所有类的神圣意义的二流子,以及一般来说,为什么在我们的(贸易)业务中需要OOP,如何理解--类都是(由MQ和大师)编写的代码库,旨在 "促进""非大师代码编写者 "的生活。
问题是,我已经说过了,使用所有这些 "救济 "并不能使写代码变得更容易。因为你总是要对你自己发送的所有订单进行反复检查!因为实际上每个人都坚持要我也检查一些 "交易"。更重要的是,这些"......股份 "是随机出现的。
我下达命令--在这个地方以这样的角度敲打钉子。就这样了。接下来我得到了一个答复--钉子被敲进去了。然后我得到一个警告说。
那么,为什么我需要这样的表演者(课程)?
我可能有点夸张,但重点并没有改变。
为什么呢?因为在类中处理的任何数据都可以被改变,以至于类甚至不会怀疑它已经被改变。
我明白了。
顺便说一下,我同意OOP并不能使编程变得更容易。
OOP使维护大型项目 更加容易,但往往使创建小型项目更加困难。
OOP对初学者来说更难。
使用其他人的课程在某种程度上是在使用黑盒子。
你好。能否请您告诉我,我哪里做错了,为什么指标不显示箭头?
我输入了缺失的那一行,但还是没有箭头!我的意思是说,如果你是一个人,那么你就会有一个人。
我输入了缺失的那一行,但还是没有箭头!我的意思是说,如果你是一个人,那么你就会有一个人。
显示
显示
我有一幅画...
我在画...
该死的。错误的ishimoku运行)))),非常感谢。
是的......最少的写作和最大的头痛......
它到底是什么?也许我只是做错了什么。
它到底是什么?我是不是做错了什么?
关于交易、自动交易系统和策略测试的论坛
小学生的OOP。
Alexey Viktorov, 2019.10.04 16:01
我认为mql可以用OOP解决的问题非常有限。在我看来,这门语言本身不过是C++或其他什么的OOP。而这种OOP是以标准库的形式提供的。对这个OOP,建议增加,否则我不会说,另一个OOP。然后再走一步...说得很对,术士虽然生气,但仁者见仁智者见智,对于我的任务来说,OOP就像一个狗的转盘。而且,如果这个问题可以毫无问题地通过程序解决,那么定义一个问题然后用OOP来实现它又有什么用呢。
例如,从 fxsaber`a 取出 .mqh,为 MT5 以及 MT4 写代码。也许有人可能需要它,但看看是谁。对那些不想或绝对不能掌握mql5的人来说。或者从Nikolay......我忘了他的名字,采取iCanvas。它似乎是一个有用的库,但要理解它并不容易,而且没有任何文档,甚至连一个最小的描述都没有。这不是抱怨,对不起,尼古拉,这是一个事实。因此,当我决定尝试写一个图形标签时,不参考标准库或尼古拉的库来写就比较容易。