[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 651

 
xtonic:

晚间的谜语来自metha。

我从报价档案中导入报价,它在1分钟内说:数据库:0 / 3665972,窗口是空的 - 它是什么意思?

当我打开独立的EURUSD,M1图表时 - 它显示了大字。"等待更新" - 这意味着什么?

我正在运行一个测试 - TestGenerator:没有历史数据'EURUSD1'。

重新加载终端。如果一切都做得正确,它应该出现。

 

在哪里可以读到具有以下参数的指标是如何绘制的?

SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1)

SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2)

我不明白为什么有时画有时不画--我明白如果你画一条正常的线DRAW_LINE--指标缓冲值将设置Y轴,但元素的数量与图表上的条数相对应。

为什么当两个指标缓冲区在同一个柱子上时,柱子上的水平段会出现,但当其中一个指标缓冲区是EMPTY_VALUE 时,就没有了,我不明白着色的逻辑。

 
ToLik_SRGV:

重新加载终端。如果一切都做得正确,应该会出现。


我已经做了这一切,甚至重启了系统,这才是重点。

 
xtonic:


我已经做了所有这些,甚至重启了系统,这才是重点。


你有没有 从哪里导入 报价?

如果你能确切地解释你在做什么,一步一步地,那么你就更有可能在这里得到帮助。

 

善良的人们,请发发慈悲吧--我无法得到:在平滑的CCI的另一个峰值后买入/卖出。

我试着声明第二个缓冲区(对我来说更有意义),没有错误,日志--无声,打印,显然,作为一个山羊--我什么都不明白。

 // Торговые критерии
   double c1b[];
   ArrayResize(c1b,PeriodB);
   double c1b_1[];
   ArrayResize(c1b_1,AvgB);
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   {
   c1b_1[i]=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   }
   }
   
   double c1s[];
   ArrayResize(c1s,PeriodS);
   double c1s_1[];
   ArrayResize(c1s_1,AvgS);
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   {
   c1s_1[i]=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   }
   }

if (NormalizeDouble(c1b_1[i],4)<NormalizeDouble(c1b_1[i+2],4)&&NormalizeDouble(c1b_1[i+2],4)>NormalizeDouble(c1b_1[i+3],4))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1[i],4)>NormalizeDouble(c1s_1[i+2],4)&&NormalizeDouble(c1s_1[i+2],4)<NormalizeDouble(c1s_1[i+3],4))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

附件包含整个专家顾问。经过可视化测试,CCI在这个版本和旧版本中都被画出来了(它在附件中被画出来了),但是平滑的却没有,因此交易没有被打开。

旧的变体。

// Торговые критерии
   double c1b[];
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   }
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,1);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,3);
   
   double c1s[];
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   }
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,1);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,3);

if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

我明白没有人有时间去清理其他的,至少告诉我到底在哪里插入打印,在日记或日志中寻找反馈,需要注意什么。

附加的文件:
21.mq4  15 kb
 

下午好!

我有一个关于部分关闭的问题,因为每个经纪公司都有自己的规则。我不明白如何正确进行订单核算。

问题是:我们需要在不使用魔术师的情况下,在这个特定的TS中找到一个新下订单的勾。

1)我注意到,一个部分关闭的订单有一个评论,你应该能够阅读评论//我不确定所有的经纪公司都写评论

2)按开单日期搜索//不确定是否对所有经纪公司都有效

3)在部分平仓指令执行后寻找新的刻度线,并检查成交量等,看是否是正确的指令。

4)其他的东西

 
wenay:

如何更好地进行订单统计。

阅读那里的帮助:
comment - Ordercomment text.评论的最后部分可以由贸易服务器改变

magic- 订单的magic number。可作为用户定义的标识符。

魔法是帮助你的好方法

要搜索一个订单,请执行以下操作

如果(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {

.......

 
Craft:

请告知印刷品到底应该插在什么地方,在日志或日志文件中哪里可以找到反馈,以及需要注意什么。

打印你想检查的地方(例如,如果你下了一个订单--打印下订单的事实或在日记中下订单的错误)。

如果你不确定你的函数可以被调用,也就是说,函数的调用条件永远不会被满足,可以在函数的输入中加入Print。

在终端的 "专家 "选项卡中打印读数

 
IgorM:

在哪里可以读到具有以下参数的指标是如何绘制的?

SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1)

SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2)

我不明白为什么有时画有时不画--我明白如果你画一条正常的线DRAW_LINE--指标缓冲值将设置Y轴,但元素的数量与图表上的条数相对应。

