Параметры
symbol
[in] Наименование торгового инструмента, по которому предполагается модифицировать позицию.
sl
[in] Новая цена, по которой сработает Stop Loss (либо, если изменение не нужно, предыдущее значение).
tp
[in] Новая цена, по которой сработает Take Profit (либо, если изменение не нужно, предыдущее значение).
MQL4からm_Trade.PositionModify(m_TradeはCTradeクラスの メンバです)を使ってこの構造を実装することが可能かどうか教えてください。
スクリプトのポイントは、指定されたロット数で市場に買いを建て、10分割で利食いを設定することです。ストップ・ロスを設定しないと、PositionModifyがエラー10016(リクエストのストップが正しくない)を 出すので困っています。また、逆指値を設定するタスクもありません。)ヘルプには、値を指定しないことも可能だと書いてあります:
私は前の購入リクエストから得た値を渡そうとしました(もちろんゼロです)。これが私のコードです:
よろしくお願いします。
MQL5におけるオブジェクト指向プログラミングの良い入門書です。
MT5ビルド1347で、最初のコード例が "inlegal switch expression type "というエラーでコンパイルに失敗しました。
AccountInfo.mqhのswitch文にintへのキャストを追加して動作させる必要がありました:
switch((int)MarginMode())
RTS-3.13のOpening-demoで同様の問題が発生し、あらゆることを試しました(指値注文はシンボル・プロファイルに書かれているようにORDER_TIME_SPECIFIED_DAYに設定されています)。買い指値注文は完璧に市場に手動で開いている。これはターミナルの不具合です。
こんにちは
一部のブローカー(例えばFoxPro)では、ポジションをオープンしようとするとエラー10030が発生します。コードの説明:無効なフィル。他のブローカー(例えばAlpari)では、これらの行なしで動作します。
Expert Advisorの初期化ブロックでは、コード内の異なる値を書きました:
役に立ちません。問題を解決する方法は?それとも、このCTradeクラスは時代遅れで、最新のターミナルアップデートに 対応しておらず、構造を通じて標準スキームに従って取引操作を記述する必要があるのでしょうか?
UPD:Rashidが上記のライブラリファイルを投稿してくれました。標準ライブラリにエラーがあるのは悲しいことです。ライブラリを置き換えることなく、EAに直接変更を加えることが可能かどうかを比較検討し、すべてが機能するようにしたいと思います。
MQL5におけるオブジェクト指向プログラミングの良い入門書です。
MT5ビルド1347で、最初のコード例が "inlegal switch expression type "というエラーでコンパイルに失敗しました。
AccountInfo.mqhのswitch文にintへのキャストを追加して動作させる必要がありました:
switch((int)MarginMode())
こんにちは、とても参考になる投稿をありがとうございます。私はMT5初心者で、EAの作成について勉強中なので、サンプルコードをコピーしてCtrade.Buyを実行しましたが、バックテストに失敗しました。詳細は以下の通りです:
1) 口座:基本通貨をNZDとしたライブ口座です。
2) バックテスト用のMetaEditor設定:
3) コードhttps://www.mql5.com/ja/articles/481 からコピー:
//+------------------------------------------------------------------+
//| demo.mq5 |
//| Copyright 2017, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#include<Trade\Trade.mqh>
//--- object for performing trade operations
CTrade trade;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- set MagicNumber for your orders identification
int MagicNumber=123456;
trade.SetExpertMagicNumber(MagicNumber);
//--- set available slippage in points when buying/selling
int deviation=10;
trade.SetDeviationInPoints(deviation);
//--- order execution mode
trade.SetTypeFilling(ORDER_FILLING_RETURN);
//--- logging mode: it would be better not to declare this method at all, the class will set the best mode on its own
trade.LogLevel(1);
//--- what function is to be used for trading: true - OrderSendAsync(), false - OrderSend()
trade.SetAsyncMode(true);
//---
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
BuySample1();
}
//--- Buy sample
//+------------------------------------------------------------------+
//| Buying a specified volume at the current symbol |
//+------------------------------------------------------------------+
void BuySample1()
{
//--- 1. example of buying at the current symbol
if(!trade.Buy(0.1))
{
//--- failure message
Print("Buy() method failed. Return code=",trade.ResultRetcode(),
". Code description: ",trade.ResultRetcodeDescription());
}
else
{
Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(),
" (",trade.ResultRetcodeDescription(),")");
}
//---
}
4) エラーログ (EUR/USD でのみテストしていることに注意してください):
GJ 0 19:36:44.410 127.0.0.1 ログイン (ビルド 1730)
HH 0 19:36:44.420 ネットワーク 38520 バイトの口座情報をロード
JO 0 19:36:44.420 ネットワーク 1482 バイトのテスターパラメータをロード
QE 0 19:36:44.420 ネットワーク 188 バイトの入力パラメータをロード
FR 0 19:36:44.421 ネットワーク 443 バイトの記号リストをロード
IF 0 19:36:44.421 テスターエキスパートファイルが追加された: Expertsdemo.ex5.46684バイトがロードされた
QH 0 19:36:44.433 テスター初期預金10000.00 NZD、レバレッジ1:100
JN 0 19:36:44.437 テスターの初期化に成功
ES 0 19:36:44.437 ネットワーク 46 Kb の初期化データを受信
PP 0 19:36:44.437 テスター Intel Core i7-4510U @ 2.00GHz、8103 MB
RJ 0 19:36:44.799 シンボル EURUSD: 同期されるシンボル
HR 0 19:36:44.800 シンボル EURUSD: シンボルが同期、3624 バイトのシンボル情報を受信
NJ 0 19:36:44.800 ヒストリー EURUSD: ヒストリーの同期開始
GO 0 19:36:44.856 History EURUSD: 27バイトのヒストリデータをロードして0:00:00.000に同期します。
RQ 0 19:36:44.856 History EURUSD: 2012.01.01から2017.11.15までの履歴が同期されました。
EF 0 19:36:44.993 History EURUSD,Daily: 履歴キャッシュが1010本分割り当てられ、2014.01.01 00:00 から 2014.12.31 00:00 までの312本が含まれています。
ND 0 19:36:44.993 History EURUSD,Daily: 履歴は2014.01.01 00:00から開始。
OL 0 19:36:44.996 Tester EURUSD,Daily (HalifaxPlus-Live): 毎ティック生成
GN 0 19:36:44.996 Tester EURUSD,Daily: Expertsdemo.ex5の2015.01.01 00:00から2017.11.15 00:00までのテスト開始
CK 0 19:36:56.288 Symbols NZDUSD: 同期されるシンボル
IS 0 19:36:56.288 Symbols NZDUSD: シンボルが同期、3624バイトのシンボル情報を受信
JL 0 19:36:56.288 ヒストリー NZDUSD: ヒストリーの同期開始
HJ 0 19:36:56.575 History NZDUSD: 14 Kbのヒストリデータをロードして0:00:00.078に同期します。
LS 0 19:36:56.575 History NZDUSD: 2013.01.01から2017.11.15までの履歴が同期されました。
CO 0 19:36:56.579 Symbols EURNZD: 同期されるシンボル
OJ 0 19:36:56.580 シンボル EURNZD: シンボルの同期が完了、3624バイトのシンボル情報を受信
DL 0 19:36:56.580 ヒストリー EURNZD: ヒストリーの同期開始
MK 0 19:36:56.656 ヒストリー EURNZD: 27バイトのヒストリーデータをロードし、0:00:00.000に同期します。
OD 0 19:36:56.656 History EURNZD: 2013.01.01から2017.11.15までの履歴が同期されました。
IN 0 19:36:56.665 トレード 2015.01.02 03:00:00 マーケット買い 0.10 EURUSD (1.20538 / 1.20549 / 1.20538)
PE 0 19:36:56.665トレード2015.01.02 03:00:00取引#2買い0.10 EURUSD at 1.20549完了(注文#2に基づく)
FH 0 19:36:56.666 トレード 2015.01.02 03:00:00 ディール実行 [#2 buy 0.10 EURUSD at 1.20549] (注文 #2 に基づく)
OG 0 19:36:56.666 Trade 2015.01.02 03:00:00 order performed buy 0.10 at 1.20549 [#2 buy 0.10 EURUSD at 1.20549].
FO 0 19:36:56.670 demo (EURUSD,D1) 2015.01.02 03:00:00 Buy()メソッドが正常に実行されました。リターンコード=10009 (1.20549で実行)
NM 2 19:37:15.823 History NZDUSD 2016.09.21 23:01:00: corrupted history detected (s:-73370, o:73433, h:+48, l:-123, c:-117 -- tv:63, rv:11250111).
JF 2 19:37:15.823 History NZDUSD 2016.09.21, バッドコンテナが見つかりました。
LQ 2 19:37:16.106 テスター履歴 未定義関数でエラー9
OH 2 19:37:16.106 Tester stopped on 0% of testing interval with error '20 NZDUSD'.
何が間違っているのか、どうすれば解決できるのか教えてください。