[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 295

 
isCloseLastPosByStop - 返回通过止损平仓的标志
isCloseLastPosByTake - 返回通过获利平仓的标志。
 

帮助修复,标准的stockistik,添加了一个 不能正常工作的警报,无法找出错误的地方....。

谢谢

//+------------------------------------------------------------------+
//|                                                   Stochastic.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property  indicator_width1 1
#property  indicator_width2 1
#property indicator_level1 20
#property indicator_level2 50
#property indicator_level3 80
#property indicator_levelcolor DimGray
//---- input parameters
//+------------------------------------------------------------------+
extern bool Alerts  = true;
//+------------------------------------------------------------------+
extern int AlertBar = 1; 
//+------------------------------------------------------------------+
extern int KPeriod  = 5;
//+------------------------------------------------------------------+
extern int DPeriod  = 2;
//+------------------------------------------------------------------+
extern int Slowing  = 3;
//+------------------------------------------------------------------+
extern int MAMethod = 3; // 0=SMA,1=EMA,2=SSMA,3=LWMA
//+------------------------------------------------------------------+
//-------------------------------------------------------------------+
//-----
datetime LastAlertTime = -333;
//---- Buffers
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//----
int    MAMode;
string strMAType;
//----
int draw_begin1=0;
int draw_begin2=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
  string short_name;
//---- 2 additional buffers are used for counting.
  IndicatorBuffers(4);
//---- indicator lines
  SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
  SetIndexBuffer(0,MainBuffer);
  SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
  SetIndexBuffer(1,SignalBuffer);
//----
  SetIndexBuffer(2,HighesBuffer);
  SetIndexBuffer(3,LowesBuffer);
//----
  switch(MAMethod)
  {
    case 1:  strMAType="EMA";  MAMode=MODE_EMA;  break;
    case 2:  strMAType="SMMA"; MAMode=MODE_SMMA; break;
    case 3:  strMAType="LWMA"; MAMode=MODE_LWMA; break;
    default: strMAType="SMA";  MAMode=MODE_SMA;  break;
  }
//---- name for DataWindow and indicator subwindow label
  short_name="Stochastic ("+KPeriod+","+DPeriod+","+Slowing+","+strMAType+")";
  IndicatorShortName(short_name);
  SetIndexLabel(0,short_name);
  SetIndexLabel(1,"Signal");
//----
  draw_begin1=KPeriod+Slowing;
  draw_begin2=draw_begin1+DPeriod;
  SetIndexDrawBegin(0,draw_begin1);
  SetIndexDrawBegin(1,draw_begin2);
//----
  return(0);
}
//+------------------------------------------------------------------+
//| Stochastic oscillator                                            |
//+------------------------------------------------------------------+
int start()
{
  int i,k;
  int counted_bars=IndicatorCounted();
  double price;
//----
  if(Bars<=draw_begin2) return(0);
//---- initial zero
  if(counted_bars<1)
  {
    for(i=1;i<=draw_begin1;i++) MainBuffer[Bars-i]=0;
    for(i=1;i<=draw_begin2;i++) SignalBuffer[Bars-i]=0;
  }
//---- minimums counting
  i=Bars-KPeriod;
  if(counted_bars>KPeriod) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double min=1000000;
    k=i+KPeriod-1;
    while(k>=i)
    {
      price=Low[k];
      if(min>price) min=price;
      k--;
    }
    LowesBuffer[i]=min;
    i--;
  }
//---- maximums counting
  i=Bars-KPeriod;
  if(counted_bars>KPeriod) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double max=-1000000;
    k=i+KPeriod-1;
    while(k>=i)
    {
      price=High[k];
      if(max<price) max=price;
      k--;
    }
    HighesBuffer[i]=max;
    i--;
  }
//---- %K line
  i=Bars-draw_begin1;
  if(counted_bars>draw_begin1) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double sumlow=0.0;
    double sumhigh=0.0;
    for(k=(i+Slowing-1);k>=i;k--)
    {
      sumlow+=Close[k]-LowesBuffer[k];
      sumhigh+=HighesBuffer[k]-LowesBuffer[k];
    }
    if(sumhigh==0.0) MainBuffer[i]=100.0;
    else MainBuffer[i]=sumlow/sumhigh*100;
    i--;
  }
//---- last counted bar will be recounted
  if(counted_bars>0) counted_bars--;
  int limit=Bars-counted_bars;
//---- signal line is simple movimg average
  for(i=0; i<limit; i++)
  SignalBuffer[i]=iMAOnArray(MainBuffer,Bars,DPeriod,0,MAMethod,i);
//+------------------------------------------------------------------+ 
  if(Alerts)
  {
    if(AlertBar >= 0 && Time[0] > LastAlertTime)
    {
      if(MainBuffer[i+AlertBar] > SignalBuffer[i+AlertBar] && MainBuffer[i+AlertBar+1] <= SignalBuffer[i+AlertBar+1])
      {
        Alert("Stochastic BULL! ",Symbol()," TF: ",Period());
      }
      if(MainBuffer[i+AlertBar] < SignalBuffer[i+AlertBar] && MainBuffer[i+AlertBar+1] >= SignalBuffer[i+AlertBar+1])
      { 
        Alert("Stochastic BEAR! ",Symbol()," TF: ",Period());
      }
    }
    LastAlertTime = Time[0];
  }
//----
  return(0);
}
//+------------------------------------------------------------------+
 

我想做一个多MA。也就是说,在图表上应该可以看到2个MAs--一个是当前工具,另一个是第二个工具。

有一个将它们相互绑定的问题,因为每种工具的波动性和多重性点是不同的。我想不出什么有用的东西....。帮助!:)

 
Cmu4:

我想做一个多MA。也就是说,在图表上应该可以看到2个MAs--一个是当前工具,另一个是第二个工具。

有一个将它们相互绑定的问题,因为每种工具的波动性和多重性点是不同的。我想不出什么有用的东西....。帮助!:)

对于子窗口,我希望它不会造成问题。

这取决于任务,你可以在两个图表上都取一个具有大周期的MA,并将其作为基础。

例如,工作MA的周期为12。对于主要符号,我们按原样绘制。

对于其他符号,我们找到MA12和60之间的差值;这个差值乘以系数应该加到主符号的MA60上。

 
artmedia70:

而且要说明的是?第一个头寸应该从那些开放的(市场中)还是已经关闭的头寸中选择?如果第一个职位是三年前开设的呢? 需要被选中吗?

而这一切是为了什么呢?

要从 开放的 职位中选择第一个。

有必要检查第一次开仓和最后一次开仓之间的点位 距离。

 
forexnew:
试着用IsConnected() - 没有影响。有什么建议吗?

也许可以看看还有什么东西返回IsTradeAllowed()?

请帮助。我试图根据附在条形图上的两个点建立一个趋势,从最后一个点开始向前推进N条。即传入 - 第一个和第二个点的时间价格,和N表示为未来的条数(复选框梁=假)。如果第二个点,假设,位于从当前条形0开始的条形1上,而我必须从它提前10个条形抽出,我如何从未来条形的时间和价格计算?

 

请帮助。

我怎样才能找出时间高[3]?

 
alex11230:

请帮助。

我怎样才能找出时间高[3]?


时间[3]
 
Roll:

试试吧。
谢谢你 :)
 

如何描写。

/

在字符串中?

比如说。

string path=TerminalPath()+"/logs/"+tekTime+".log"。

给出了一个错误,如果你删除斜线"/"的话

string path=TerminalPath()+"logs "+tekTime+".log"。

- 没有错误。