当指标缓冲区的类型为DRAW_HISTOGRAM时,指标缓冲区中的参数是什么? 为什么当两个指标缓冲区在一个柱子上结束时,柱子上会出现一个水平段,但当其中一个指标缓冲区等于EMPTY_VALUE时,就没有了,我不明白着色的逻辑

DRAW_HISTOGRAM的风格 与其他画线风格没有本质区别,X轴由条形数字表示,Y轴--由指标阵列的值表示,但正如他们所说,有一个细微的差别。
让我们以一个简单的指标为例。

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_width1 2
double SIMPLE[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0, SIMPLE);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   for(int shift = Bars-IndicatorCounted()-1; shift >= 0; shift--){
      SIMPLE[shift] = 1;
   }
}
//+------------------------------------------------------------------+

一个指标数组,单独的窗口,所有的元素都被赋值为1。把它扔到图表上,我们看到了什么(图1,左)。

数据窗口 "显示指标读数,但其窗口中没有任何内容。这就是细微差别,MT4只是不知道1是多高?栏杆应该画得多高?它没有什么可以借鉴的,也就是说,简单地说,没有条形的分割价格。正如你所注意到的,没有单独的参数来设置条形图的高度,它们的高度是自动设置的,相对于其他元素。让我们帮助MT4,设置分界线价格,我们可以通过编程来完成。

#property indicator_minimum 0
#property indicator_maximum 2

你可以简单地在指标设置中固定最小值(如0)和最大值(如2)。
一切都立即到位(图2,右),现在终端知道应该画多高的条形图,1在0和2的中间:))在这个例子中,指标数组有一个值(特别是用于显示 "细微差别"),我们应该向终端指示它的多少。如果我们将数组数据替换为1,例如Close[shift],终端就不会设置任何硬约束,并会画出一幅 "alla MAKD"。

如果你不在一个单独的窗口中画直方图,而是在一般情况下,会有一点不同的画面。让我们为第一个指标阵列保留Close[shift]的值,只是改变参数。

#property indicator_chart_window

我们再次得到同样的画面(图3,左)。数值是存在的,但没有显示。

终端需要一些自动计算条形高度的依据,由于最小和最大不能在一般窗口中固定,所以会出现第二个指标阵列。我们添加第二行并将其设置为0。

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_width1 2
#property indicator_color2 Red
#property indicator_width2 2
double SIMPLE[];
double SIMPLE2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0, SIMPLE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1, SIMPLE2);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   for(int shift = Bars-IndicatorCounted()-1; shift >= 0; shift--){
      SIMPLE[shift] = Close[shift];
      SIMPLE2[shift] = 0;
   }
}
//+------------------------------------------------------------------+

指示器阵列开始相对于对方显示。而一切都将如愿以偿(图4,右)。列是由SIMPLE[shift] SIMPLE2[shift]绘制的。

最后,还有一个指标代码,它填补了蜡烛,如果是上升,则为蓝色,如果是下降,则为粉红色。同样,每种颜色有两个数组(画法是从原点到终点(从开到关))。

//+------------------------------------------------------------------+
//|                                                       SIMPLE.mq4 |
//|                        Copyright © 2010,Анатолий Сергеев  |
//|                                            mql.sergeev@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Анатолий Сергеев"
#property link      "mql.sergeev@yandex.ru"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_width1 2
#property indicator_color2 Blue
#property indicator_width2 2
#property indicator_color3 Pink
#property indicator_width3 2
#property indicator_color4 Pink
#property indicator_width4 2
double Blue_home[];
double Blue_end[];
double Pink_home[];
double Pink_end[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0, Blue_home);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1, Blue_end);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2, Pink_home);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(3, Pink_end);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   for(int shift = Bars-IndicatorCounted()-1; shift >= 0; shift--){
      if(Close[shift] > Open[shift]){
         Blue_home[shift] = Open[shift];
         Blue_end[shift] = Close[shift];
      }else{
         Pink_home[shift] = Open[shift];
         Pink_end[shift] = Close[shift];
      }
   }
}
//+------------------------------------------------------------------+

 
IgorM:
阅读那里的帮助。
comment - 订单评论文本。评论的最后部分可以由贸易服务器改变

magic- 订单的magic number。可作为用户定义的标识符。

用魔法来帮助你

要检查一个订单,请执行以下操作。

如果(OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {

.......



任务:你需要 在不使用魔法的情况下 为这个特定的TS找到一个新出现的订单的勾。
原因: