2017-07-18 7 views
0

私は、カスタムインジケータに矢印が表示されている{売り買い}の場合に、買い物をするEAを作成しようとしています。私はそれを行うにはiCustom()を使用していますが、私は値を比較するのに苦労しています。ここでiCustom()buffer - MT4のカスタムインジケータバッファから値を取得する方法は?

は私のコードです:

void OnTick() 
 
    { 
 
//--- 
 
     double sell=iCustom(NULL,0,"fx30",0,0); 
 
     double buy=iCustom(NULL,0,"fx30",1,0); 
 
     
 
     if(sell>0)//sell 
 
     { 
 
     //check if buy trade is running 
 
     //close a buy trade 
 
     //open a sell trade on success 
 
     if(buyTicket>0) 
 
      { 
 
      bool ret=OrderClose(buyTicket, lot, Bid, slipage,clrBlue); 
 
      if(ret==true) 
 
       { 
 
       printf("the sell number is: "+sell); 
 
       sellTicket=OrderSend(Symbol(),OP_SELL,lot,Bid,slipage,NULL,NULL,"MATHUNYA SELL",magic,0,clrRed); 
 
       } 
 
      } 
 
     else 
 
     { 
 
      //we dont have a buy trade open 
 
      //place a sell trade 
 
      //only one trade should be open 
 
      if(sellTicket>0) 
 
      { 
 
      printf("sell order already running"); 
 
      } 
 
      else 
 
      { 
 
      printf("the sell number is: "+sell); 
 
      sellTicket=OrderSend(Symbol(),OP_SELL,lot,Bid,slipage,NULL,NULL,"MATHUNYA SELL",magic,0,clrRed); 
 
      }  
 
     }    
 
     } 
 
     else{ 
 
     Print("buy: "+buy+", sell: "+sell+" Time: "+TimeToStr(Time[1])); 
 
     printf("awaiting sell order.."); 
 
     } 
 
     
 
     if(buy>0)//buy 
 
     { 
 
     //check if sell trade is running 
 
     //close a sell trade 
 
     //open a buy trade on success 
 
     if(sellTicket>0) 
 
      { 
 
      bool ret=OrderClose(sellTicket, lot, Ask, slipage,clrYellow); 
 
      if(ret==true) 
 
       { 
 
       printf("the buy number is: "+buy); 
 
       buyTicket=OrderSend(Symbol(),OP_BUY,lot,Ask,slipage,NULL,NULL,"MATHUNYA BUY",magic,0,clrGreen); 
 
       } 
 
      } 
 
     else 
 
     { 
 
      //we dont have a sell trade open 
 
      //place a buy trade 
 
      //only one trade should be open 
 
      if(buyTicket>0) 
 
      { 
 
      printf("buy order already running"); 
 
      } 
 
      else 
 
      { 
 
       printf("the buy number is: "+buy); 
 
       buyTicket=OrderSend(Symbol(),OP_BUY,lot,Ask,slipage,NULL,NULL,"MATHUNYA BUY",magic,0,clrGreen); 
 
      }  
 
     }   
 
     }else 
 
     { 
 
     Print("buy: "+buy+", sell: "+sell+" Time: "+TimeToStr(Time[1])); 
 
     printf("awaiting buy order.."); 
 
     } 
 
     
 
    } 
 
//+------------------------------------------------------------------+

// global variables 

int buyTicket = 0; 
int sellTicket = 0; 
double lot  = 0.01; 
int slipage = 3; 
int magic  = 321; 

答えて

0

あなたが値を比較することによって、何を意味していますか?私が見る通り、sell>0buy>0を比較するだけです。私のアドバイス:すぐ下の行を比較すると、その行を比較してください。
Print(__LINE__," indicator value = "+DoubleToStr(sell,Digits)); buyと同じです。可能性はありますが、ここではクリスタルボールを使用していないので、インジケータが1つのバッファに値(たとえば100または1.16000)を返し、別のバッファにEMPTY_VALUEを返します。 EMPTY_VALUEはmql4で2^31-1なので、それより大きくゼロになります。 インジケータの値が2147483648.00000などの場合は、sell > 0sell != EMPTY_VALUEに置き換えるか、または組み合わせる必要があります。

関連する問題