[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 315

 
你知道策略测试器 对通过的次数是否有限制?我运行了测试器,在测试开始时的左下角栏上面是:0/1280(25706)。我数了一下,有25盎司--那是所有可能的组合的数量。但他完成测试时是:1088/1280(25706)。所以他只传了1088次球?前两个数字到底是什么意思?
此外,它的计算方式很奇怪......当他又增加了一个3个参数的标准时,25块并没有增加3倍,而是给了40公斤左右的东西。这是一个小故障还是我哪里错了?
 
AndrejFX:
你知道策略测试器对通过的次数是否有限制?我运行了测试器,在测试开始时的左下角栏上面是:0/1280(25706)。我数了数,有25个戈比--那是所有可能的组合的数量。但他完成测试时是:1088/1280(25706)。所以他只传了1088次球?前两个数字到底是什么意思?
此外,它的计算方式很奇怪......当他又增加了一个3个参数的标准时,25块并没有增加3倍,而是给了40公斤左右的东西。这是一个小故障还是我哪里错了?
阅读手册。个人认为那里很详细。
 

帮忙整理一下后面的代码!!。

应该在 "TrailingStop "的距离上,从以前的蜡烛图的高位或低位,拖曳已经打开的StopLosses。一旦专家顾问启动,它只在第一笔未平仓交易中使用订单。一旦止损被触发,下一笔交易被打开,止损订单就不会被追踪。如果我理解正确,这是因为变量"ORDER_SL"没有改变,改变订单的条件没有得到满足?如果是这样,为什么以及如何纠正?

下面是尾部的代码。

int ORDER=OrdersTotal();    
OrderSelect(ORDER,SELECT_BY_TICKET,MODE_TRADES);
int ORDER_Type=OrderType();
double ORDER_SL=OrderStopLoss();
double Point_High=iHigh(OrderSymbol(),0,2)-TrailingStop*Point;
double Point_Low=iLow(OrderSymbol(),0,2)+TrailingStop*Point;
            if (ORDER_Type==OP_BUY && ORDER_SL<Point_High){
                    OrderModify(OrderTicket(),OrderOpenPrice(),Point_High,OrderTakeProfit(),0,CLR_NONE);
                    while(!IsTradeAllowed()) Sleep(100);
            }
            if (ORDER_Type==OP_SELL && ORDER_SL>Point_Low){
                    OrderModify(OrderTicket(),OrderOpenPrice(),Point_Low,OrderTakeProfit(),0,CLR_NONE);
                    while(!IsTradeAllowed()) Sleep(100);
            }

以下是EA的全部内容。

附加的文件:
 

这个代码

int ORDER=OrdersTotal();    
OrderSelect(ORDER,SELECT_BY_TICKET,MODE_TRADES);

应该放在perls中。最有趣的是,它起作用了,但只是在第一个订单的测试器中。

 
Christoff:

帮忙解决拖尾问题!!

应该在 "TrailingStop "的距离内,从之前的蜡烛图的高点或低点的水平,拖曳已经打开的止损。启动后,专家顾问只在第一笔开仓交易中下单工作。一旦止损被触发,下一笔交易被打开,止损订单就不会被追踪。如果我理解正确,这是因为变量 "ORDER_SL "没有改变,改变订单的条件没有得到满足?如果是这样,为什么以及如何纠正?

这里是拖网代码。

以下是专家顾问的全部内容。

在你拖曳东西之前,你需要选择它。你首先需要循环浏览终端的所有未结头寸,选择那些由专家顾问打开的头寸。在循环的每次迭代中,如果选择了所需的顺序,就直接从循环中调用你的拖网。只有在这种情况下,专家顾问所开的所有头寸才会被拖曳。

大约如此。

void Trailing(string sy, int mn) 
{
   int      i, err, ORDER_Type, k=OrdersTotal();
   double   PointX, ORDER_SL, Point_High, Point_Low;
 
   if (sy=="0") sy=Symbol();
   int    dg=MarketInfo(sy, MODE_DIGITS);
   double pt=MarketInfo(sy, MODE_POINT);
   
   if(dg==5 || dg==3) PointX=pt*10;
   if(dg==4 || dg==2) PointX=pt;
   
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()>1)            continue;
         if (OrderMagicNumber()!=mn)   continue;
               
         ORDER_Type=OrderType();
         ORDER_SL=OrderStopLoss();
         Point_High=iHigh(OrderSymbol(),0,2)-TrailingStop*PointX;
         Point_Low=iLow(OrderSymbol(),0,2)+TrailingStop*PointX;
         if (ORDER_Type==OP_BUY)
            if (NormalizeDouble(Point_High-ORDER_SL,dg)>0) {
            OrderModify(OrderTicket(),OrderOpenPrice(),Point_High,OrderTakeProfit(),0,CLR_NONE);
            while(!IsTradeAllowed()) Sleep(100);
            }
         if (ORDER_Type==OP_SELL)
            if (NormalizeDouble(ORDER_SL-Point_Low,dg)>0) {
            OrderModify(OrderTicket(),OrderOpenPrice(),Point_Low,OrderTakeProfit(),0,CLR_NONE);
            while(!IsTradeAllowed()) Sleep(100);
            }
         }
      if (!OrderSelect(i, SELECT_BY_POS)) {
         err=GetLastError();
         Print("FUNC Trailing: Ошибка выбора ордера - ", err);
         break;
         }
      }
   return;
}

我没有看你的拖网代码,而是让它保持原样(尽管我也应该改变它--添加一个检查StopLevel是否被超过,或者也许是其他的东西),我只在你的拖网代码中添加了一个关于订单和正常化的循环,当比较双值 时,等等...一些有用的东西...如果你想了解它,你就会了解它 :)

ZS.我没有审查过代码,我是按原样写的,所以可能有错误。这只是一个例子。

现在,在你需要遍历位置的那个代码中,调用这个函数。

Trailing(Symbol(), Magic);
魔数 - 在EA中设置的魔数是一个唯一的整数,这样它就可以将自己的订单与另一个EA的订单或没有魔数的手动开仓订单区分开来。
如果我们在函数调用中留下Symbol(),我们的EA所站的符号的位置将被锁定。
另外,你可以用你想搜索的货币对头寸的名称来代替Symbol()。
 
请帮助我在一台电脑的MT4终端之间 以最快的方式交换数据。
 
trave:
请帮助我在一台电脑的MT4终端之间以最快的方式交换数据。

如果你需要复制交易,那么这里就是复制器。如果你只是交换数据,那么你需要制作一个dll
附加的文件:
kopirowshik.zip  465 kb
 
drknn:

如果你想复制交易,这里有复制器。如果你只是想交换数据,你必须制作一个dll

祝你节日快乐...:-)))
 
Vinin:

你不应该在这个论坛上发布偷来的东西。这是一条通往放逐的道路。

是在比喻的意义上,这只火鸡已经被我敲定。
 
Roman.:
祝你节日快乐...:-)))
弗拉基米尔,既然你已经发布了一个汇编,你肯定已经处理了这个问题。
你是否找到了一个现成的简单变体,即通过内存、Windows变量等将一个变量从终端转移到终端,而不是通过文件?
作为最后的变体,一个指标在一个终端上在线绘制 另一个终端的Close[0]线。在勾股图上,这种比较会显得非常清晰。