[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 55

 
正在寻找一台UMPC用于我的日常工作,请你告诉我MT4是否能在这样的上网本上运行http://cgi.ebay.com/4-8-TOUCH-LCD-BenQ-S6-HSDPA-UMPC-3G-NETBOOK-XP-/190490113552?pt=Laptops_Nov05&hash=item2c5a187610#ht_15003wt_1139,因为太多照片,所以我提供了一个链接。
 
afirius:
正在寻找一台UMPC用于我的日常工作,你能告诉我MT4是否能在这个上网本上运行吗https://www.mql5.com/go?link=https://www.ebay.com/itm/4-8-TOUCH-LCD-BenQ-S6-HSDPA-UMPC-3G-NETBOOK-XP-/190490113552?hash=item2c5a187610&pt=Laptops_Nov05[hash]ht_15003wt_1139 图片太多,所以我提供了一个链接。

 
Sergstuddek:
你好。请写出相对于已开立(最后)订单的挂单(停止)的代码。


嗯,那是一个经典。:)

代码应该是这样的。

如果有一个开放的订单,我们计算它的设定价格。然后,我们应该在这个价格上增加一些距离(可以是负数)--我们得到了将设置挂单 的水平。然后我们检查是否没有挂单,如果与挂单的距离大于或等于最小允许水平,那么在这个水平上,我们放置挂单。这就是它。代码应该是这样的。

您的要求是否得到满足?

 
是否可以通过文本或其他文件将所需的优化参数输入MT4测试器?
 
Sergey_Rogozin:
是否可以用文本或其他文件将所需的优化参数输入MT4测试器?
在代码库中寻找一个自动优化器
 

熟悉这篇文章,试图运行自动优化器,但对我来说并不奏效。

我没有足够的知识。

我需要更简单的东西。

尽管如此,还是谢谢你。

 
drknn:


这是一个经典。:)

编程代码应该是这样的。

如果有一个未结订单,计算其设定价格。然后,我们应该在这个价格上加上一定的距离(可以是负数)--我们得到了设置挂单的水平。然后,我们检查是否没有挂单,如果与挂单的距离大于或等于最小允许水平,我们将挂单放在这个水平上。这就是它。代码应该是这样的。

满意吗?

+10好的钓竿...:)

现在有两种可能的发展--这个人将使用这个算法写代码,提出关于这个案例的问题,或者他将指出这不是一个代码,而是一个算法,等待一个现成的解决方案......:)

 
sergeev:

你需要一个悬而未决的补货/停货订单

还是你需要在现有订单中设置止损?


第一个选择:一个待定的bystop/sllestop订单。

请写一些像模板一样的基本代码,这样我就可以看一看,搞清楚。

 
drknn:


这是一个经典之作。:)

编程代码应该是这样的。

如果有一个未结订单,计算其设定价格。然后,我们应该在这个价格上加上一定的距离(可以是负数)--我们得到了设置挂单的水平。然后,我们检查是否没有挂单,如果与挂单的距离大于或等于最小允许水平,我们将挂单放在这个水平上。这就是它。代码应该是这样的。

您的要求是否得到满足?


有品位是好的,但仍有一个问题)))。

理论上,我理解它,但在实践中,我做不到。

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
// Суть советника в том что сначала он открывает первый ордер на покупку
// затем выставляет стопы в две стороны
// в одну сторону как продолжене уже открытого ордера
// в другую в два раза больше в случае разворота графика
// стопы выставляются по отношению к последнему открытому советником ордеру
// с каждым новым открытием нового отложеного ордера, все старые удаляються
// а ноые отложеные стопы уже открываются относительно нового открытого ордера.
#define MAGIC  20101012
extern double Lot=1;            // Размер лота
extern int TP=0;                // Тейкпрофит
extern int SL=0;                // СтопЛосс
extern int DS=0;                // Дистанция  для открытия ордера в противоположну сторону
int buys=0,sells=0;
int i=0;
//-----------------------------------------------------
void DeleteStopOrders()
{
  int res;
  for(int i=0;i<OrdersTotal();i++)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
    {
      if(OrderType()==OP_SELLSTOP)
        res=OrderDelete(OrderTicket());
      if(OrderType()==OP_BUYSTOP)
        res=OrderDelete(OrderTicket());
     }
  }
}
        
void OpenBuy()
    
   {
   int tickbuy2  =OrderSend(Symbol (), OP_BUY, Lot,  NormalizeDouble(Ask,Digits), 5, Ask-SL*Point,Ask+TP*Point, NULL, MAGIC, 0, Green); // покупка первого ордера при запуске советника
   }
//+------------------------------------------------------------------+
//| считаем количество открытых ордеров                              |
//+------------------------------------------------------------------+
int CalculateCurrentOrders1(string symbol)
{
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   return(buys+sells);   
}
//+------------------------------------------------------------------+
//| считаем количество отложеных ордеров                              |
//+------------------------------------------------------------------+
int CalculateCurrentOrders2(string symbol)
{
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUYSTOP)  buys++;
         if(OrderType()==OP_SELLSTOP) sells++;
        }
     }
//---- return orders volume
   return(buys+sells);   
}

int OpenStops()

{for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_BUY)   // Проверка на то что открытый ордер на покупку
int ticket;
double LotSize=OrderLots();                                                                                 // Размер лота открытого ордера
double OpenPrice=OrderOpenPrice();                                                                          // Цена открытия открытого ордера
ticket=OrderSend(Symbol(),OP_SELLSTOP,LotSize*2,OpenPrice-DS*Point,0,SL*Point,TP*Point,"",MAGIC,0,Red);            // Открытие отложки на продажу в противополжну сторону до открытого ордера   
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,OpenPrice+TP*Point,0,SL*Point,TP*Point,"",MAGIC,0,Blue);                  // Открытие отложки на покупку в сторону продолжения до открытого ордера

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_SELL)  // Проверка на то что открытый ордер на продажу
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,OpenPrice-TP*Point,0,SL*Point,TP*Point,"",MAGIC,0,Red);                  // Открытие отложки на покупку в сторону продолжения до открытого ордера
ticket=OrderSend(Symbol(),OP_BUYSTOP,LotSize*2,OpenPrice+DS*Point,0,SL*Point,TP*Point,"",MAGIC,0,Blue);            // Открытие отложки на покупку в противополжну сторону до открытого ордера
}
}
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
  if (CalculateCurrentOrders1(Symbol())==0)
   OpenBuy();
  if (CalculateCurrentOrders2(Symbol())<=1)
  DeleteStopOrders();
  if (CalculateCurrentOrders2(Symbol())<=1)
   OpenStops();
//----
   return(0);
我知道这是一个简单的EA,但我刚刚开始我的旅程)))),已经有了一个问题。
 

关于该指标的问题。

该指标是一个交叉指标。吸引了大量的箭头到一边,然后又有很多箭头到另一边。如何做到只抽到第一批的人。我已经按照代码中给出的方式进行了尝试,但当我切换框架时,它就会改变。

请告知如何正确操作。

 for(int i=limit-1;i>=0;i--)
   {      
         if ( s == 0 &&    условие продажи)
               {Продажа[i] = High[i]+point*Point;            
                s=1; b=0;}               
      
         if (b == 0 &&     условие покупки)
        
          
              {Покупка[i] = Low[i]-point*Point; 
               s=0; b=1;}
   }