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

 

帮我写一个简单的指标,在主窗口中画出 所需时期的高点和低点线(用一个外部变量设置)。

 

请告诉我在哪里可以找到一个15天的工作日计划表。

请给我一个链接或一个文件或名称。

并一如既往地感谢你的时间。

 
41ckm39fi:

晚上好。

请告诉我错误是什么,指标没有给出跨越两个MAs的信息。


在写这个指标之前,你是否仔细想过?

请解释一下这个逻辑,至少对你自己来说。

#property indicator_chart_window

extern int        Period_MA_fast         = 5,
                  Period_MA_med          = 8,
                  Period_MA_slow         = 16,
                  period_DeMarker       = 14;
//---- 
double            DeMarker_buffer0[],
                  Speed_MA_fast[],
                  Speed_MA_med[],
                  Speed_MA_slow[];      

#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- indicators
   IndicatorBuffers(4);
   SetIndexBuffer(0,DeMarker_buffer0);
   SetIndexBuffer(1,Speed_MA_fast);
   SetIndexBuffer(2,Speed_MA_med);
   SetIndexBuffer(3,Speed_MA_slow);
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_NONE);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
   //----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int    counted_bars=IndicatorCounted();
   int    i,limit;
   
   if(counted_bars>0) counted_bars--;
      limit=Bars-counted_bars;
   //----
   for(i=limit; i>=0; i--) {
      DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
      Speed_MA_med[i]=iMA(NULL,0,Period_MA_med,0,MODE_LWMA,PRICE_CLOSE,i);
      Speed_MA_slow[i]=iMA(NULL,0,Period_MA_slow,0,MODE_LWMA,PRICE_CLOSE,i);
   }
   
   for(i=limit; i>=0; i--)
      Speed_MA_fast[i]=iMAOnArray(DeMarker_buffer0,0,5,0,MODE_LWMA,i);
   
   static int PrevTime = 0;

   if(PrevTime >= Time[0] ) return(0);
   PrevTime = Time[0];

   if(Speed_MA_fast[SIGNAL_BAR] - 0.3 > 0)
      if (0.3 - Speed_MA_fast[SIGNAL_BAR+1] >= 0)
         Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );

   if(0.7 - Speed_MA_fast[SIGNAL_BAR] > 0)
      if (Speed_MA_fast[SIGNAL_BAR+1] - 0.7 >= 0)
         Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");

   if(Speed_MA_med[SIGNAL_BAR] - Speed_MA_slow[SIGNAL_BAR] > 0)
      if (Speed_MA_med[SIGNAL_BAR+1] - Speed_MA_slow[SIGNAL_BAR+1] >= 0)  
         Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );   

   if(Speed_MA_slow[SIGNAL_BAR] - Speed_MA_med[SIGNAL_BAR] > 0)
      if (Speed_MA_slow[SIGNAL_BAR+1] - Speed_MA_med[SIGNAL_BAR+1] >= 0)  
         Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SELL!!!" );     
  
  
   return(0);
}
//+------------------------------------------------------------------+
可能有用,还没有测试过
 

谢谢大家!还有一个问题.........

我有一个EA,有基于某些信号的进入和退出条件(不管是什么)。

即三个屏幕--一个指标,例如Force或Stohostick

退出条件也只能由它来决定

一切正常,但需要一个额外的止损 来保护头寸。

即=10p。

................. 我可以在不增加损失的情况下使用这个EA吗,至少

至少在小手数=0.01的情况下,使用这样的专家顾问可能没有额外的损失,因为退出信号无论如何都会有。

P.S. 我在想电子邮件或ICQ--刚打开,MT给你发了消息

而你正在考虑你的最佳停靠点是哪里。

.......,不要对任何要求你的人说不。

 
KlugerX35:

谢谢大家!还有一个问题.........

我有一个EA,有基于某些信号的进入和退出条件(不管是什么)。

即三个屏幕--一个指标,例如Force或Stohostick

退出条件也只能由它来决定

一切正常,但需要一个额外的止损来保护头寸。

即=10p。

................. 我可以在不增加损失的情况下使用这个EA吗,至少

至少在小手数=0.01的情况下,使用这样的专家顾问可能没有额外的损失,因为退出信号无论如何都会有。

P.S. 我在想电子邮件或ICQ--刚打开,MT给你发了消息

而你正在考虑你的最佳停靠点是哪里。

.......,不要对任何要求你的人说不。


如果专家顾问有一个 "技术 "出口,它不需要止损,如果你想放一个止损以备不时之需,为了保险,那就放一个更大的止损。

10便士是一个真正的损失。

对于什么时期来说,它是如此之小,一分钟?当然,它是混乱的,甚至会砍掉潜在的有利可图的交易。

是否有可能在没有额外的LOS的情况下使用这样一个专家顾问,至少

只需使用小手=0.01

如果它工作稳定,处理错误正常,而且你对交易结果感到满意,那么你就可以。
 

这是个问题--谁能解释一下。

为什么说通过反命令关闭可以节省一个价差?毕竟第一笔交易,例如买入是以Ask价格买入,并以当时的Bid价格卖出(总头寸大小没有利润),而第二笔交易--卖出是以Bid价格开仓,相应地,头寸长度是根据Ask收盘价计算。

手册中给出了一些不明确的例子https://book.mql4.com/ru/trading/orderclose,其中的区别并不在于所述的价差,而在于第二笔交易的规模--在一笔交易的2-15成交中,与之相反的是--只有15,即交易的所有损失都消失了,但价差却没有。

那么,这里有什么收获呢?

 
FatyM:

请告诉我在哪里可以找到一个15天的工作日计划表。

请给我一个链接或一个文件或名称。

并一如既往地感谢你的时间。

附加的文件:
 
Vinin:


在写这个指标之前,你是否仔细想过?

写下逻辑,至少对你自己而言。

也许会有效果,我还没有检查过

我重写了muwings 的逻辑对比,仍然没有消息,我搞不清楚错误是什么。
#property indicator_chart_window
#property  indicator_level1 0.3
#property  indicator_level2 0.7
//---- 
extern int        Period_DeMarker       = 14;
//---- 
double            DeMarker_buffer0[],
                  MA0[],
                  MA1[],
                  MA11[],
                  MA2[],                        
                  MA22[];      

#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
IndicatorBuffers(6);
SetIndexBuffer(0,DeMarker_buffer0);
SetIndexBuffer(1,MA0);
SetIndexBuffer(2,MA1);
SetIndexBuffer(3,MA2);
SetIndexBuffer(4,MA11);
SetIndexBuffer(5,MA22);
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_NONE);
SetIndexStyle(2,DRAW_NONE);
SetIndexStyle(3,DRAW_NONE);
SetIndexStyle(4,DRAW_NONE);
SetIndexStyle(5,DRAW_NONE);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int    i,limit;
//----
if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
  for(i=limit; i>=0; i--)
  DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
//---- 
  for(i=limit; i>=0; i--)
  
  MA0[i]=iMAOnArray(DeMarker_buffer0,0,5,0,MODE_LWMA,i);
//----   
  static int PrevTime = 0;
//---- 
  if(PrevTime >= Time[0]) return(0);
//---- 
  PrevTime = Time[0];
//----
                if(MA0[SIGNAL_BAR] - 0.3 > 0 && 0.3 - MA0[SIGNAL_BAR+1] >= 0)  
//---- 
                                Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );
//----
if(PrevTime <= Time[0]) 

return(0);
//---- 
  PrevTime = Time[0];
//----          
                if(0.7 - MA0[SIGNAL_BAR] > 0 && MA0[SIGNAL_BAR+1] - 0.7 >= 0)
//----               
                                Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");
                                
                                
MA1[i]=iMA(NULL,0,8,0,MODE_LWMA,PRICE_CLOSE,i);
                        
MA2[i]=iMA(NULL,0,16,0,MODE_LWMA,PRICE_CLOSE,i);

MA11[i]=iMA(NULL,0,8,0,MODE_LWMA,PRICE_CLOSE,i);
                        
MA22[i]=iMA(NULL,0,16,0,MODE_LWMA,PRICE_CLOSE,i);                                                       
                
//----   
if((MA1[i]>MA2[i]) && (MA11[i+1]<MA22[i+1]))  
//---- 
                                Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SIGNAL1!!!" );    

if((MA1[i]<MA2[i]) && (MA11[i+1]>MA22[i+1]))  
//---- 
                                Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SIGNAL2!!!" );   

   return(0);
  }
 

我怎样才能让MathRand 正常工作,我每次运行它都得到同一组随机数。这意味着它们不是随机的。

 

我怎样才能让MathRand 正常工作,我每次运行它都得到同一组随机数。这意味着它们不是随机的。

原因: