なぜプログラムは成功した前の行の後の行をスキップし、その行の指示を無視するのかが理解できません。
以下のコードを見ると、Strategy Testerでは売りの取引が成功 しましたが、ジャーナルには売りの取引が記録されず、OrderSendの後のコードも無視されてジャーナルに記録されないことがわかります。
どうなっているのでしょうか?
ernest02です。
もしかしたら、これが役に立つかもしれませんよ?
Print("Error description",GetLastError());
ありがとうございます。
ありがとうございます。
ストラテジーテスターでは、いくつかのSellトランザクションが表示されます - - そして、トランザクションにエラーが発生した場合のエラールーチン(下図のコード)がありますが、エラーは報告されていません。
// Error handling if(SellTicket == -1) { ErrorCode = GetLastError(); ErrDesc = ErrorDescription(ErrorCode); ErrAlert = StringConcatenate("Open Sell Order - Error ",ErrorCode,": ",ErrDesc); Alert(ErrAlert); ErrLog = StringConcatenate("Ask: ",Ask," Lots: ",LotSize," Price: ",SellPrice," Stop: ",SellStopLoss," Profit: ",SellTakeProfit); Print(ErrLog); }
ありがとうございます。
ストラテジーテスターでは、いくつかのSellトランザクションが表示されます - - そして、トランザクションにエラーが発生した場合のエラールーチン(下図のコード)がありますが、エラーは報告されていません。
SellTicketはIntegerです。
以下はコードの詳細です。
if (SellSignal == true && CCIReal < (CCILevel - SellLevel) && TotalSellOrders <= MaxTrans && SellTrans == true) { Print("CCI is ",CCIReal); for (Count = OrdersTotal()-1; Count >= 0; Count--) if (OrderSelect(Count, SELECT_BY_POS) && OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber) { int BuyOrder = OrderTicket(); while(IsTradeContextBusy()) Sleep(10); bool Closed = OrderClose(BuyOrder, OrderLots(), Bid, UseSlippage, Blue); // Error handling if(Closed == false) { ErrorCode = GetLastError(); string ErrDesc = ErrorDescription(ErrorCode); string ErrAlert = StringConcatenate(" Close Buy Order Error - Error ",ErrorCode,": ",ErrDesc, " Bid is ", Bid, " SellTakeProfit is ", SellTakeProfit); Alert(ErrAlert); string ErrLog = StringConcatenate("OrderTicket: ",OrderTicket()); Print(ErrLog); } } RefreshRates(); SellPrice = Bid; if (TrailingStopFunc == false) SellStopLoss = Bid + (StopLoss * UsePoint); else SellStopLoss = 0; SellTakeProfit = Bid - (TakeProfit * UsePoint); if(IsTradeContextBusy()) Sleep(10); SellTicket = OrderSend(Symbol(),OP_SELL,LotSize,SellPrice,UseSlippage,SellStopLoss,SellTakeProfit,"CCITrendReversal",MagicNumber,0,Red); Print("SellTicket is ",SellTicket); if (SellTicket >= 0) { PlaySound("news.wav"); SellTime = OrderOpenTime(); SellSignal = false; } Print("SellSignal2 is ", SellSignal); // Error handling if(SellTicket == -1) { ErrorCode = GetLastError(); ErrDesc = ErrorDescription(ErrorCode); ErrAlert = StringConcatenate("Open Sell Order - Error ",ErrorCode,": ",ErrDesc); Alert(ErrAlert); ErrLog = StringConcatenate("Ask: ",Ask," Lots: ",LotSize," Price: ",SellPrice," Stop: ",SellStopLoss," Profit: ",SellTakeProfit); Print(ErrLog); } }
SellTicketはIntegerです。
以下はコードの詳細です。
ありがとうございます。.ただ、Sellがうまくいった場合、何が起こるかを明確にするために ..
Print("SellTicket is ",SellTicket); // <--- this will be printed to the journal if (SellTicket >= 0) { PlaySound("news.wav"); // <--- PlaySound does not work in the Strategy Tester SellTime = OrderOpenTime(); // <--- if the Sell worked this variable will be set (or do we first need an OrderSelect() ?) SellSignal = false; // <--- if the Sell worked this variable will be set } Print("SellSignal2 is ", SellSignal); // <--- this will be printed to the journal
これがとても不思議なんです。
ストラテジーテスターは 多くの売りの取引を記録していますが、ジャーナルには何も表示されません。
もう一度、コードを最初から見直し、少し変更して、どうなるか見てみようと思います。
皆さん、ありがとうございました。とても感謝しています。
(エラーの原因がわかったら報告します。そうでなければコードを書き直します。)
これがとても不思議なんです。
ストラテジーテスターは多くの売りの取引を記録していますが、ジャーナルには何も表示されません。
もう一度、コードを最初から見直し、少し変更して、どうなるか見てみようと思います。
皆さん、ありがとうございました。とても感謝しています。
(エラーの原因がわかったら報告します。そうでなければコードを書き直します。)
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
なぜプログラムは成功した前の行の後の行をスキップし、その行の指示を無視するのかが理解できません。
以下のコードを見ると、Strategy Testerでは 売りの取引が成功 しましたが、ジャーナルには売りの取引が記録されず、OrderSendの後のコードも無視されてジャーナルに記録されないことがわかります。
どうなっているのでしょうか?
(多くの行からわかるように、データにはいくつかの問題があります。2012.12.31 11:21:27 TestGenerator: unmatched data error (volume limit 2430 at 2012.11.05 06:00 exceeded))
以下は、私が参照しているコードのスニペットです。