任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 908

 
AlexeyVik:

我很抱歉,我不是故意要无礼的。你为什么要做编程呢?

虽然,这里有很多人都在写代码,而不是解释什么是什么。你必须把它交给我。

我喜欢解释,但不喜欢写一些零碎的东西。

知道了!你去吧。谢谢。

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //第一条杠
int MaxVol=0。
int i=0,n=0。
for (i=bar1; i>0; i--)
{
//if (i<bar);
//if (TimeMinute(Time[i])!=Minute()) break;
如果(iVolume(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolume(Symbol(),0,i)。
n=i。
}
//Print(MaxVol," MaxVol ", n, " n")。
}
datetime MaxVolT = iTime(NULL, PERIOD_M1, n)。

 
sashasonik:

知道了!就这样了。谢谢。

int bar1=iBarShift(Symbol(),PERIOD_M1,iTime(Symbol(),PERIOD_D1,0));//Print(bar1); //第一条杠
int MaxVol=0。
int i=0,n=0
for (i=bar1; i>0; i--)
{
//if (i<bar);
//if (TimeMinute(Time[i])!=Minute()) break;
如果(iVolume(Symbol(),0,i)>MaxVol)
{
MaxVol=iVolume(Symbol(),0,i)。
n=i。
}
//Print(MaxVol," MaxVol ", n, " n")。
}
datetime MaxVolT = iTime(NULL, PERIOD_M1,n)。

好了,在这里我们有了。

现在你可以考虑减少和简化代码了。

在这里,你已经找到了第一个酒吧。这意味着我们必须把这么多的柱子复制到数组中。这将代码减少到三个字符串。

1.找到第一根柱子。

2.将第一个例子的卷复制到阵列中

int  CopyTickVolume(
   string           symbol_name,      // имя символа
   ENUM_TIMEFRAMES  timeframe,        // период
   int              start_pos,        // откуда начнем (с нулевого или первого)
   int              count,            // сколько копируем(первым пунктом определили)
   long             volume_array[]    // массив для копирования тиковых объемов(предварительно объявляем массив глобального уровня или локального)
   );

3.ArrayMaximum(从这个数组开始)


不清楚你为什么要使用n 这个变量

 

下载了报价的档案。下面是一个条目的例子。
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
字段标题如下: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
前两个字段是什么意思?

 
PostoronnimV:

下载了报价的档案。下面是一个条目的例子。
4071656556,D,EUR/USD,2015-05-31 17:00:02.803000000,1.098020,1.098120
字段标题如下: lTid,cDealable,CurrencyPair,RateDateTime,RateBid,RateAsk
前两个字段是什么意思?

前三栏可以放心抛弃,它们对创建MT4的报价没有实际应用。
 

你好!

我在专家顾问中使用了许多块,每个块都有相同的指标。我可以在OnTick()中声明这个指标一次,然后在每个区块中不必再次声明吗?

 
abeiks:

你好!

我在专家顾问中使用了许多块,每个块都有相同的指标。我可以在OnTick()中声明这个指标一次,然后在每个区块中不必再次声明吗?

你可以做到这一点
 
请给我看一个例子。
void OnTick()
{
double MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
abeiks:
如何?请给我看一个例子。
阅读手册,了解在不同代码级别声明的变量的可见性。
double MA_High=0; 
void OnTick()
{
double  MA_High = iMA(NULL, 0, 9, 1, MODE_EMA, PRICE_LOW, cnt);
}

int exampl()
{
a = MA_High;
}

int exampl1()
{
a = MA_High;
}
 
evillive:
阅读手册,了解在不同代码级别声明的变量的可见性。
谢谢你!
 

你好。

你能告诉我为什么会出现警告--从 "字符串 "到 "数字 "的隐性转换,以及在变量位置从 "数字 "到 "字符串 "的隐性转换(在int命令之后,然后在信息之后)。 这一定是同一个警告? 我不擅长编程。

另外,再告诉我一下,如果代码可以工作,但只有警告,这是不是很糟糕?

还有一个问题,我如何在信息中获得当地时间?我写了 message= TimeLocal()+.....,但什么也没发生。


代码片段。

if(last_sell_1_price==0 || TimeCurrent()-last_sell_1_price>alarm_limit_notification*60)
                 {
                  Print("");
                  if(Session_Check())
                    {
            
//сооб sell

                     int sell1 = DoubleToStr( (Bid - Price_Line)/Point,0);
                     int sell2=DoubleToStr( (Bid - Price_Line2)/Point,0);
                     int rsi=DoubleToStr(ExtRSIBuffer[0] - Price_RSI_Line, 2);
                                  
                     message=
                     TimeCurrent()+"  (Level)"+"   \n"+
                     "\n"+
                     Symbol()+"  TF:"+TF_in_String()+"   \n"+
                     "Price: "+DoubleToStr(Bid,4)+"   \n"+
                     "sell_1: "+(sell1>0?"+":"")+sell1+"   \n"+
                     "sell_2: "+(sell2>0?"+":"")+sell2+"   \n"+
                     "RSI:  "+(rsi>0?"+":"")+rsi;
  
                     SendNotification(message);
                     Print(message);
                     if(mail_message==on)
                     SendMail(Symbol(),message);

                    }
                  last_sell_1_price=TimeCurrent();
                 }
              }