[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 436

 
semiromid:

Прошу помощи .

Как в этот коментарий "Возникла ошибка " можно добавить переменную ?

OrderSend(Symbol(),OP_SELLSTOP,0.1,Ask-50*Point,3,Bid+150*Point,Bid-150*Point, "Возникла ошибка ", 0);


字符串斯特罗卡。

双X。

.............

.............


Stroka=StringConcatenate( "An error occurred", DoubleToStr(x, 0) )

OrderSend(Symbol(),OP_SELLSTOP,0.1,Ask-50*Point,3,Bid+150*Point,Bid-150*Point, Stroka, 0);

 
bercut0077:

专家们下午好,在指标中,我对专家顾问获得的价值感兴趣。

用于表示参数和变量的状态的特殊常数。可以是以下值。

恒定 价值 描述
NULL 0 表示空字符串状态
空白 -1 表示参数的空状态
EMPTY_VALUE 0x7FFFFFFFF 默认值,指向一个空值的指针。用于自定义指标
呼叫中心 0xFFFFFFFFFF 表示没有颜色
WHOLE_ARRAY 0 数组函数 一起使用。表示一个数组的所有元素都必须被处理


十六进制的0x7FFFFFFFF 等于十进制的2147483647

也就是说,在某个时刻,指标缓冲区出现一个空值--这就是你在专家顾问中看到的情况。你可以设置指标缓冲区的 "空值"。

空白 SetIndexEmptyValue( int index,double value )。

设置指标线的空值。空白值不会被绘制或显示在DataWindow中。默认的空值是EMPTY_VALUE。
参数。
指数 - Index - 该行的索引号。必须从0到7。
价值 - 新的 "空 "值。
 
peshihod:


也就是说,打开时间与一分钟前还是两分钟前打开并不重要?

第2点不清楚。这一切都有点模糊不清。

开盘时间可以通过OrderOpenTime()确定。

也就是说,打开时间与一分钟前还是两分钟前打开并不重要?


Мгновенное открытие

1.Моментальное(Сиюсекундное +0.5 - 2 секунды) определение вновь открывшегося торгового(не отложеных ордеров) ордера(Ордера открытого вручную и открытого спомощью советника).Система идентефецируюет ордер из друх вариантов (Sell или Byu) .

Если система определила ордер который рание не был открыт . то идет продолжение под номером 2.

2. Выполняеться какая то задача (Например,если Sell: Alert("Открытый ордер на продажу"+y);),(Например,если byu: Alert("Открыт ордер на покупку"+w);), всего 1-н раз,именно для этого ордера .

После того как еще открылся один ордер(толи системой, толи вручную ), система вновь действует с пункта 1 по пункт 2 .

 
peshihod:

字符串斯特罗卡。

双X。

.............

.............


Stroka=StringConcatenate( "An error occurred", DoubleToStr(x, 0) )。

OrderSend(Symbol(),OP_SELLSTOP,0.1,Ask-50*Point,3,Bid+150*Point,Bid-150*Point, Stroka, 0);


不错的组合,嗯...
 
artmedia70:

用于表示参数和变量的状态的特殊常数。可以是以下值。

是的,这很清楚,但不清楚如何从这些空值中治愈指标,这就是我公布代码的原因,我需要真正的帮助,也就是说,我需要指标总是输出1或-1。
 
bercut0077:
是的,这很清楚,但不清楚如何治疗指标的这些空值,这就是为什么我发布了代码,我需要真正的帮助,也就是说,我需要指标将永远输出1或-1。
我提供了一个为指标线设置空值的函数的例子。你可以用不同的方式来做。如果你只需要两个值+1和-1,那么当空值出现时,检查过去的状态(+1或-1)并输入它而不是空值。那么在缓冲区内将永远有+1或-1。
假设有一个+1的值。出现一个空值。相反,只要出现-1,就继续向缓冲区输入前一个值(+1),然后再输入到缓冲区。
现在缓冲区内将有-1。一旦出现空值,你就检查之前的值(现在是-1),并把它输入到缓冲区。
这样一来,你的缓冲区里总是有+1或-1。
 
artmedia70:

谢谢你。另一项任务出现了...
 
semiromid:

1.Моментальное(Сиюсекундное +0.5 - 2 секунды) определение вновь открывшегося торгового(не отложеных ордеров) ордера(Ордера открытого вручную и открытого спомощью советника).Система идентефецируюет ордер из друх вариантов (Sell или Byu) .

Если система определила ордер который рание не был открыт . то идет продолжение под номером 2.

2. Выполняеться какая то задача (Например,если Sell: Alert("Открытый ордер на продажу"+y);),(Например,если byu: Alert("Открыт ордер на покупку"+w);), всего 1-н раз,именно для этого ордера .

После того как еще открылся один ордер(толи системой, толи вручную ), система вновь действует с пункта 1 по пункт 2 .


我明白挂单和开单是不同的订单。如果挂单 被打开,那么任务就会减少到最初的任务,即打开订单。如果我理解正确的话,情况变得非常复杂。

有哪些任务?也许,一切都可以用更简单的方式完成?

 
尊敬的专家帮助修改代码,我们需要得到
Cur_Trend без пустой величины, тоесть если появляется пустота, то нужно заменить последним известным значением
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LightBlue
#property indicator_color2 Magenta

double CrossUp[];
double CrossDown[];
double Cur_Trend[];
int CurrentTrend = 0;
int starttime = 0;
extern int FasterEMA = 5;
extern int SlowerEMA = 8;

int init()
  {
   IndicatorBuffers(3); 
   SetIndexStyle(0, DRAW_ARROW, EMPTY);
   SetIndexArrow(0, 233);
   SetIndexBuffer(0, CrossUp);
   SetIndexStyle(1, DRAW_ARROW, EMPTY);
   SetIndexArrow(1, 234);
   SetIndexBuffer(1, CrossDown);
   SetIndexBuffer(2, Cur_Trend);
   starttime = TimeLocal(); 
   return(0);
  }

int deinit()
  {
   return(0);
  }

int start() { 
   int limit, i, counter, loop, ii;
   double fasterEMAnow, slowerEMAnow, fasterEMAprevious, slowerEMAprevious, fasterEMAafter, slowerEMAafter;
   double Range, AvgRange;
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   loop = 0;
   for(i = 0; i <= limit; i++) {
      counter=i;
      Range=0;
      AvgRange=0;
      for (counter=i ;counter<=i+9;counter++)
      {
         AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
      }
      Range=AvgRange/10;
      fasterEMAnow = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);
      fasterEMAprevious = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i+1);
      fasterEMAafter = iMA(NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
      slowerEMAnow = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_OPEN, i);
      slowerEMAprevious = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_OPEN, i+1);
      slowerEMAafter = iMA(NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_OPEN, i-1); 
      if ((fasterEMAnow > slowerEMAnow) && (fasterEMAprevious < slowerEMAprevious) && (fasterEMAafter > slowerEMAafter)) {
         CrossUp[i] = Low[i] - Range*0.5;
         if ((loop == 0) && (CurrentTrend != 1))  {
            CurrentTrend = 1;
            Cur_Trend[ii]= CurrentTrend;
            }
         if (loop == 0)  {
            loop = 1;
            }
      }
      else if ((fasterEMAnow < slowerEMAnow) && (fasterEMAprevious > slowerEMAprevious) && (fasterEMAafter < slowerEMAafter)) {
              CrossDown[i] = High[i] + Range*0.5;
           if ((loop == 0) && (CurrentTrend != -1))  {
              CurrentTrend = -1;
              Cur_Trend[ii]= CurrentTrend;
           }
           if (loop == 0)  {
              loop = 1;
          }
       }
   }
   return(0);
}
 

亲爱的专家们!

我需要你帮助解决以下问题。我有一个自定义指标,用一种颜色画一条双色线,然后再画另一种颜色。有什么方法可以教专家顾问判断此刻的线条是哪种颜色?

附加的文件: