OrderCloseが機能しない - ページ 4

 

こんにちは。

下記をコンパイルしたところ、このようなエラーが発生しました。どの部分が間違っていたのか、教えてください。


'postin forum.mq4'      postin forum.mq4        1       1
',' - unexpected token  postin forum.mq4        59      53
expression has no effect        postin forum.mq4        59      54
1 error(s), 1 warning(s)                2       2
//+------------------------------------------------------------------+
//|                                                       chuale.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.abc.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.abc.com"
#property version   "1.00"
#property strict

extern double   TakeProfit=500;
extern double   Lots=0.1;
extern double   StopLoss=300;

double     bar1;
double     bar2;
double     bar3;
int        total,ticket;
//datetime   previousTime; 

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
  
//---
   
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {

  total=OrdersTotal();
      bar1=(iClose(Symbol(),PERIOD_M1,2)-iClose(Symbol(),PERIOD_M1,3))*100;
      bar2=(iClose(Symbol(),PERIOD_M1,1)-iClose(Symbol(),PERIOD_M1,2))*100;
      bar3=(iClose(Symbol(),PERIOD_M1,0)-iClose(Symbol(),PERIOD_M1,1))*100;
     Comment("Bar1="+DoubleToString(bar1,Digits)+"\n"+
             "Bar2="+DoubleToString(bar2,Digits)+"\n"+
             "Bar3="+DoubleToString(bar3,Digits)+"\n"
             );
                         
   if(total>0)
   {
   OrderSelect(0,SELECT_BY_POS);
   if (bar3<-2) OrderClose(OrderTicket(),Lots,Bid,3),Green;
   if (bar3>2) OrderClose(OrderTicket(), Lots,Ask,3,Red);
   }
   //if(Time[0]==previousTime) return(0);
   //previousTime=Time[0];
   if(total<1)
     {
      if (bar3>1)
      {  
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"Chua EA",12345,0,Green);
      //if(ticket<0)Print("Error OP_BUY order failed, error:"+GetLasterror());
      return(0);
      }
      
      if (bar3<-1)
      {
      ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid+-TakeProfit*Point,"Chua EA",12345,0,Red);
      //if(ticket<0)Print("Error OP_SELL order failed, error:"+GetLasterror());
      return(0);
      }
     }
   
   return(0);
  }
//+------------------------------------------------------------------+
 
2つの線を比べてみてください。
   if (bar3<-2) OrderClose(OrderTicket(),Lots,Bid,3),Green;
   if (bar3>2)  OrderClose(OrderTicket(),Lots,Ask,3,Red);
 

エラーレポートには、エラーの場所が書かれています。

',' - unexpected token postin forum.mq4 59 53

エラー箇所をダブルクリックすると、カーソルが問題箇所に直接移動します。

 

GumRaiさん、こんにちは。


ありがとうございます、直りました。誤って括弧を挿入してしまったのがエラーの原因です。

 

WHRoederさん、ありがとうございます。


 

thrdelさん、こんにちは。

Time[0]はバー0の時刻を指しているのでしょうか?Time[1]、Time[2]などはあるのでしょうか?ググってみましたが、ネット上ではあまり情報がありません。また、このEAを2つの通貨 ペアに装着した場合、OrderSelectはチャート自体の注文のみを選択するのか、それともターミナル内の全ての注文を選択するのでしょうか?

 

こんにちは、thrdelです。


" if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());" というコーディングに対して "implicit conversion from 'number' to 'string' postin forum.mq4 69" という警告メッセージが表示されるのはなぜでしょうか?

 
chuale:

Time[0]は小節0番の時間を指しているのでしょうか?Time[1]、Time[2]などはあるのでしょうか?

はい

chuale さん

ググってみましたが、ネット上ではあまり情報がないようです。

http://bit.ly/1fJi4XA

chuale:

また、このEAを2つの通貨ペアに付けた場合、OrderSelectはチャート自体の注文のみを選択するのか、それともターミナルにある全ての注文を選択するのか、どちらでしょうか?

あなたのコードに依存します

 
qiolさんありがとうございます。
 
chuale:

こんにちは、thrdelさん。


なぜ私はこの警告メッセージが表示されます "暗黙の変換 '数字'から '文字列' postin forum.mq4 69" コーディングに対して " if(ticket<0)Print("Error OP_BUY order failed, error: "+GetLastError());" ですか?


"数値 "から "文字列 "への暗黙の変換は、大きなループがある場合、面倒なことになります。

エラー報告で何行もスクロールしなければならないということです。

あなたの場合、GetLastError()は整数コードなので、printステートメントで文字列に変換されることを警告しているに過ぎないのです。

もし、問題ないのであれば、(string)を追加することで、このような煩わしい警告を止めることができます。

if(ticket<0)   Print("Error OP_BUY order failed, error:" + (string) GetLastError());

ちなみに、もしご存知なかったら・・・。

私は通常、これをExterns/Inputsの後に置きます。

#include <stdlib.mqh>

の後に置き、その後に

if(ticket<0)   Print("Error OP_BUY order failed, error: " + ErrorDescription(GetLastError() ) );

そうすれば、コードだけでなく、エラーの説明も表示されるようになります。