KimIV的有用功能 - 页 87

 
keekkenen писал(а)>>

不,这行不通......一个订单--一个手数,如果你开了一个有3个手数的订单,那么你不能按照你的方式分割手数--先是1,然后是1,然后是1--订单关闭整个手数,也就是说,订单关闭时的手数与开仓时相同,你不能分次关闭订单......

你弄错了,我有一个trall,它在部分地区关闭了很多。

 

当然,没有新的订单?

 
keekkenen 17.07.2009 15:48
hope писал(а)>> 不一样。三分之一的手被关闭(根据其中一个条件--比方说价格达到+150点)。第二个三分之一将关闭,比如说,当从开盘起+300点,等等。

不,不是这样的......一个订单--一个手数,如果你开了一个有3个手数的订单,那么你不能以任何方式分割手数--先是1个,然后是1个,再是1个--订单关闭整个手数,也就是说,订单关闭的手数是它开的,你不能分次关闭订单......

...........................

"....,不能分割很多......" - 为什么?从技术上讲,很早以前就已经实现了,由于Roger和KimIV在第85页上的发言,避免了131个规范化手数的错误。此外,"......一个订单,一个手,如果你开了一个有3个手的订单,那么你就不能按照你的意愿分割:先是1,然后是1...... "的说法是不正确的:一个订单,以及一个手,由数量组成:0.03,0.3,3......并悄悄地按部分关闭:0.01、0.1、1......对吗?

 

我最后一个请求的重点是:是否有可能在不使用数组的情况下关闭所有头寸,而是使用标准计算并将其相加,例如

   BuyTotalOp=0;                                // Количество Buy ордеров
   SellTotalOp=0;                               // Количество Sell ордеров
   for (int i=1; i<=OrdersTotal(); i++)         // Цикл перебора ордер
      {
      if (OrderSelect( i-1, SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!= Symb)continue;      // Не наш фин. инструм
         if (OrderType()>1)                     // Попался отложенный
           {
            Alert("Обнаружен отложенный ордер. Эксперт не работает.");
            return;                             // Выход из start()
           }
         if (OrderType()==OP_BUY)
           {
            BuyTotalOp++;                         // Счётчик ордеров Buy

我只是有一种感觉,就像一艘在大海上航行的疲惫的船,希望有一座灯塔告诉我,是否有必要朝着这个方向航行,或者转过身去尝试另一条路......。

伊戈尔--我们是在白白糟蹋你的分支机构吗?

 

你可以一次关闭所有的一对,但不同的一对,例如:。

1,2,1,2,2,1,2总重叠量 1-2-1+2+2+1+2=3手

综上所述,我们得到了买入夏季3手,并设置了这个量的计数器卖出3手

然后我们关闭bloze bi。

但要回答这个问题:是否有可能关闭所有头寸?

是的,这是有可能的,一个接一个,有了脚本就很快了,Aap!

脚本本身或关闭功能已经不止一次发布...

而通过设置,你可以一次性和按标准关闭,例如。

- 通过一个特定的符号

- 只买不卖

- 唯利是图

相应地,各种标准的组合是可能的...

 

请在 你喜欢的 任何 条件下帮助关闭订单,它就是不起作用。

预先谢谢你

附加的文件:
help.rar  7 kb
 

将涵盖一切!!。

void CloseAll() 
{ 
   for (int i=OrdersTotal()-1; i>=0; i--) 
      { 
      if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)==false) break; 
      if (OrderType()==OP_BUY      ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),100); 
      if (OrderType()==OP_SELL     ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),100); 
      if (OrderType()==OP_BUYSTOP  ) OrderDelete(OrderTicket()); 
      if (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket()); 
      if (OrderType()==OP_BUYLIMIT ) OrderDelete(OrderTicket()); 
      if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket()); 
      }  
}

将只关闭开放的姿势。

void CloseAll2() 
{ 
   for (int i=OrdersTotal()-1; i>=0; i--) 
      { 
      if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)==false) break; 
      if (OrderType()==OP_BUY      ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),100); 
      if (OrderType()==OP_SELL     ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),100); 
      } 
}

呼叫实例。

// Скрипт. Закрыть все ордера.mq4 -----------------------------------
#include <WinUser32.mqh> 

void start() 
   { 
   if(MessageBox("Закрыть (удалить) все ордера?",
   "Скрипт", MB_YESNO| MB_ICONQUESTION)!= IDYES) return; 
   CloseAll(); 
   } 

完整地关闭脚本。

// Скрипт. Закрыть все.mq4 -----------------------------------
#property copyright "herurg@bk.ru" 
#include <WinUser32.mqh> 

void start() 
   { 
   if(MessageBox("Закрыть (удалить) все ордера?",
   "Скрипт", MB_YESNO| MB_ICONQUESTION)!= IDYES) return; 
   CloseAll(); 
   } 

void CloseAll() 
{ 
   for (int i=OrdersTotal()-1; i>=0; i--) 
      { 
      if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)==false) break; 
      if (OrderType()==OP_BUY      ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),100); 
      if (OrderType()==OP_SELL     ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),100); 
      if (OrderType()==OP_BUYSTOP  ) OrderDelete(OrderTicket()); 
      if (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket()); 
      if (OrderType()==OP_BUYLIMIT ) OrderDelete(OrderTicket()); 
      if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket()); 
      }  
}
 

金你是最棒的。我向你脱帽致敬。

我研究了你所有的功能,但有一个小插曲,或者说是坎坷。现在,当我写函数时,我是从我的大脑中写出来的,但你的函数是在我的脑子里:-)。

从我的编程生涯一开始,我就研究了你的许多功能。

谢谢你。

 
gince >> :

请帮助我在 你喜欢的 任何条件下关闭一个订单,它就是不工作。

预先感谢

解释

任何关闭订单的策略都不重要 请帮助使用Kim的函数关闭订单


int start()
{
  //----
  //Print (ExpertName);
  if(Bars<20) return(0);
  if ( CheckNevBar)
  if (! NevBar()) return(0);
   
  TradesInThisSymbol = ExistPositions( sy);
  if( TradesInThisSymbol > 0) return(0);
   
  if(AccountFreeMargin() < MarginMin) 
  {
  //Print("Not enough money to trade Strategy:", ExpertName);
  return(0);
  }
  sy=Symbol();
  Lots = GetSizeLot( sy, LotsWayChoice, LotsPercent, LotsDeltaDepo, LotsDepoForOne, LotsMax);
   
   
  if ( CheckForOpen_Sell())
  OpenPosition( sy, OP_SELL, Lots);           // Тут  работает
  if ( CheckForOpen_Buy())
  OpenPosition( sy, OP_BUY, Lots);            // Тут  работает
  
  if( CheckForClose_Buy())
  ClosePositions( sy, OP_BUY);                 // Тут  у меня что то неработает
  if( CheckForClose_Sell())  
  ClosePositions( sy, OP_SELL);               // Тут  у меня что то неработает
  
  //----
  return(0);
}

//------------------------

bool CheckForClose_Buy()
  {
  Indicat_Var();
  if ( ExistPositions( sy, OP_BUY, MagicNumber))
  {
  if( VininI_fast_trend == -1)return(true);   // Тут любое условие на закрытие
  //if(BB_MACD_2 > 0)return(true);           // Тут любое условие на закрытие
  else
  return(false);
  }  
  }
//------------------------
bool CheckForClose_Sell()
  {
  Indicat_Var();
  if ( NumberOfPositions( sy, OP_SELL, MagicNumber) >0)
  {
  if( VininI_fast_trend == 1)return(true);         // Тут любое условие на закрытие
  //if(BB_MACD_1 > 0)                             // Тут любое условие на закрытие
  //return(true);
  else
  return(false);  
  }
  }
 
这里有一些不工作的地方,这意味着它没有关闭。 没有错误。
原因: