[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 616

 
自然,你是对的。意思是说,你已经有了一个每条街只取一次读数的代码。
 
sllawa3:
我想你是对的......我也有疑虑......

这样,你就可以监控股权,以便在达到指定的股权利润百分比时,立即关闭所有头寸并删除订单。

//--------------------------------------------------------------
// Описание глобальных переменных советника
// ----------------- Трал эквити -------------
extern double  PercentEquityForClose=15;
double         Equ_OLD,
               Equ_NEW,
               EquPerc,
               Equ_Start;

// ---- Дальнейшее описание глобальных переменных советника

//==========================================================

int init()                             // Функция init
{
   Equ_OLD=AccountEquity();
   Equ_Start=Equ_OLD; 
   EquPerc=Equ_Start/100*PercentEquityForClose;
   
// ---- Дальнейший код функции ----

   return;                             // Выход из init() 
}

//==========================================================
// ---- В функции слежения за событиями ----
// ---- вызываемой из функции start ----

   Equ_NEW=AccountEquity();                              // С новым тиком запоминаем текущее значение эквити
   if (Equ_OLD!=Equ_NEW)                                 // Если новое значение не равно старому, то
         {
            if (Equ_NEW>=Equ_OLD+EquPerc)                // Если эквити увеличилось по отношению к своему прошлому значению на EquPerc процентов,
               {                                         
                  ClosePosFirstProfit(NULL, -1, -1);     // то закрываем все позиции
                  DeleteOrders(NULL, -1, -1);            // и удаляем все ордера
                  Equ_NEW=AccountEquity();               // Запоминаем текущее значение эквити
                  Equ_OLD=Equ_NEW;                       // и заносим его в "прошлое" значение для проверки на изменение на след. тике
               }
         }

我是在现场写的,所以可能有错误。
要跟踪每个柱状体的权益变化,只需检查是否有新的柱状体 出现,如果有,你应该执行这个代码片段。

   Equ_NEW=AccountEquity();                              // С новым тиком запоминаем текущее значение эквити
   if (Equ_OLD!=Equ_NEW)                                 // Если новое значение не равно старому, то
         {
            if (Equ_NEW>=Equ_OLD+EquPerc)                // Если эквити увеличилось по отношению к своему прошлому значению на EquPerc процентов,
               {                                         
                  ClosePosFirstProfit(NULL, -1, -1);     // то закрываем все позиции
                  DeleteOrders(NULL, -1, -1);            // и удаляем все ордера
                  Equ_NEW=AccountEquity();               // Запоминаем текущее значение эквити
                  Equ_OLD=Equ_NEW;                       // и заносим его в "прошлое" значение для проверки на изменение на след. тике
               }
         }

我认为它是这样的...

 
Roger:
自然,你是对的。意思是说,你已经有了一个代码,每条街只读一次。
不,我没有,但我在上面写了一些东西,以便在每次打勾 时检查股权。只要对新开的酒吧进行检查,如果是这样,那么就检查股权...我不认为这很难做到...
 
对股本从上升到下降的逆转感兴趣,只要股本高于平衡......以关闭任何开放......。
 
sllawa3:
我对权益从增加到减少的逆转感兴趣,只要权益高于平衡......要关闭所有开放的东西......

这里是定义一个新酒吧的函数。

//+------------------------------------------------------------------+
//|  возвращает признак появления нового бара для указанного периода |
//+------------------------------------------------------------------+
bool isNewBar(int timeFrame)
   {
   bool res=false;
   
   // массив содержит время открытия текущего (нулевого) бара
   // по 7 (семь) таймфреймам
   static datetime _sTime[7];  
   int i=6;
 
   switch (timeFrame) 
      {
      case 1  : i=0; break;
      case 5  : i=2; break;
      case 15 : i=3; break;
      case 30 : i=4; break;
      case 60 : i=5; break;
      case 240: break;
      case 1440:break;
      default:  timeFrame = 1440;
      }
//----
   if (_sTime[i]==0 || _sTime[i]!=iTime(Symbol(),timeFrame,0))
      {
      _sTime[i] = iTime(Symbol(),timeFrame,0);
      res=true;
      }
      
//----
   return(res);   
   }
   

...对股权从上升到下降的逆转感兴趣,只要股权高于平衡......关闭任何开放的东西......。

然后,我们需要在每次打勾 时检查股权。毕竟,如果你在ticks上工作,例如,在下一次股权检查前一小时,股权可能会失去价值......。

因此,我们不应该比较股权的1%的增加,而是比较它相对于前一个tick的状态的增加或减少,记录在Equ-OLD 变量中,与Equ_NEW 中的当前值

 
sllawa3:
对股本从上升到下降的逆转感兴趣,只要股本高于平衡点......关闭一切开放......

像这样的地方。

   Equ_NEW=AccountEquity();                              // С новым тиком запоминаем текущее значение эквити
   if (Equ_OLD!=Equ_NEW)                                 // Если новое значение не равно старому, то
         {
            if (NormalizeDouble(Equ_NEW-Equ_OLD,8)<0)    // Если эквити уменьшилось по отношению к своему прошлому значению,
               {                                         
                  ClosePosFirstProfit(NULL, -1, -1);     // то закрываем все позиции
                  DeleteOrders(NULL, -1, -1);            // и удаляем все ордера.
                  Equ_NEW=AccountEquity();               // Запоминаем текущее значение эквити
                  Equ_OLD=Equ_NEW;                       // и заносим его в "прошлое" значение для проверки на изменение на след. тике
               }
         }

// (NormalizeDouble(Equ_NEW-Equ_OLD,8)<0) - возможно здесь нужно сравнивать не с нулём, а с каким-то числом, 
                                         // а то может в последующем и не дать увеличиться балансу, 
                                         // постоянно закрывая вновь открываемые позиции (они ведь требуют залога)

然而,这只是需要思考的信息,不是现成的代码...

 
drknn:

当然。只是它不叫止损,叫挂单。打开一个终端。在里面按F1。在出现的窗口中,打开内容-贸易-订单类型。

)))) 谢谢你,但在资金混乱/不习惯以买卖代替交易的情况下,当有些事情被混淆时,不要羞于提出一个愚蠢的问题来消除疑虑。)))
 

帮助.经销商有五个小数位.iOpen(NULL,0,n)函数只给出四个小数位(读数是通过打印得到的).如何解决这个问题。

 
pips500:

帮助.经销商有五个小数位.iOpen(NULL,0,n)函数只给出四个小数位(读数是通过打印得到的).我如何解决这个问题.提前谢谢你.

Print()四舍五入到4位数,以正确地输出到控制台的类型为double(它返回iOpen() 5位小数,在这种情况下),你应该使用DoubleToStr()函数

string DoubleToStr(double value,int digits)
将一个数字值转换为一个包含指定精度格式的数字字符表示的文本字符串

参数。

value - Величина с плавающей точкой.

digits - Формат точности, число цифр после десятичной точки (0-8).

 
sllawa3:
我对股权反转感兴趣,从上升到下降,只要股权在余额之上......关闭所有开放......。

这里有一个关于如何工作的例子...我特意在每一个新柱子上做了一个开仓动作...因此,我们这里有 "OC杀手"...:)


附带的测试报告,其中没有限制器和在每个tick上开仓 - 巨大的百分比...而且没有缩水 :)很遗憾,没有人愿意让你这样工作......。

以下是报告的图片。


我通过这些 "突袭 "赚了很多钱,几乎没有缩水。 我甚至没有设法去接管(你可以在上面看到它们)。


附加的文件:
原因: