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

 

晚上好。

请告诉我如何在交易周结束时增加关闭所有头寸和删除所有订单?

谢谢你!

 
Antonius:

晚上好。

请告诉我如何在交易周结束时增加关闭所有头寸和删除所有订单?

谢谢你!

写一个这样的脚本,然后在你想关闭和删除一切的时候把它扔到图表上。这就是全部...

不客气!

 
artmedia70:

写一个这样的脚本,然后在你想关闭和删除一切的时候把它扔到图表上。重点是...

求你了!



谢谢你:)澄清请求。

我们需要在EA中添加代码,在交易周结束时关闭所有订单和头寸。

能否请你写一下这段代码?

 
Antonius:


谢谢你:)澄清请求。

我们需要在EA中添加代码,在交易周结束时关闭所有订单和头寸。

能否请你写一下这段代码?

我可以做到这一点。没问题。你曾经自己做过什么吗?这个主题不是关于获得免费的东西,而是关于帮助那些试图为自己编码的人。
 
artmedia70:
我可以做到这一点。没问题。你曾经自己做过什么吗?这条线并不是为了免费获得一些东西,而是为了帮助那些正在尝试自己编码的人。


在https://book.mql4.com/ru/trading/orderclose,检查了它。

在谷歌上搜索,在论坛上搜索。没有找到。也许我的询问写错了。

我想我应该在新手主题中问一下。

 

我如何开处方?

当你运行该脚本时。

弹出一个窗口,有 "一般 "和 "输入参数 "选项卡。

我需要在输入参数中输入一个日期。

有没有可能当我运行脚本时,会弹出一个日期框,我输入日期,点击确定,一切都会正常?

还有,我能不能让脚本记住我最后输入的日期?

 
artmedia70:

确定停止器上最后关闭位置的函数有bool类型,而你试图从它那里返回double类型。相应地,它返回0或1。

我告诉过你,你应该把一个变量的引用传给它。

现在检查一下最后一个Buy,比如说。

像这样...


非常感谢你。
 
artmedia70:

确定停止器上最后关闭位置的函数有bool类型,而你正试图从它那里返回double类型。相应地,它返回0或1。

我在信中说,你应该在其中增加一个变量的引用传递。

现在检查一下最后一个Buy,比如说。

像这样...


按你说的做了一切。所有编译......,但功能不工作,当测试顾问..... 所有位置顾问打开0.1手。

double  Magic, Lot;

int start()
  {
        

  
 double Price=iOpen (Symbol (),0,0);
 

          
 int last_order_bar = 0;                                                                                                                        
 int ot = OrdersTotal();                                                                                                                        
                                                                                                                        
 if (ot>0) //если есть ордера в рынке                                                                                                                   
 {                                                                                                                      
   if (OrderSelect (ot-1,SELECT_BY_POS))                                                                                                                        
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL )                                                                                                                       
         last_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());                                                                                                             
 }                                                                                                                      
                                                                                                                        
 int last_hist_order_bar = 0;                                                                                                                   
 int oht = OrdersHistoryTotal();                                                                                                                        
                                                                                                                
 if (oht>0)                                                                                                                     
 {                                                                                                                      
   if (OrderSelect (oht-1,SELECT_BY_POS, MODE_HISTORY))                                                                                                                         
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL)                                                                                                                        
         last_hist_order_bar = iBarShift (Symbol (),0,OrderOpenTime ());
                                                                                                        
        }

                                                                                                        
if (ot==0)

 if (Bid ==Price)
//=============================================================== 
  
if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))

//============================================================
                                                                           // задавать минимальное значение лота я не стал,мне кажется для тестера это не обязательно
if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot))                        
{
Lot=Lot*2;
OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
else
{

Lot=0.1;        
OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
}
   return(0);
  }
//============================================================  
bool isCloseLastPosByStop(string sy, int op, int mn, double ll)       //у Вас перед названием формального  параметра  11 стоял знак &- я его убрал.
{
   double   pt;
   datetime t;                                                       //у вас тип переменной t был int - я сделал datetime
   int       dg, i, j=-1, k=OrdersHistoryTotal()-1;

   for (i=k; i>=0; i--) 
   {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
     {
         if (OrderMagicNumber()!=mn)   continue;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)        continue;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)           continue;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) 
         {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
      
   if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) 
   {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);      // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
      if (MathAbs(OrderClosePrice()-OrderStopLoss())< 0.5*pt) // Если закрыт по стопу
      { 
         ll=OrderLots();                              // записываем количество лотов в ордере, закрытом по стопу
         return(true);                                // возвращаем истину
         }
      }
      
   return(False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}

请告诉我我的错误是什么。

我不明白这一点--正如你正确地注意到的,该函数返回的是bool类型的值,但在函数调用中,该函数必须把bool类型的值放在其中。

你建议指定其他价值类型。

谢谢你。

 
solnce600:

我按你说的做了一切。一切都在编译......,但在测试EA时,该功能不起作用.....,EA的所有位置都开了0.1手。

你能告诉我我的错误是什么吗?

我不明白这一点--正如你正确注意到的,函数返回的是bool类型的值,但在函数调用中,函数应该输入bool类型的值

你是否建议指定其他类型的值。

谢谢你。


bool isCloseLastPosByStop(string sy, int op, int mn, double ll)       //у Вас перед названием формального  параметра  11 стоял знак &- я его убрал.

你为什么要删除它。如果你离开它,一切都会成功。

 
Vinin:

为什么要删除它。如果他们有,一切都会成功

我想知道.....,这个标志是什么意思....我想不出教科书上有什么关于它的内容。