質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MQL

MQL(Meta Quotes Language)は、Meta Trader4(MT4)で用いられるプログラミング用語です。MQLによりEAやインジケーターの作成が可能。C言語で書かれているため、C言語の知識があれば簡単に扱うことができます。

Q&A

0回答

1675閲覧

MQL4でOrderModifyできるようになりたいです。

Tennessee

総合スコア0

MQL

MQL(Meta Quotes Language)は、Meta Trader4(MT4)で用いられるプログラミング用語です。MQLによりEAやインジケーターの作成が可能。C言語で書かれているため、C言語の知識があれば簡単に扱うことができます。

0グッド

0クリップ

投稿2021/04/26 15:56

前提・実現したいこと

EA(MQL4)でのバックテスト時のエラーを治したい

発生している問題・エラーメッセージ

バックテスト時にOrderModify のエラー4051がすべてのオーダーで出てしまいます。おそらく初歩的なミスだと思われるのですがなかなか直すことができません。コンパイル時にはエラーは出ません。

該当のソースコード

MQL4

static double pips;
extern double Lots = 0.05;

int gPrvBars = 0;

int OnInit()
{
//起動時に現在のバーを記録
gPrvBars = Bars;
pips=1.0;

for(int i=0; i<MarketInfo(Symbol(), MODE_DIGITS); i++){

pips /= 10;

}

if( MarketInfo(Symbol(),MODE_DIGITS) == 3 || MarketInfo(Symbol(),MODE_DIGITS) == 5 ){

pips *= 10;

}
return(INIT_SUCCEEDED);
}

void OnTick()
{

int iCurrentBars = Bars;
if(iCurrentBars == gPrvBars){
gPrvBars = iCurrentBars;
return;
} else {
//バーの始まりで1回だけ処理したい内容をここに記載する
int i = FirstEntry();

if(i > 0 && i < 4 )
{
int TicketNumber = OrderSend(NULL,OP_SELL,Lots,Bid,10,0,0,NULL,Magic,0,clrRed);
OrderSelect(TicketNumber,SELECT_BY_TICKET,MODE_TRADES);
OrderModify(TicketNumber,OrderOpenPrice(),OrderOpenPrice()+3pips,OrderOpenPrice()-10pips,0,clrNONE);
}
else if(i > 3)
{
int TicketNumber= OrderSend(NULL,OP_BUY,Lots,Ask,10,0,0,NULL,Magic,0,clrBlue);
OrderSelect(TicketNumber,SELECT_BY_TICKET,MODE_TRADES);
OrderModify(TicketNumber,OrderOpenPrice(),OrderOpenPrice()-3pips,OrderOpenPrice()+10pips,0,clrNONE);
}

} //今のバー数を記録 gPrvBars = iCurrentBars; }

試したこと

関連部分のみ書かせていただきました。Oninit,Ontickはすべて書いています。上記ソースコードのFirstEntry関数は私が作ったもので、は戻り値が1,2,3だったら売り注文で4,5,6だったら買い注文をするというものです。OrderSendは条件道理に動いています。バックテスト時、OrderModifyだけエラー4051が出てしまっている状況です。当初OrderModifyの中の第二、第三、第四引数をAskとBidで書いていたのでそれが原因かと思い、OrderSelectを介してOrderOpenPriceでやってみたのですが同じ結果でした。プログラミングというものをやり始めて二週間のよちよち歩きの者です。基本的なことを聞きすぎていたら申し訳ありません。何卒ご教示くだされば幸いです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問