任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 811

 

在这里,我们需要放置挂单,并计算其相对于前一栏收盘价的价格。BUYSTOP被放置,而SELLSTOP返回错误130。这段代码中是否有错误?或者在另一个函数中。

空白 SetOrders() {

double ldStop=0, ldTake=0。
int spr=MarketInfo(Symbol(), MODE_SPREAD)。
double PredBar=iClose(NULL,PERIOD_M5,1);
double pAsk=PredBar+(DistanceSet+spr)*Point;
double pBid=PredBar-(DistanceSet+spr)*Point。

如果(!ExistOrder(1)){
如果(StopLoss!=0) ldStop=pAsk-StopLoss*Point;
如果(TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1)。
}
如果(!ExistOrder(2)){
如果(StopLoss!=0) ldStop=PredBar+(StopLoss*Point);
如果(TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2)。
}
}
 
Pomid:

在这里,我们需要放置挂单,并计算其相对于前一栏收盘价的价格。BUYSTOP被放置,而SELLSTOP返回错误130。这段代码中是否有错误?或者在另一个函数中。

void SetOrders() {

  double ldStop=0, ldTake=0;
  int    spr=MarketInfo(Symbol(), MODE_SPREAD);
  double PredBar=iClose(NULL,PERIOD_M5,1);
  double pAsk=PredBar+(DistanceSet+spr)*Point;
  double pBid=PredBar-(DistanceSet+spr)*Point;

  if (!ExistOrder(1)) {
    if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
    if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
    SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1);
  }
  if (!ExistOrder(2)) {
    if (StopLoss!=0) ldStop=PredBar+(StopLoss*Point);
    if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
    SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2);
  }
}

你为什么不称呼作者呢?他还活着,而且还很年轻,没有老!坐标就在每个函数上方的代码中!每个人都知道他并尊重他!

并学习如何像这样插入代码,用SRC!

void SetOrders() {

  double ldStop=0, ldTake=0;
  int    spr=MarketInfo(Symbol(), MODE_SPREAD);
  double PredBar=iClose(NULL,PERIOD_M5,1);
  double pAsk=PredBar+(DistanceSet+spr)*Point;
  double pBid=PredBar-(DistanceSet+spr)*Point;

  if (!ExistOrder(1)) {
    if (StopLoss!=0) ldStop=pAsk-StopLoss*Point;
    if (TakeProfit!=0) ldTake=pAsk+TakeProfit*Point;
    SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake, 1);
  }
  if (!ExistOrder(2)) {
    if (StopLoss!=0) ldStop=PredBar+(StopLoss*Point);
    if (TakeProfit!=0) ldTake=pBid-TakeProfit*Point;
    SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake, 2);
  }
}

你在不了解PredBar的情况下乱用它,结果就是这样!先学好数学!

 
晚上好,请告诉我如何解决新版本中指标不工作的问题。编译时出现错误"TotalOrders"--非法切换表达式类型 (代码 中突出显示了该错误 问候,亚历山大。
 for (i=0; i<k; i++)
   {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
    {
      if ((OrderSymbol()==Symb) && (OrderType()==op))
        {
            ko++;
            TotalOrders[ChartListPosition+1][ko][1]=NormalizeDouble(OrderOpenPrice(),dig);
            TotalOrders[ChartListPosition+1][ko][2]=NormalizeDouble(OrderStopLoss(),dig);
            TotalOrders[ChartListPosition+1][ko][3]=NormalizeDouble(OrderTakeProfit(),dig);
            TotalOrders[ChartListPosition+1][ko][4]=OrderTicket();
            TotalOrders[ChartListPosition+1][ko][5]=OrderLots();
            TotalOrders[ChartListPosition+1][ko][6]=OrderType();
            TotalOrders[ChartListPosition+1][ko][7]=OrderMagicNumber();
            TotalOrders[ChartListPosition+1][0][0]=ko;
           
              switch(TotalOrders[ChartListPosition+1][ko][6])
              {
               case OP_BUY:
                        Type="Buy";
                break;
                
               case OP_BUYSTOP:
                        Type="Buy Stop";

 for(int j=1;j<=OrdersCount;j++)  
      {
       
         switch(TotalOrders[ChartsListPosition+1][j][6])
          {
           case OP_SELL: 
               if (TotalOrders[ChartsListPosition+1][j][2]!=0 && 
                   ask>=(TotalOrders[ChartsListPosition+1][j][2]-NormalizeDouble(StopLevel*point,dig)))  
                   {
                    test=StopLossColor;
                   } 
                   else
                   {
                   if (TotalOrders[ChartsListPosition+1][j][3]!=0 && 
                       ask<=(TotalOrders[ChartsListPosition+1][j][3]+NormalizeDouble(StopLevel*point,dig)))
                      {
                       test=TakeProfitColor;
                      }
                   }
             break;       
 
karwin:
晚上好,请告诉我如何解决新版本中指标不工作的问题。编译时出现错误"TotalOrders"--非法切换表达式类型 (代码中突出显示了该错误) 问候,亚历山大。

变量应该在那里,而不是其他东西。

              int Переменная=TotalOrders[ChartListPosition+1][ko][6];
              switch(Переменная)
              {
               case OP_BUY:
                        Type="Buy";
                break;
                
               case OP_BUYSTOP:
                        Type="Buy Stop";
 

同志们好。

你能给我一些建议吗?我对MT5不是很熟悉,我几乎没有使用过它,在测试时,只有一个CPU核心参与,我有8个CPU核心,这是为什么?我怎样才能解决这个问题?


 
7Konstantin7:

同志们好。

你能给我一些建议吗?我对MT5不是很熟悉,我几乎没有使用过它,在测试时,只有一个CPU核心参与,我有8个CPU核心,这是为什么?我怎样才能解决这个问题?


你应该在第五论坛上问
 
7Konstantin7:

同志们好。

你能给我一些建议吗?我对MT5不是很熟悉,我几乎没有使用过它,在测试时,只有一个CPU核心参与,我有8个CPU核心,这是为什么?我怎样才能解决这个问题?


这样做是为了测试还是为了优化?如果只是测试--一个核心工作,但如果你在策略测试器中启用 "优化 "选项,处理器的所有核心都会工作。
 
borilunad:

你在不了解的情况下乱用PredBar,这就是结果!先学好数学!

谢谢你,学会了,改正了。
 
evillive:
你应该在第五个论坛上问这个问题

"我不是该网站的成员,这就是为什么我在这里问这个问题。

barabashkakvn:
这是在测试或优化过程中吗?如果你只是测试 - 一个核心工作,但当你在策略测试器中打开 "优化 "选项时,将运行处理器的所有核心。

我已经明白了一切,谢谢大家。 在测试期间,一个核心在工作,一切都在正常工作。

我不明白为什么他们在测试中不直接使用处理器的全部功率。

 
7Konstantin7:

"我不是该网站的成员,这就是为什么我在这里问这个问题。

我已经明白了一切,谢谢大家。 在测试期间,一个核心在工作,一切都在正常工作。

我不明白为什么他们不在测试中使用处理器的所有功率。

而在测试期间,我们为什么要加载所有的核心(没有开启优化)?毕竟,如果用可视化的方式进行测试,就不急于求成,而如果没有可视化的方式进行测试--所以现代计算机在单核上执行这项任务就像葵花籽。