[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 249

 
Leo59:

亲爱的granit77!如果你不介意的话,请直接在代码中进行修改,如果有什么错误的话。它将是清晰和可理解的。

例子。在八个可用的指标缓冲区 中,七个用于在指标窗口中显示线条,第八个用于计算,不在指标窗口中显示。
如果没有足够的指示器缓冲区,可以在常规阵列中进行计算。

#property indicator_buffers 7 double ind_buffer1[]; double ind_buffer2[]; double ind_buffer3[]; double ind_buffer4[]; double ind_buffer5[]; double ind_buffer6[]; double ind_buffer7[]; double ind_buffer8[]; //the eighth buffer is used for additional calculations/double ind_buffer9[] 。   //指标中没有第九个缓冲区,这个数组无处可去 int init() { IndicatorBuffers(8); SetIndexBuffer(0,ind_buffer1); SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3); SetIndexBuffer(3,ind_buffer4); SetIndexBuffer(4,ind_buffer5); SetIndexBuffer(5,ind_buffer6); SetIndexBuffer(6,ind_buffer7); SetIndexBuffer(7,ind_buffer8); //ind_buffer1。...ind_buffer7画七条线//它们根据#属性indicator_buffers 7显示在指标窗口中//ind_buffer8不显示在窗口中,但可用于参与计算 return(0); }
 
granit77:
例子。八个指标缓冲区中的七个用于在指标窗口中显示线条,第八个缓冲区用于计算,但它不会在指标窗口中显示。如果没有足够的指示器缓冲区,可以在普通数组中进行计算。




谢谢你!这是可以理解的。

我不明白另一个人。我不知道为什么参与计算的数组,但不显示在指标窗口,应该被识别为SetIndexBuffer。而如果我们需要10个数组用于计算,8个数组用于显示(共18个数组),如何正确声明和识别这10个数组?我想让它们具有相同的属性,就像连接到指标缓冲区 的数组一样,只是它们没有被画出来。

 
Zhunko:

如果不成功,你不必重新命名它。这很奇怪。你可以通过选择WinRar从上下文菜单中打开它。或者打开WinRar,然后从 "文件 "菜单项 "打开档案 "中找到该档案并打开它。

我在上面说过,扩展名只是为了自动关联文件所需要的。

你是否启用了扩展的可见性?如果不成功,请在此截图或视频。


谢谢你的详细说明。我确实下载了这个WinRar,显然它不在那里,而且档案打开了!这就是为什么我没有下载WinRar。
 
你知道,我没有看到这个功能的作用。的确,现在刻度线不工作了,但至少在加入图形时,开始应该工作,对吗?好吧,至少它可以编译!!!。 我正在尝试这个。
//+------------------------------------------------------------------+
//|                                                  таймфрейммм.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <ServicesMT4.mqh>
void start()
  {
   int hwndChart = WindowHandle(Symbol(),Period());
   while (!IsStopped())
    {
     for (int i = 0; i < 9; i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep(4000);
      }
    }
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
 
PR //利润
UB/Loss
Pk //变量获取购买值
Pr //变量获取销售值
ADR //变量获取脚本的值。

//盈利条件
如果(PR==Pk) //如果购买时有利润
ADR=1; //设置脚本1
否则 //如果出售时有利润
ADR=2; //设置脚本2

//销售条件
如果(UB==Pk) //如果买入时出现亏损
ADR=2; //设置脚本2
否则 //如果出售时出现损失

ADR=1; //设置脚本1

我如何为交易而改善这一点? 我需要一个EA来监控哪个订单关闭(买入或卖出),以及它是如何盈利或亏损关闭的。经过这样的分析,EA将执行1或2个脚本。

 
获利 和止损变量的名称是什么?那我如何指定要执行的脚本的地址?
 
Dimka-novitsek:
我没有看到这个功能的作用,你知道。诚然,现在不会出现刻度线,但至少在连接到图表时,启动应该是有效的,对吗?好吧,至少它可以编译!!!。 试试这个

没有虱子。启动没有被触发。可以被编译成脚本。但你必须指定相邻图表的描述符,该图表将被更新。

或者像这样。

#include <ServicesMT4.mqh>
int hwndChart = NULL;
void init()
 {
  hwndChart = WindowHandle(Symbol(),Period()); // Получаем системный дескриптор графика.
  ServiceRefreshChart(hwndChart, 1000); // Запускаем обновление графика каждую 1 секунду.
 }

void start()
 {
  ServiceStopRefreshChart(hwndChart); // Останавливаем обновление. Больше не требуется.
  while (!IsStopped())
   {
    for (int i = 0; i < 9; i++)
     {
      ServiceSetTimeframeByNumber(hwndChart, i);
      Sleep(4000);
     }
   }
 }

但它可能对你不起作用。似乎ServiceRefreshChart()函数不是每个人都能用的。

你可以在指标中试试。它在加入图表和改变TF时刷新了2次。

 
谢谢你!!!!!!
 
编译,但不执行。
 
Dimka-novitsek:
它编译了,但没有执行。

检查了一下。ServiceRefreshChart ()对你来说是不可用的。

哪个选项不起作用?这已经太多了。带有脚本和单独图表的选项将始终有效。

你打开一个图表,例如EURUSD H1。

2.在剧本中这样写道。

void start()
  {
   int hwndChart = WindowHandle("EURUSD", PERIOD_H1);
   while (!IsStopped())
    {
     for (int i = 0; i < 9 && !IsStopped(); i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep(4000);
      }
    }
  }

3.在另一个图表上运行该脚本。

4.欧元兑美元 的H1图表 将改变TF。