这有什么不对吗? - 页 3

 

请告诉我为什么这个脚本不能打开交易,显示错误0,即没有错误,但不能打开交易。

extern int MagicNumber = 10001;
extern double Lots = 0.1;
extern double StopLoss = 50;
extern double TakeProfit = 50;
extern int TrailingStop = 25;
extern int Slippage = 3;
//+------------------------------------------------------------------+
//    expert start function
//+------------------------------------------------------------------+
int start()
{
  double MyPoint=Point;
  if(Digits==3 || Digits==5) MyPoint=Point*10;
  
  double StochMain = iStochastic(NULL,0,7,10,4,MODE_LWMA,1,MODE_MAIN,0);
  double StochSignal = iStochastic(NULL,0,7,10,4,MODE_LWMA,1,MODE_SIGNAL,0);
  double MaSi = iMA(NULL,0,100,0,MODE_EMA,PRICE_CLOSE,0);
  
  if( TotalOrdersCount()==0 ) 
  {
     if((StochMain > StochSignal)&&(Close[1] > MaSi)) // Here is your open buy rule
     {
     OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask+StopLoss*MyPoint,Ask+TakeProfit*MyPoint,"Открыта сделка на покупку!!",MagicNumber,0,Yellow);
     }
     else
     {
        if(GetLastError() != 0)
        Alert("Ошибка ",GetLastError());
     }
  }
  
 
我认为你的止损点比开盘价 大。
 
对,而且没有错误。
 

告诉我如何破译这个,我不明白这块是如何运作的

    for(int cnt=0;cnt<OrdersTotal();cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

因此,首先我们将cnt 变量设置为0

然后,如果订单的数量 超过0,就会触发OrderSelect。

但这个数值为0 的变量cnt 负责什么?

 OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
 
试着只读一下功能,很快就会明白了。
 

没有什么变得清晰,到底为什么是0?订单是从零开始编号的还是什么?

而且还有更多。

OrderType()<=OP_SELL

我怎么知道这是否小于或等于卖出指令?哪一个小,哪一个大?

 
sss2019:

没有什么变得清晰,到底为什么是0?订单是从零开始编号的还是什么?

是的,从头开始,就像其他东西一样。

而且还有更多。

我怎么知道这是否小于或等于卖出指令?我们怎么知道哪一个是小的,哪一个是大的?


因为OP_SELL是常数=1
 

所以

OP_BUY - 0
OP_SELL - 1
op_buylimit - 2
OP_BUYSTOP - 3
op_selllimit - 4
op_sellstop - 5

这就是它的作用?

 
sss2019:

所以

OP_BUY - 0
OP_SELL - 1
op_buylimit - 2
OP_BUYSTOP - 3
op_selllimit - 4
op_sellstop - 5

这就是它的作用?


对。诚然,还有一个等于6的值。
 
还会是什么呢?