新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1552

 
законопослушный гражданин:

猫头鹰应该根据他们的算法来开立交易

如果停止,那么下一笔交易就会有一个马丁,以此类推,直到我指定的乘数(函数-OrdersClose = .....;)

此外,如果猫头鹰与终端一起被禁用,只需按下"自动交易 "按钮 和另一个猫头鹰,那么下一次交易将从起始手数开始,而不是从上一次被马丁格尔增加的手数。

如果能给它附上一个时间表,那就更好了,但这个想法我也是刚刚才想到。

例如:周一10:00启动,开始抽签,然后在白天取得一些结果后关闭,周二早上10:00再次启动,再次开始抽签。

一切。

如何将这个问题处理到底?

 
законопослушный гражданин:

怎样才能把这个问题搞清楚呢?

回答你回答

但你消失了,然后你又收到同样的问题。

 
MakarFX:

回答你回答

但你消失了,然后你又收到同样的问题。

你告诉我创建一个全局变量,我试了一下,但我有一个问题

我对这个问题还不是很了解,我已经有了一个日期时间OpenTime;--我应该用一个日期时间Start 来代替它,还是再加上一个?

"然后如果以后没有开/平仓的订单,"开始 "Lots=Lot;"- 完全不清楚指的是哪里?

然后你要求简单描述一下猫头鹰的逻辑,我想从它那里得到什么。

你的问题是如何在关机时自动重置批次,尚未得到回答。

 
законопослушный гражданин:

你告诉我创建一个全局变量,我试了一下,但我有一个问题

我对这个问题还不是很了解,我已经有了数据时间OpenTime;--我应该用数据时间Start 代替它,还是再加上它?

"然后如果以后没有开/平仓的订单,"开始 "Lots=Lot;"- 完全不清楚指的是哪里?

然后你让我简单描述一下猫头鹰的逻辑,我想从它身上得到什么。

当我问及如何使关机时的自动批量重置时,我没有得到答案。

当我要求描述EA的逻辑时,我并不是指遇到的问题,而是指一般的行动

例如:

如果有信号,我们就建立一个订单

如果订单以盈利收盘,我们将等待新的信号。

如果订单以亏损结束,则增加手数并等待新的信号。


我不需要你的策略,我只需要了解EA应该做什么。

 
законопослушный гражданин:

你告诉我创建一个全局变量,我试了一下,但我有一个问题

我对这个问题还不是很了解,我已经有了数据时间OpenTime;--我应该用数据时间Start 代替它,还是再加上它?

"然后如果以后没有开/平仓的订单,"开始 "Lots=Lot;"- 完全不清楚指的是哪里?

然后你让我简单描述一下猫头鹰的逻辑,我想从它身上得到什么。

我的问题没有得到答案,如何在关机时进行自动批量重置。

这里有一个函数,供初学者参考。

//+----------------------------------------------------------------------------+
//|  Размер лота/профита и время последней закрытой позиции                    |
//|  1 - возвращает размер лота                                                |
//|  2 - возвращает размер профита с учетом комиссии и свопа                   |
//|  3 - возвращает время закрытия ордера                                      |
//+----------------------------------------------------------------------------+
double GetInfoLastPos(int a=1)
  {
   datetime t=0;
   double result=0,l=0,p=0;
   int i=OrdersHistoryTotal();

   for(int pos=0; pos<i; pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if((OrderSymbol()==_Symbol)&&(OrderMagicNumber()==Magic))
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(t<OrderCloseTime()) {t=OrderCloseTime(); l=OrderLots(); p=OrderProfit()+OrderCommission()+OrderSwap();}
              }
           }
        }
     }
   if(a==1) {result=l;} else
   if(a==2) {result=p;} else
   if(a==3) {result=(double)t;}
   else     {result=0;}
   return(result);
  }

如果一个订单处于亏损状态

   if(GetInfoLastPos(2)<0)
     {Lots=NormalizeDouble(GetInfoLastPos(1)*K_Martin,DigitsLot);}
   else 
     {Lots=NormalizeDouble(Lot,DigitsLot);}
 

关于

datetime Start;

int OnInit()
{
   Start=TimeCurrent();
.....................
}
void OnTick()
{
   if (!IsTradeAllowed()) 
   {
      DrawLABEL("Торговля",0,0,0,Red,"Торговля запрещена");
      Start=TimeCurrent();
      return;
   } 
.....................
}

如果最后关闭订单的时间小于顾问的开始时间

   if(GetInfoLastPos(3)<Start)
     {Lots=NormalizeDouble(Lot,DigitsLot);}
 
MakarFX:

当我要求描述EA的逻辑时,我不是指遇到的问题,而是指一般的行动

例如:

如果有信号,我们就建立一个订单

如果订单以盈利收盘,我们将等待新的信号。

如果订单以亏损结束,则增加手数并等待新的信号。


我不需要你的策略,我只需要了解EA应该做什么。

如果有一个信号,那么我们就用第一手订单开仓

如果订单以盈利收盘,我们将等待新的信号。

如果订单以亏损结束,则增加手数并等待新的信号。

如果利润达到XXXX(存款货币),顾问将关闭所有交易,并将手数重置为初始手数。

如果损失达到yuu(存款货币),顾问将关闭所有交易,并手数重置为 起始手数

如果顾问被关闭,然后又被打开- 如果有信号,我们以起始手数开立订单

对吗?

 
законопослушный гражданин:

如果有信号,我们就开一个有起始手数的订单

如果订单以盈利收盘,我们等待新的信号

如果订单以亏损收盘,则增加手数并等待新的信号。

如果利润达到XXXX(存款货币),顾问将关闭所有交易,并将手数重置为初始手数。

如果损失达到yuu(存款货币),顾问将关闭所有交易,并手数重置为 起始手数

如果顾问被关闭,然后又被重新打开- 如果有信号,我们以起始手数开立订单

像这样?

是的,像这样。

如果EA被禁用,然后又被启用,并且有一个未结订单,怎么办?

 
MakarFX:

是的,它是。

如果EA被关闭,然后再打开,有一个开放的订单,怎么办?

如果EA被关闭,那么在关闭之前,它将关闭所有未结订单,不管它们是盈利还是亏损。

当猫头鹰再次开机时,"空白区域",即起始地段,将被关闭。

给予开盘信号的指标,在例子中是RSI,但我假设在不同指标上测试三个不同的猫头鹰。

因此,如果我有上述逻辑的示例代码,我希望我能够自己重做其他EA的代码,它们是开源的,可以免费使用。

 
законопослушный гражданин:

如果猫头鹰被关闭,那么在它们被关闭之前,它们会关闭所有未结订单,无论它们是盈利还是亏损。

给出开仓信号的指标是RSI,但我认为它已经被清除了。

给予开盘信号的指标,在例子中是RSI,但我假设在不同指标上测试三个不同的猫头鹰。

因此,如果我有上述逻辑的示例代码,我希望我能够自己重做其他EA的代码,我希望它们是开源的,可以免费使用。

和owl.turn off when you change timeframe, communication problems, and 100500 and one more reason...

EA必须重新启动,因为它是EA的自然本质。

原因: