MT4のビルド600系の話。
根本的にこのブログではFXでしかもプログラミング言語のMQL4とMQL5について語ることが主になると思います。
なのでこの3冊は買っとけよ~♪
そんでまあ宣伝はこのぐらいにして本題。
新しいMetaTrader4はまあまあ便利、今までインジケーターの表示の本数が8個とかだったけどやたら増えたたしか記憶では256より少し少ないぐらいの仕様になったはず(適当。
そんでムカつくのが今までのでコンパイルが通らなくなることがある、
主にちゃんと変数の宣言しろよって部分が厳格になったせいがほとんどじゃないかな?
そのなかの一つでエラーまでも行かないけど注意してくることの多くなった一例、おかんで言ったら「はよねぇや(はやくねろよ)」ぐらいの注意として。
豊嶋大先生の書かれたMQL5の発注のコードから例として出します。
void OrderSendMarket(string symbol, ENUM_ORDER_TYPE type, double volume,
double pri, ulong deviation, double sl, double tp)
{
MqlTradeRequest request={0};
MqlTradeResult result={0};
request.action = TRADE_ACTION_DEAL;
request.symbol = symbol;
request.volume = volume;
request.price = pri;
request.sl = sl;
request.tp = tp;
request.deviation = deviation;
request.type = type;
request.type_filling = ORDER_FILLING_FOK;
OrderSend(request, result);
}
コンパイルすると以下のメッセージがでます。
return value of 'OrderSend' should be checked
いままでは普通に通ってたけど注意してきます。厳格にせいという意味の勧告なんでまあほっといても問題にはなりません
しかし潔癖な人は厳格にしてやりましょう。修正案↓
void OrderSendMarket (string symbol, ENUM_ORDER_TYPE type, double volume,
double pri, ulong deviation, double sl, double tp)
{
MqlTradeRequest request={0};
MqlTradeResult result={0};
request.action = TRADE_ACTION_DEAL;
request.symbol = symbol;
request.volume = volume;
request.price = pri;
request.sl = sl;
request.tp = tp;
request.deviation = deviation;
request.type = type;
request.type_filling = ORDER_FILLING_FOK;
int Ords = OrderSend(request, result);
}
最後の手前の発注部分でint Ordsとして厳格にしてやっただけです。
偉い簡単な直しなんですがこれが結構いたるところで発生します、
だからみんな嫌になっていくんだよMQ社よ。
そしてさっさとみんなMT5に移行しろよ、俺はソッチの方がコードかけるんだよ。
次回はKu-ChartのMT4版とMT5版でも使ってコードの説明でもやります。