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

 
abeiks:

你好。

目前,时间没有被正确返回。例如,如果时间是12.04,它将返回12.4。你能告诉我如何使这个功能正确吗?

那么,Hour()和Minute()返回程序启动时最后一个服务器时间的当前小时和当前分钟。而返回的值是int类型 的。而这些只是整数。所以你需要对它们进行格式化。例如,像这样。

string label=IntegerToString(Hour(),2,'0')+":"+IntegerToString(Minute(),2,'0');
 
artmedia70:

Hour()和Minute()返回程序开始时最后一个服务器时间的当前小时和当前分钟。而返回的值是int类型的。而这些只是整数。所以你仍然需要对它们进行格式化。例如,像这样。


谢谢你!
 
abeiks:
谢谢你!

不客气。如果不是什么秘密,你为什么需要一个显示你的程序最后一次启动的时间戳--其中的时间不会改变。

只是闲来无事的好奇心...

 

下午好!

请告知如何正确实现限制1个交易的功能(即如果一个交易已经在一个蜡烛上打开或关闭,一个新的交易将不会在该蜡烛上打开)。

我找到了许多变体,但无法弄清楚如何正确地编写猫头鹰的代码(即哪些部分应该写在全局变量 中,哪些部分应该写在交易的开启条件中)。

例如,这里有这样一个变体。

int TekBar = -1; // 当前栏位。

if (TekBar == Bars)return(0); // 每个栏位只能进行一次交易。
TekBar = Bars; // 一个柱子上只有一个交易。

{...}

这个脚本的哪一部分应该插入到猫头鹰代码的哪个区域?

 
DuKle:

下午好!

请告知如何正确实现限制1个交易的功能(即如果一个交易已经在一个蜡烛上打开或关闭,一个新的交易将不会在该蜡烛上打开)。

我找到了许多变体,但无法弄清楚如何正确地写出猫头鹰的代码(即哪些部分应该写在全局变量中,哪些部分应该写在交易开始条件中)。

例如,这里有这样一个变体。

int TekBar = -1; // 当前栏位。

if (TekBar == Bars)return(0); // 每个柱子只能有一个交易。
TekBar = Bars; // 一个柱子上只有一个交易。

{...}

这个脚本的哪一部分应该插入到猫头鹰代码的哪个区域?

你需要找出第0条的最后一笔交易是开仓还是平仓。

要做到这一点,你需要找到最后一笔开仓交易和最后一笔平仓交易。

查看最后一笔开仓交易的栏位和最后一笔平仓交易的栏位。

如果这些数值中的任何一个(最后一笔开仓交易的栏位或最后一笔平仓交易的栏位)为零,你就不能开新仓。

而且,是的:它不是一个脚本,它只是一段代码。而且你不需要在猫头鹰身上插入任何东西:猫头鹰是一种夜间猛禽,让鸟儿活下去。

 

你好!请帮助我

我有一个想法,但我不知道如何实现它。而最重要的是,我不知道这个问题是否有解决办法。

它的本质是:我们有一个指标,在给定的条数 上在图表上画一些线。

是否可以通过用鼠标拖动线的左 "端 "来改变画线的条数?拖动后,指标应记住用于计算的新条数。下面是一个我想改进的指标的例子

