请帮助我 [已解决] - 页 3

 
mrluck1:
是的,先生,我只做过一次交易,但你的例子很好,它将是非常有用的,可以作为创建新易的基础。
bool trade_made = false;

void OnTick()
  {
   double up   = iIchimoku(NULL,5,9,26,52,3,0),
          down = iIchimoku(NULL,5,9,26,52,4,0);
   static bool was_above = true;
   bool is_above = (MathMax(up,down)< Bid);
   if(!trade_made && !was_above && is_above && open_orders()<1)
     {
      if(OrderSend(NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point)<0)
        {
         printf("OrderSend() failed. Error code: %i",GetLastError());    
        }
      else t rade_made=true;
     }
   was_above = is_above;
  }

int open_orders()
  {
   int count = 0;
   for(int i=OrdersTotal()-1; i>=0; i--) // good habit to count down
     {
      if(!OrderSelect(i,SELECT_BY_POS))  continue;  // select the order
      if(OrderSymbol() != _Symbol)       continue;  // optional check for same symbol
      if(OrderMagicNumber()!= magic_no)  continue;  // optional check for magic number
      if(OrderType() < 2)                count++;   // 0 == OP_BUY and 1 == OP_SELL
     }
   return(count);
  }
 
mrluck1:

马可:我试过你的新更新,但它没有做任何交易,我把你上次发布的方法,只是删除了第二个int,放在票据上。但在策略测试器上,第一笔交易从未进行,现在该怎么办?

它应该进行交易,因为。


     if (MathMax (up,down) < Bid )

    ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);


//+------------------------------------------------------------------+
//|                                                    One Order.mq4 |
//|      Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

bool order=0;int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(order==0)
     {
      double up=iIchimoku(NULL,5,9,26,52,3,0);
      double down=iIchimoku(NULL,5,9,26,52,4,0);
        {
         if(MathMax(up,down)<Bid)
           {
            ticket=OrderSend(NULL,0,0.01,Ask,3,Bid-150*Point,Bid+100*Point);
              {
               if(ticket>-1)
                 {
                  order=1;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+

我刚刚试过,它下了一个订单......


 

非常感谢 这正是我所需要的,我将永远感激不尽。

也感谢Marco先生的帮助。

 
mrluck1:

非常感谢 这正是我所需要的,我将永远感激不尽。

不客气。但你是否同意,答案很少像它看起来那么简单?这可能解释了这里的一些评论CODE帮助(紧急)
 
honest_knave:
不客气。但你是否同意,答案很少像看起来那么简单?这可能解释了这里的一些评论CODE Help(紧急)
我已经删除了那条评论,一个简单的EA对我来说是个问题,我什么都不知道,真的要说点什么。
 
mrluck1:
我已经删除了那条评论,一个简单的EA对我来说是个问题,我真的什么都不知道,不知道说什么。

嘿,我们都还在学习。而且你的心是在正确的地方。

我很高兴你解决了你的问题。

有很多方法可以做同样的事情...马可和我从不同的方向解决了这个问题,而这两种方法同样正确。

好运

 

是的,Marco vd Heijden 先生,它和honest_knave的代码一样,我根据你最后的代码又试了一次,效果很好,我会采纳这两个答案,并在这个脚本中使用你的,因为它和原来的想法更相似。

谢谢你的帮助

 
我相信,从你发布的代码来看,该EA不会再开出订单。除非你 EA从图表上移开,然后再重新连接(以初始化)。我想这就是目的所在?
 
Hairi Baba:
我相信,从你发布的代码来看,该EA不会再开出订单。除非你把EA从图表中删除,然后再重新连接(初始化)。我想这就是目的所在?

现在让我们希望他选择正确的方向 :)

我在某处读到一个人忘记了他还有一个未平仓的头寸,你猜发生了什么... $$$$$

 
Hairi Baba:
我相信,从你发布的代码来看,该EA不会再开出订单。除非你把EA从图表上移开,然后再重新连接(以初始化)。我猜这就是目的?
是的,这就是OP想要的。
原因: