[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 124

 
evillive:

嗯,好吧,或者这个...但我在自己身上运行了这个猫头鹰,一切都很好,没有任何地方 "消失",订单打开,总体上表现得像一个EA )

谢谢你,非常感谢你,这很有意思!这说明我的电脑出现了故障!
 
Dimka-novitsek:

谢谢你,非常感谢你,很有意思!因此,我的电脑出现了故障!
你有没有试过 "重启 "它?))
 
大家好!伙计们,有没有人在网上看到过,需要一个可以叠加在其他指标上的抛物线SAR 指标? 或者可以找谁来创建一个...预先感谢
 
smshev:
你有没有试过 "重启 "它?))

- 什么? 我很抱歉,我不明白。
 
Dimka-novitsek:

- 什么? 我很抱歉,我不明白。
该软件喜欢经常重启))。
 

下午))))我写了我的第一个EA,但结果是有问题的)))))))。 这个EA只放卖单,尽管买入条件非常简单,它似乎没有看到。

if (ZZ2< pp1 ) { OpenPosition ("", OP_BUY, Lots_New,SLB,TPB, mn); }

如果(pp1 < ZZ2) {OpenPosition("", OP_SELL, Lots_New, SLS,TPS, mn); }

如果有人能看一下这段代码,我将非常感激)))。

附加的文件:
 
PS:好吧,如果你想加入追踪止损和止盈,那么有追踪止损和止盈就好了。(我试着设置过)当SL或TP触发时,EA应该继续在TS中正常工作(通过随机应变的开仓和平仓指令,开仓指令应该只有一个)
提前感谢。

PS.如果你愿意,还可以加上追踪止损和零损失=)

附加的文件:
2.mq4  10 kb
 
Lisi4ka330:

下午好)))我写了我的第一个EA,但结果是有问题的)))))))。 这个EA只下卖单,尽管买入条件是最简单的,但它似乎没有看到。

if (ZZ2< pp1 ) { OpenPosition ("", OP_BUY, Lots_New,SLB,TPB, mn); }

如果(pp1 < ZZ2) {OpenPosition("", OP_SELL, Lots_New, SLS,TPS, mn); }

如果有人能看一下这段代码,我将非常感激)))。


粗略一看,一切正常......地段计算情况如何,是否通过了(我知道应该有一条日志信息)?试着用一个固定的开始。

一般来说,像这样检查交易条件的执行情况。

Print(DoubleToStr(pp1,Digits));
Print(DoubleToStr(ZZ2,Digits));

if (ZZ2< pp1 )
    {OpenPosition ("", OP_BUY, Lots_New,SLB ,TPB , mn);}

if (pp1 < ZZ2)
    {OpenPosition("", OP_SELL, Lots_New, SLS,TPS , mn);}
 
Lisi4ka330:

下午好 ))))我写了我的第一个EA,但结果是有问题的,)))))))这个EA只下卖单,尽管买入条件非常简单,但EA似乎没有看到。

if (ZZ2< pp1 ) { OpenPosition ("", OP_BUY, Lots_New,SLB,TPB, mn); }

如果(pp1 < ZZ2) {OpenPosition("", OP_SELL, Lots_New, SLS,TPS, mn); }

如果有人看一下代码,我将非常感激)))。


奇怪,从理论上讲,它不应该看到抢手的SELL,因为你用pa而不是pb。

double TPS=NormalizeDouble(pa-tp*po, Digits);//计算卖出的Tp
double SLS= NormalizeDouble(pa+sl*po, Digits);//计算卖出的SL

 

有这样一种重新计算的算法。

   int ic=IndicatorCounted();
   if(Bars-ic-1>1) {ic=reinit();}
   int limit=Bars-ic-1; //BarsPrev=Bars; // кол-во пересчетов
   if(History!=0 && limit>History) limit=History-1; // кол-во пересчетов по истории

   for(int i=limit; i>=1; i--) // цикл по непосчитанным и предпоследнему барам
     {
      int n;
      int iShift=i+Shift;
      
      if (i==0)
      Input[i]=iClose(Symb, Period(), iShift);
      else
      Input[i]=(iHigh(Symb, Period(), iShift)+iLow(Symb, Period(), iShift))/2;
       }

根据我的理解,它计算所有的小节,除了最后一个。

你能告诉我如何让它在i=0的时候重新计算最后一棒吗(在循环中已经有一个条件)?