//+------------------------------------------------------------------+
//|                                                      Canal__.mq4 |
//+------------------------------------------------------------------+
//----------------------------------
#property indicator_chart_window
//----------------------------------
extern int Hours=20;
extern color col=Red;
//------------------
double lr,lr0,lrp;
double sx,sy,sxy,sx2,aa,bb;
int p,fs;
ulong sName;
int f,f0,f1;
double dh,dl,dh_1,dl_1,dh_2,dl_2;
int ai_1,ai_2,bi_1,bi_2;
double hai,lai,dhi,dli,dhm,dlm,ha0,hap,la0,lap;
double price_p1,price_p0,price_p2,price_01,price_00,price_02;
int p1,p0,p2,fp;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   p=Hours*60/Period();
   if(fs==0)
     {
      sName=TimeCurrent(); 
      fs=1;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectDelete("1"+(string)sName);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i,n;
//----
   if(f==1)
     {
      p1=iBarShift(Symbol(),Period(),(datetime)ObjectGet("1"+(string)sName,OBJPROP_TIME1));
      if(fp==0 && p!=p1) {p=p1; fp=1;}
     }
//----
   sx=0; sy=0; sxy=0; sx2=0;
   for(n=0; n<=p; n++)
     {
      sx+=n; sy+=Close[n]; sxy+=n*Close[n]; sx2+=MathPow(n,2);
     }
   aa=(sx*sy-(p+1)*sxy)/(MathPow(sx,2)-(p+1)*sx2); bb=(sy-aa*sx)/(p+1);
//----
   for(i=0; i<=p; i++)
     {
      lr=bb+aa*i;
      dh=High[i]-lr; dl=Low[i]-lr;
      //----
      if(i<p/2)
        {
         if(i==0)
           {
            dh_1=0.0; dl_1=0.0; ai_1=i; bi_1=i;
           }
         if(dh>=dh_1) {dh_1=dh; ai_1=i;}
         if(dl<=dl_1) {dl_1=dl; bi_1=i;}
        }
      //----
      if(i>=p/2)
        {
         if(i==p/2)
           {
            dh_2=0.0; dl_2=0.0; ai_2=i; bi_2=i;
           }
         if(dh>=dh_2) {dh_2=dh; ai_2=i;}
         if(dl<=dl_2) {dl_2=dl; bi_2=i;}
        }
     }
   lr0=bb; lrp=bb+aa*(i+p);
//===================================================
   if(MathAbs(ai_1-ai_2)>MathAbs(bi_1-bi_2)) f=1;
   if(MathAbs(ai_1-ai_2)<MathAbs(bi_1-bi_2)) f=2;
   if(MathAbs(ai_1-ai_2)==MathAbs(bi_1-bi_2))
     {
      if(MathAbs(dh_1-dh_2)<MathAbs(dl_1-dl_2)) f=1; if(MathAbs(dh_1-dh_2)>=MathAbs(dl_1-dl_2)) f=2;
     }
//=================================================
   if(f==1)
     {
      for(n=0; n<=20; n++)
        {
         f1=0;
         for(i=0; i<=p; i++)
           {
            hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
            if(i==0 || i==p/2) dhm=0.0;
            if(High[i]-hai>dhm && i<p/2) {ai_1=i; f1=1;}
            if(High[i]-hai>dhm && i>=p/2) {ai_2=i; f1=1;}
           }
         if(f==0) break;
        }
      //----------------------------
      for(i=0; i<=p; i++)
        {
         hai=High[ai_1]*(i-ai_2)/(ai_1-ai_2)+High[ai_2]*(i-ai_1)/(ai_2-ai_1);
         dli=Low[i]-hai;
         if(i==0) dlm=0.0; if(dli<dlm) dlm=dli;
        }
      ha0=High[ai_1]*(0-ai_2)/(ai_1-ai_2)+High[ai_2]*(0-ai_1)/(ai_2-ai_1);
      hap=High[ai_1]*(p-ai_2)/(ai_1-ai_2)+High[ai_2]*(p-ai_1)/(ai_2-ai_1);
      //----------------------------
      price_p1=hap+dlm/2;
      price_01=ha0+dlm/2;
     }
//=================================================
   if(f==2)
     {
      for(n=0; n<=20; n++)
        {
         f1=0;
         for(i=0; i<=p; i++) 
           {
            lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
            if(i==0 || i==p/2) dlm=0.0;
            if(Low[i]-lai<dlm && i<p/2) {bi_1=i; f1=1;}
            if(Low[i]-lai<dlm && i>=p/2) {bi_2=i; f1=1;}
           }
         if(f==0) break;
        }
      //----------------------------
      for(i=0; i<=p; i++)
        {
         lai=Low[bi_1]*(i-bi_2)/(bi_1-bi_2)+Low[bi_2]*(i-bi_1)/(bi_2-bi_1);
         dhi=High[i]-lai;
         if(i==0) dhm=0.0; if(dhi>dhm) dhm=dhi;
        }
      la0=Low[bi_1]*(0-bi_2)/(bi_1-bi_2)+Low[bi_2]*(0-bi_1)/(bi_2-bi_1);
      lap=Low[bi_1]*(p-bi_2)/(bi_1-bi_2)+Low[bi_2]*(p-bi_1)/(bi_2-bi_1);
      //----------------------------------------------------------------
      price_p1=lap+dhm/2;
      price_01=la0+dhm/2;
     }
//=================================================================================== отрисовка линий
   ObjectCreate("1"+(string)sName,2,0,Time[p],price_p1,Time[0],price_01);
//-----------------------------------------------------------------
   ObjectSet("1"+(string)sName,OBJPROP_COLOR,col);
   ObjectSet("1"+(string)sName,OBJPROP_STYLE,STYLE_DASHDOT);
   ObjectSet("1"+(string)sName,OBJPROP_RAY,false);
//---------------------------------------------
   ObjectSet("1"+(string)sName,OBJPROP_TIME1,Time[p]);
   ObjectSet("1"+(string)sName,OBJPROP_PRICE1,price_p1);
   ObjectSet("1"+(string)sName,OBJPROP_TIME2,Time[0]);
   ObjectSet("1"+(string)sName,OBJPROP_PRICE2,price_01);
   f=1; p1=p; p0=p; p2=p; fp=0;
//===================================================================================
   return(0);
  }
//+------------------------------------------------------------------+
 
Night63:

你好!请帮助我

我有一个想法,但我不知道如何实现它。而最重要的是,我不知道这个问题是否有解决办法。

它的本质是:我们有一个指标,在给定的条数上在图表上画一些线。

是否可以通过用鼠标拖动线的左 "端 "来改变画线的条数?拖动后,指标应记住用于计算的新条数。下面是一个我想改进的指标的例子

你需要在指标中添加OnChartEvent(),并通过其名称:CHARTEVENT_OBJECT_CHANGE 来跟踪线条尺寸变化的事件。重新计算新的线条长度,以小节为单位,并使用其新的尺寸作为计算的参数。
 
artmedia70:

你需要查出最后一笔交易是在第0条开仓还是平仓。

要做到这一点,你需要找到最后一笔开仓交易和最后一笔平仓交易。

查看最后一笔开仓交易的开盘条和最后一笔平仓交易的收盘条。

如果这两个值中的任何一个(最后一笔开仓交易的条形图或最后一笔平仓交易的条形图)为零,你就不能开新仓。

而且,是的:你没有脚本,它只是nepomyshchego代码的一部分。而且你不需要在猫头鹰身上插入任何东西:猫头鹰是一种夜间猛禽,让鸟儿活下去。

我明白检测是否存在交易的原理。 我不知道如何在代码中实现它 :-(
 
DuKle:
我理解判断交易是否存在的原理,我不知道如何在代码中实现它 :-(

这一切是多么可悲...

要我为你做吗?

作为一个开始,要进一步了解,请阅读"KimIV的有用功能"主题。

当然,这些代码是多余的,但对于入门和学习来说是恰到好处的。

 

亲爱的mql4/5程序员 !

我是一个初学者,学习了编程语言的基础知识,并为我的毕业证书开发了一个EA!

我的毕业证书上有一章叫 "经济学"。

如果我要为一家公司开发一个程序--经济部分的一切都很清楚。

但如何在我的情况下?我可以考虑哪些因素,哪些路径可以遵循!?

非常感谢您!!!!

___________________________

路是人走出来的 (c)