[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 161

 
出现了以下情况:策略测试器 没有关闭TakeProfit头寸。交易是在TF日进行的,我看了看亏损交易的较小的TF--价格下降/上升的幅度超过了触发止盈的要求,但交易没有关闭,当价格达到止损时,那么损失就固定了。我甚至尝试过可视化--价格刚刚通过TakeProfit,就这样了。而有时一切都很顺利,有时会出现这样的事情。就在昨天,一切都很好,但今天我运行测试器,得到的结果是完全没有性能。我试着重新安装终端--但没有帮助。我不确定我是否租用了不同的经纪公司。
 
beginner666999:
出现了以下情况:Strategy Tester没有通过TakeProfit关闭头寸。交易是在TF日进行的,我看了看亏损交易的小TF--价格下跌/上涨超过了触发止盈的要求水平,但交易没有关闭,当价格达到止损时,损失就固定了。我甚至尝试过可视化--价格刚刚通过TakeProfit,就这样了。而有时一切都很顺利,有时会出现这样的事情。就在昨天,一切都很好,但今天我运行测试器,得到的性能完全丧失。我试着重新安装终端--但没有帮助。我不确定我是否会使用另一家经纪公司。

这都是为了传播,是为了周末的增加。

它是这样的。

 
r772ra:

这都是为了传播,是为了周末的增加。

它是这样的。


谢谢你!我等着平日里去看看吧。
 
r772ra:

这都是为了传播,是为了周末的增加。

它是这样的。


你一定是个白痴--我在经纪人的网站上看了我的工具的点差,很惊讶--11个点!我的工具的点差 是多少?再次感谢!
 
然后是另一个问题,稍微偏离主题。为什么他们在周末会加大价差?毕竟,反正没有交易。
 
Konstebl:

请告知如何正确指定条件。 如果有一个未平仓的BUY订单,如果它处于盈亏平衡点,那么我们设置BUYSTOP。

static bool flag ;

如果(NewBar())

flag = true。

for(i=0;i<total;i++)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。

如果(OrderSymbol()==Symbol() && OrderMagicNumber() ==123)

{

如果(OrderType()==OP_BUY)

{

如果(OrderStopLoss()>OrderOpenPrice())

{

如果(Ask>m && frUP>0 && flag)

{

价格=归一化双倍数(frUP+(Ask-Bid)+30*Point,Digits)。

takeprofit = NormalizeDouble(price+tp*Point,Digits)。

ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,5,Bid-sl*Point,takeprofit, "Fractal",123,TimeCurrent()+72000,Blue)。

如果(ticket>0)

flag = false。

否则

Print("Error",GetLastError())。

}

}

}

}

}

不起作用!!!。


你有没有试过按照逻辑来放括号?因为到目前为止还没有。

所写的内容意味着至少有一个职位是开放的。否则它就不会打开任何新的。

 
Vinin:


你有没有试过按照逻辑来放大括号?因为到目前为止还没有。

所写的内容意味着至少有一个职位是开放的。否则,将不会有新的开张


那你怎么安排它们呢? 我又写了一点代码。

 if(NewBar())

     flag = true;    

          for(i=0;i<total;i++)

             {

             OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 

             if(OrderSymbol()==Symbol() && OrderMagicNumber()==123)

                {

                if(OrderType()==OP_BUY || OrderType()<=OP_BUYSTOP)

                   {

                   if(OrderStopLoss()>OrderOpenPrice())

                      {

                      if(Ask>m && frUP>0 && flag)

                         {                

                        price = NormalizeDouble(frUP+(Ask-Bid)+30*Point,Digits);

                        takeprofit = NormalizeDouble(price+tp*Point,Digits);

                        ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,5,Bid-sl*Point,takeprofit,"Fractal",123,TimeCurrent()+72000,Blue);

                       if(ticket>0)

                        flag = false;

                       else

                        Print("Ошибка ",GetLastError());

                      }

                   }

                }

             }

          }
По идее должно работать,но не хочет.
 
beginner666999:
然后是另一个问题,稍微偏离主题。为什么他们在周末会加大价差?反正他们不做交易。

不,不是在周末,我没有写对,价差停留在终端的最后一个报价上,来的时候是这样的

因此, 在白天关闭终端,星期五。而你在周末进行测试。

 
r772ra:

不,不是在周末,我没有写对,价差停留在终端的最后一个报价上,来的时候是这样的

因此,你在白天关闭终端,星期五。而你在周末进行测试。


明白了,谢谢!这样一来就更有意义了。
 
Konstebl:


那我该如何安排它们呢? 我加了一点代码。


好吧,一点点的逻辑

if(NewBar())
    flag = true;    
for(i=0;i<total;i++) {
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES); 
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==123) {
    if(OrderType()==OP_BUY || OrderType()<=OP_BUYSTOP) {
        if(OrderStopLoss()>OrderOpenPrice()) {
            if(Ask>m && frUP>0 && flag) {                
                price = NormalizeDouble(frUP+(Ask-Bid)+30*Point,Digits);
                takeprofit = NormalizeDouble(price+tp*Point,Digits);
                ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,5,Bid-sl*Point,takeprofit,"Fractal",123,TimeCurrent()+72000,Blue);
                if(ticket>0)
                    flag = false;
                else
                    Print("Ошибка ",GetLastError());
            }
        }
    }
}

          }

无论条件如何,循环都会被执行 if(NewBar())