AutoGraf 系列 4 - MQL 功能。 - 页 35

 

Не очень понятно что Вы называете "строка кода для учёта в приложении".

AG_Srtategy_Channal_Inside.mq4的片段

//================================================================================== 6 ==
   if ( Channal == false)                           // Если объекта заданного типа нет
      {
      ObjectCreate ( My_Chan_Name, OBJ_STDDEVCHANNEL,0,0,0); // Создаём его.. 
      int Сoor_X2 = Time[0];                                // 1я точка СПРАВА, 2я СЛЕВА
      int Сoor_X1 = Сoor_X2 - With*60;                      // Канал длиной 3 часа
      ObjectSet( My_Chan_Name, OBJPROP_TIME1, Сoor_X1);      // Устанавливаем координаты
      ObjectSet( My_Chan_Name, OBJPROP_TIME2, Сoor_X2);      // Устанавливаем координаты 
      ObjectSet( My_Chan_Name, OBJPROP_COLOR, Orange);       // Устанавливаем координаты 
      AG_Message( Message, "АТ: Устанавливаем объект OBJ_STDDEVCHANNEL.");// Сообщение

      return(1);                 // Это необходимо, чтоб установл. канал был учтён AG 4    Имелась ввиду эта строка

      }
//---------------------------------------------------------------------------------- 7 --

我对这句话感到困惑。

首先是AT功能可以自行交易--生成交易指令并将其发送到服务器上

似乎AT功能可以忽略应用程序,自己把它们发送到服务器......。

显然这是我的问题,因为缺乏经验。我的大脑还没有为编程而磨练。

 
LeonidSB писал(а)>>

..你的大脑还没有为编程而得到磨砺。

你应该自己写一些简单的程序。

 

你说得很对。我正在努力争取,并希望尽快做到这一点,但首先我想了解已经有经验的人所写的内容、方式和原因。粗略地说,是为了获得知识,以便将其转化为经验,在此基础上,我可以自己写一些东西。

从本质上讲,任何 "复杂 "的方案都是一组相互联系的简单方案。它就像房子和砖头(我以前的培训和职业是建筑工人),也就是说,编程对我来说就像一套建筑材料。

顺便说一下,花点时间看看我工作中的指标。它在图表上画出并留下目标线,盈利和亏损的交易线,利用它们你可以在测试器和现实生活中直观地分析图表上的策略实施。此外,当激活适当的选项时,你可以在你自己的 (非一般的)日志文件中看到并应用于进一步处理会话的结果。

extern bool   PrDeal=false;                                      // Выключатель. Печатать отчет по каждой сделке
extern bool   PrCol=false;                                       // Выключатель. Печатать отчет в колонку
extern bool   PrTab=true;                                        // Выключатель. Печатать отчет в таблицу

到目前为止,在一个文件中同时创建三种类型的报告。我已经提到,我的报告是基于弗拉迪斯拉夫-戈什科夫开发的指标。那是280行。我已经把它改进到了2300行。俗话说,这是可以借鉴的东西。很明显,代码写得很好,无法用简明扼要的方式描述。但这些是我的第一行代码,它们可以工作,这是最重要的事情!"。因此,我正朝着正确的方向前进(尽管不是以正确的方式),在你的帮助下,解释出现的问题,这都是时间问题。

非常感谢您的参与。


借此机会,再问一个问题。

教程中写到了这一点。

Если в результате исполнения торгового приказа функция OrderClose() вернула значение false, то это значит, что ордер не закрыт. Чтобы выяснить причину неудачи выполняется анализ последней ошибки, возникшей при попытке осуществления торговой операции. Для этого вызывается функция Errors() (см. раздел Функция обработки ошибок). Если при исполнении этой функции обнаруживается, что ошибка является непреодолимой (например, торговля запрещена), то функция Close_All() заканчивает работу и возвращает управление в управляющую торговую функцию Trade(), что в конечном счёте приводит к завершению исполнения специальной функции start() эксперта. На следующем тике торговый терминал снова запустит на исполнение функцию start(), и если критерий закрытия на тот момент будет ещё актуален, то это снова приведёт к вызову на исполнение функции закрытия всех ордеров Close_All().

问题。

有两个未结订单BUY-1和BUY-2,手数分别为3和5。有一个使用Close_All()函数的交易订单。订单的关闭顺序如下:首先是BUY-2(5手),然后是BUY-1(3手)。同时,BUY-2(5手)不能关闭--错误不可逆转--我们离开--BUY-1订单(3手)没有关闭--损失在增加--同样的事情发生在下一个刻度(损失在增加),等等。也就是说,如果我们不能关闭列表中的第一个订单,而这个订单因为某些令人信服的原因而不能关闭,那么列表中的所有后续订单将保持开放,并在一段时间内保持开放,这一点并不清楚。这不应该被允许。这一定是程序算法所不允许的,但我尽力去分析,却没有理解。

      //--------------------------------------------------------- 4 --
      if ( Ans==false)                     // Не получилось :( 
        {                                // Поинтересуемся ошибками:
         if( Errors(GetLastError())==false)// Если ошибка непреодолимая
            return;                       // .. то уходим.
        }
      //--------------------------------------------------------- 5 --
      Terminal();                         // Функция учёта ордеров 
      Events();                           // Отслеживание событий
     }
   return;                                // Выход из пользов. функции
  }
//--------------------------------------------------------------- 6 --

请更详细地解释。

提前感谢您,并致以敬意和最美好的祝愿,列昂尼德。

 
LeonidSB писал(а)>>

问题。

有两个未结订单BUY-1和BUY-2,手数分别为3和5。有一个使用Close_All()函数的交易订单。订单关闭顺序:首先是BUY-2(5手),然后是BUY-1(3手)。同时,BUY-2(5手)不能关闭--错误不可逆转--我们离开--BUY-1订单(3手)没有关闭--损失在增加--同样的事情发生在下一个刻度(损失在增加),等等。也就是说,如果我们不能关闭列表中的第一个订单,而这个订单因为某些令人信服的原因而不能关闭,那么列表中的所有后续订单将保持开放,并在一段时间内保持开放,这一点并不清楚。这不应该被允许。这一定是程序算法所不允许的,但我尽力去分析,却没有理解。

请更详细地解释。

提前感谢你,并恭敬地致以最美好的祝愿,列昂尼德。

不可克服的错误是指无法克服的错误。例如,Market_closed。

从这个角度来看,你关闭或打开哪个订单并不重要。反正市场已经关闭了:)。

但如果你试图执行一项交易,它应该是具有最高(从策略的角度)优先权的交易。

 

女士们、先生们,大家好

请回答我的问题。

哪个指标能最可靠地显示趋势的变化--平坦?

我想在AG_Srtategy_Channal_Inside和 AG_Srtategy_Channal_Outside 策略中添加这个指标,作为从一个策略到另一个策略的切换。

 
SK. писал(а)>>

........,任务是使用户能够在AutoGraf 4应用程序中附加他/她自己用MQL4编写的交易算法,并作为.ex4策略文件执行。为了解决这个问题,专家顾问AG_exp.ex4包含了将自动交易功能AG_AT导入专家顾问的代码,该功能以.ex4和mq4文件形式提供。此外,用户可以自行决定如何安排这些代码。最方便的是使用两种变体之一....。

这样的变体还没有考虑过:主模块是开放代码的,现在的主模块是封闭代码的,通过导入调用,交易策略通过induid调用(或者先通过induid,再导入到induid)......问题是这样的--一个中间环节,以插入器的形式使外部变量可见。在我看来,如果你仔细思考,应该是可行的。不要一下子告诉我这是不可能的;)

 
LeonidSB писал(а)>>

女士们、先生们,大家好

请回答我的问题。

哪个指标能最可靠地显示趋势的变化--平坦?

我想在AG_Srtategy_Channal_Inside和 AG_Srtategy_Channal_Outside 策略中添加这个指标,作为从一个策略到另一个策略的切换。

而且选择也不多:STD、ATR、ADX。还有时钟和新闻发布日历。

 

谢谢你!

我想知道是否有一个选项,当一个评论被添加到一个页面时,它就会自动更新?

我必须定期到该页面手动更新。

 
Integer писал(а)>>

这个选项没有考虑过:开源核心模块,现在封闭的核心模块的代码是通过导入调用的,交易策略是通过 incluid(或者先通过 incluid,然后导入 incluidnik)...问题是这样的--一个中间环节,以插入器的形式使外部变量可见。在我看来,如果你仔细思考,应该是可行的。不要一下子就说这是不可能的;)

做到这一点并不困难。但运送一个商业化的开源产品......你知道,这不是解决方案。

真正的解决方案有望在MT 5中实现。任何应用程序都应该从主程序中调用。现在需要的是管理已完成的EA的能力。在这种情况下,一个定制的策略可以由一个分析单元和一个 "子程序 "调用单元组成。你想--调用脚本,它就会画出一个fiba,你想--调用指标,你想--关闭一切,晚上下班后pipsqueak:)。

和API。然后你就可以制作一个真正的现代工具。

用户并不关心我们的花架子(各种脚本,专家顾问,与专家无异:)。他或她需要一个方便、高质量、多功能的服务。在MT4中,只能做已经做过的事情--类似DOS的面孔和有限的可能性。

所有的希望都寄托在MT5上。

 

AG系列4的新版本 -AutoGraf 4.90714 已经发布。

作出的改变。
1. 刀具控制分析算法14 Close_All已被优化。
2.引入了一个新的工具管理规则14 Close_All:允许在当前时刻对工具进行软件设置。要做到这一点,为工具运行时间参数输入1的值(Instrument [0][2][32][1] = 1)。

在此下载软件:http://autograf.dp.ua/Pages/4/421.htm

原因: