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

 
drems:
告诉我是否有办法在订单上设置默认评论?

什么样的"秩序"?它是用来做什么的?哪里需要评论,为什么需要评论?
 
hoz:

我有东西在一个简单的点上,一个头痛的问题。有一个搜索订单的功能。

t - 所有订单的计数器。

p - 待处理订单的计数器。

我从一开始就叫它。

事实上,当我们打开它时,即使没有订单,我们也会看到这样的情况(即使没有订单,也会打印成有订单的样子...)。

这怎么可能呢?


就这样吧...
if (OrderType() > 1)
      {
          p++;
      }
      t++;
Что у нас тут? Если тип ордера больше OP_SELL, то увеличиваем p

你有没有想过,订单的类型也可以超过五个?具体来说是六个。这是一个非交易性的存款变化。

 
artmedia70:
就这样吧...

你有没有想过,订单的类型也可以超过五个?具体来说是六个。这是一个非交易性的存款变化。



不,这是我第一次听说。它在哪里说的?
 
FAQ:
存款=6型

嗯,订单类型=存款!?那是什么?
 
artmedia70:
就这样吧...

你有没有想过,订单的类型也可以超过五个?具体来说是六个。这是一个非交易性的存款变化。



而为什么是6,因为订单的 大小或数量 可以在专家顾问中独立设置。
 
hoz:

嗯,订单类型=存款!?这是什么?

所有的提款和存款都在这个数字之下
 
Profitov:

而为什么是6,因为订单的大小或数量可以写进EA。

我们在谈论什么?我们不是在谈论订单的数量,而是在谈论订单的类型。所以:6型的订单是对存款的非交易性修改。
 
hoz:

不,这是我第一次听说。它在哪里说的?

这是无记载的数据。
 
FAQ:

所有提款和存款都在这个数字之下。


嗯,这个数字又怎么会影响到订单统计的收集?

artmedia70:

这是无记载的数据。

那很好啊!最有趣的是有人知道这件事,很奇怪。怎么会有人猜到呢?

artmedia70:

我们在谈论什么?这不是关于订单的数量,而是关于订单的类型。所以:第6种类型的订单是一种非交易性的存款变更。

如果在演示中测试了猫头鹰,这个顺序怎么算?也就是说,最初在演示中给出的余额--它将是......所追求的一个?而在现实中--这就是我们所提取和存放的东西,对吗?

 
Sepulca:

这应该是可行的,我还没有亲自测试,因为到目前为止,终端正忙于优化另一个EA。

你好!

我试着把你的代码粘贴到教程中的模板上。我必须只开一个位置,但模板只有一个位置。

票据变量有另一个名字,因为模板已经有了一个,并使其成为静态的,所以如果头寸在第二天仍然存在,提款的标准将从它那里接收数据。

一切都很好,但出现了一个循环的问题。例如,在策略测试器中,专家顾问在获利或收盘 时退出头寸 卖出,而进入的标准仍然是活跃的,所以事实证明,EA不断地开仓和平仓

这个问题早先是通过添加一个静态日期时间变量t来解决的,但现在

 if(Maximum>0 && Flag) {
   signal = Maximum - Bid;    
   if (signal > 0.005 ) { // к примеру если ниже максимума на 12 пунктов, в этом случае откроем SELL 
      Opn_S = true;
      tickett= Opn_S; 
      t=Time[0];  
      if(tickett>=0) Flag=false;// Ордер открылся, сегодня больше не открываем.       
   }  
}
 
if(tickett>=0) 
    {
double stop = iHigh(Symbol(),Period(),0) - iHigh(Symbol(),Period(),1);
if (stop > 0.0012)
     {
       if (Time[0]>t)
            {
             Cls_S=true;   
             tickett=-1;          
            }
      }
     }

卖出停止工作。

它是有效的,但它是循环的。

#define magic 123456789
StartHour=14;
StartMinute=1;// Время 08:01
StopHour=16;
StopMinute=30; // Время 23:58
StartTime=StartHour*60+StartMinute;
StopTime=StopHour*60+StopMinute;
static int tickett=-1;
static double Maximum=-1;
static datetime t;
if(StopTime<=StartTime) {Print("ERROR: Неправильные времена"); return(0);}
 CurrentMinutesFromDayStart=Hour()*60+Minute();// Текущее время в минутах от начала дня
 datetime td=iTime(Symbol(),PERIOD_D1,0);// Время открытия дневного бара в секундах от 01.01.1970
 if(CurrentMinutesFromDayStart<StartTime) {Maximum=-1;Flag=true;}// Если StartTime еще не настало, то после StopTime нужно пересчитать Maximum и можно открывать ордер
if(CurrentMinutesFromDayStart>StopTime && Maximum<0) {// если максимум ещё не посчитан
  datetime ts=td+StartTime*60;// начало временного диапазона в секундах от 01.01.1970
  start= iBarShift(Symbol(),PERIOD_M1,ts,false);// смещение бара, которому принадлежит ts
  ts=td+StopTime*60;// конец временного диапазона в секундах от 01.01.1970
  count= iBarShift(Symbol(),PERIOD_M1,ts,false);// смещение бара, которому принадлежит ts
  count=start-count;// Сколко баров длится временной интервал
  Maximum=iHigh(Symbol(),PERIOD_M1,iHighest(Symbol(),PERIOD_M1,MODE_HIGH,count,start));//Находим максимум на заданном временном интервале
 }
 if(Maximum>0 && Flag) {
   signal = Maximum - Bid;    
   if (signal > 0.005 ) { // к примеру если ниже максимума на 12 пунктов, в этом случае откроем SELL 
      Opn_S = true;
      tickett= Opn_S;   
      if(tickett>=0) Flag=false;// Ордер открылся, сегодня больше не открываем.       
   }  
}
 
if(tickett>=0) 
    {
double stop = iHigh(Symbol(),Period(),0) - iHigh(Symbol(),Period(),1);
if (stop > 0.0012)
            {
             Cls_S=true;   
             tickett=-1;          
            }
      }

问题可能是什么?我尝试了我能想到的所有方法,但我不太擅长mql

我把专家顾问附在后面,不可能把所有的文字都放进去。

附加的文件:
svhrvrsa.mq4  14 kb