[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 302

[删除]  
好了,伙计们,非常感谢你们,非常有帮助,对不起,我的 "胆量")。
 
Parn25:

大家帮帮我吧!!!。

我正试图开发一个基于上午通道策略的专家顾问。其本质是这样的:在6:01对欧元兑英镑确定从0点到早上6点的价格运动通道。 我们设置两个挂单,如果被触发的挂单被止损器关闭,我们就开一个相反方向的订单。正是该战略的第二部分不起作用。也就是说,如果一个止损点已经触发,我们就不能在相反的方向上开立一个订单。

你需要马上把停顿下来!它将自动触发它。

我在垃圾桶里发现了这个,也许它能派上用场。

void OrderCloseAll(){
   for (int i=0;i<OrdersTotal();i++)
     if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      if(OrderType()==OP_BUY)
       OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, CLR_NONE);
      else
      if(OrderType() == OP_SELL)
       OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, CLR_NONE);
}

void OrderDeleteAll(int lots){
     for (int i=0;i<OrdersTotal();i++)
         if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         if (OrderType()>1&&OrderType()<6)
         if(OrderLots()==lots){
          OrderDelete(OrderTicket());
          i=0;
         }
}
 //----------------------------------------------------
// покупка
void OpenBuyLIMIT(double lot, double price){
   double   SL = NormalizeDouble(price,Digits) - Loss*Point;
   double TP = NormalizeDouble(price,Digits) + Target*Point-MarketInfo(Symbol(),MODE_SPREAD)*Point;
    OrderSend(Symbol(), OP_BUYLIMIT, lot,  NormalizeDouble(price,Digits), Slippage, SL, TP, NULL, STUPID, 0, Blue);
}
 //----------------------------------------------------
// продажа
void OpenSellLIMIT(double lot, double price){
   double   SL = NormalizeDouble(price,Digits) + Loss*Point;
   double TP = NormalizeDouble(price,Digits) - Target*Point+MarketInfo(Symbol(),MODE_SPREAD)*Point;
   OrderSend(Symbol(), OP_SELLLIMIT, lot,  NormalizeDouble(price,Digits), Slippage,  SL, TP, NULL, STUPID, 0, Red);
}
 //----------------------------------------------------
// покупка
void OpenBuySTOP(double lot, double price){
   double   SL = NormalizeDouble(price,Digits) - Loss*Point;
   double TP = NormalizeDouble(price,Digits) + Target*Point-MarketInfo(Symbol(),MODE_SPREAD)*Point;
   OrderSend(Symbol(), OP_BUYSTOP, lot,  NormalizeDouble(price,Digits), Slippage, SL, TP, NULL, STUPID, 0, Blue);
}
 //----------------------------------------------------
// продажа
void OpenSellSTOP(double lot, double price){
  double   SL = NormalizeDouble(price,Digits) + Loss*Point;
  double TP = NormalizeDouble(price,Digits) - Target*Point+MarketInfo(Symbol(),MODE_SPREAD)*Point;
   OrderSend(Symbol(), OP_SELLSTOP, lot,  NormalizeDouble(price,Digits), Slippage,  SL, TP, NULL, STUPID, 0, Red);
}
附加的文件:
 
Parn25:

伙计们,帮我一下吧!!!。

我正试图用早间通道策略编写一个EA。其本质是这样的:在6:01,在EURGBP货币对上,我们确定从0点到早上6点的价格运动通道。 我们设置两个挂单,如果被触发的挂单被止损器关闭,我们就开一个相反方向的订单。正是该战略的第二部分不起作用。也就是说,如果一个止损点已经触发,我们就不能在相反的方向上开立一个订单。
有挂单的例子大约如下。
附加的文件:
[Deleted]  
costy_:
与钟摆有关的例子是这样的。
好的,谢谢,我将试一试!!!。
 

你好。

今天是周末,所以我只有视觉测试器在工作 :) 我在策略测试器中启动了卸载指标值到文件的脚本,但它是从当前的真实日期(10月28日23:55)卸载的。

如何将视觉测试器的最后一根柱子的值(时间)转移到脚本中?

int start =iBarShift(NULL,0,Time[2200+EndB-1]);
int end   =iBarShift(NULL,0,Time[EndB]);

如何在脚本中传递和计算EndB--测试器中的最后一根柱子的值?

P.S. 作为最后的手段,我将把所有的脚本代码放在专家顾问中,等等。

[删除]  

下午好!

我正在学习课本,如果我可以问一个关于学习材料的问题。如果有一个单独的主题来讨论这些问题,我将感谢你的链接。

我正在研究ROC指标(代码在附件中)。

如果我理解正确的话,指标的逻辑是这样的。

在当前的图形中,参考MA被取走,从它那里画出速度变化的线V。

进一步计算下一个(更大的TF)的MA,但不显示;下一行V是由它计算的。

下一个时间框架也是如此。

问题:我不明白所给的记录

extern int Bars_V =13; // 用于计算速度的条数
指标代码的解释说,速度是以2条的差值计算的。

还有更多.....

我在MT4中加载了这个指标代码,在H4中, 没有在当前条形图上结束,而是根据历史记录在9-10天前结束。

在其他时间框架内,它是可以的。为什么会这样呢?

提前感谢您的帮助,Regards Olga

附加的文件:
my_roc.mq4  8 kb
 

日安!

所有未结头寸 必须在指定的时间间隔后关闭,也就是说,未结头寸的寿命必须与所选择的间隔相对应。

问题。除了 OrderOpenTime(),还有其他的解决方案吗

 
Zar:

你好。

今天是周末,这意味着只有视觉测试器在工作 :) 我在测试器中启动脚本,将指标值卸载到一个文件中,它从当前的真实日期(10月28日23:55)卸载。

如何将视觉测试器的最后一根柱子的值(时间)转移到脚本中?

如何在脚本中传递和计算EndB--测试器中的最后一根柱子的值?

P.S. 作为最后的手段,我将把所有的脚本代码放在专家顾问中,等等。

脚本不会那么容易找到测试者的时间(不过指标会),你可以把它附加到测试.EA的开头。

int start()
{
GlobalVariableSet( "Time_test", Time[0]) ;
.....................

并在脚本中

datetime time_start=GlobalVariableGet( "Time_test");

迅速和可靠地...

 
Operr:

日安!

所有未结头寸必须在指定的时间间隔后关闭,也就是说,未结头寸的寿命必须与所选择的间隔相对应。

问题。除了 OrderOpenTime(),还有其他的解决方案吗

有很多选择,例如,我们可以把开放时间写进文件,但滚动浏览开放订单并比较剩余时间会更容易。

一般来说,重新措辞...对于每个单独的头寸,"所有未结头寸 必须在规定的时间间隔 后关闭"(我是这样理解这个问题的)。

 
LOA:

下午好!

我正在学习课本,如果我可以问一个关于学习材料的问题。如果有一个单独的主题来讨论这些问题,我将感谢你的链接。

我正在研究ROC指标(代码在附件中)。

如果我理解正确的话,指标的逻辑是这样的。

在当前的图形中,参考MA被取走,从它那里画出速度变化的线V。

进一步计算下一个(更大的TF)的MA,但不显示;下一行V是由它计算的。

下一个时间框架也是如此。

问题:我不明白这个记录

extern int Bars_V =13; // 用于 计算速度的小节数目
指标代码的解释指出,速度被计算为2个小节的数值之差。

还有更多.....

我在MT4中加载了这个指标代码,在H4上,它不在当前条上,而是根据历史记录,大约在9-10天之前。

在其他时间段,一切都很好。为什么会这样呢?

我非常感谢您事先的帮助。

"更大的TF" - 不,同样的MA,但数据的获取有一个偏移Sh_1 re Sh_1=Bars_V; // 测量速度的周期(条)。

"下一个时间段类似" - 不,在开始时有一个开关(对于每个时间段的系数是不同的K2, K3)。

    switch(Period())                 // Расчёт коэффициентов для..
     {                             // .. различных ТФ
      case     1: K2=5;K3=15; break;// Таймфрейм М1
      case     5: K2=3;K3= 6; break;// Таймфрейм М5
      case    15: K2=2;K3= 4; break;// Таймфрейм М15
      case    30: K2=2;K3= 8; break;// Таймфрейм М30
....
Period_MA_2 =K2*Period_MA_1;   // Расчётн.период МА для ближ. ТФ
Period_MA_3 =K3*Period_MA_1;   // Расчётн.период МА для след. ТФ

定义"计算下一个TF的MA周期"是不正确的,错误总是存在于教科书中(尤其是 "故事 "非常像)。

"问题:我不理解以下条目

extern int Bars_V =13; // 用于速度计算的条数" 通过代码Bars_V进一步搜索。

   Sh_1=Bars_V;                   // Период измерен скорости (баров)

那么什么是Sh_1,这个值是一个偏移量MA 1速度线,等等。

// Предназначен для использования в качестве примера в учебнике MQL4.
不是一个好的例子,从标准指标中读出更简单的东西...