OrderModify()の質問

 

MQL4フォーラムこんにちは。

{OrderModify(ticket,0,Ask-500*Point,0,0,Blue);}}}}

上記のコードは動作しますが、アスク価格が上下に動くとSLも上下に動きます。

解決策として、これを試してみました...

{OrderModify(ticket,0,OrderOpenPrice()-500*Point,0,0,Blue);}}}}

(選択されている注文は買い注文 です)

受信しているエラーのジャーナルを確認したところ、4051と表示されていました。4051のエラーは複数あります。基本的にうまくいかないのですが、以前にこの問題を解決された方で、解説をお持ちの方がいらっしゃいましたら教えていただきたいです。

私はこのソリューションが動作しない理由がわからない(はい、私は最初の間違ったOrderModifyソリューションが動作しているので、私は注文を正しく選択していると信じています)。

ありがとうございました。

 
WhooDoo22:


受信しているエラーのジャーナルを確認したところ、4051と表示されていました。4051のエラーは複数 あります。基本的に動作しないので、以前にこの問題を解決した人がいて、説明を持っているかどうか興味があります。

関数に問題がある場合、その関数のドキュメントを読んでください ... .OrderModify()<----- Click ME !!!

注文の開始価格を0.0に変更することはできません ... OrderSelect() を正しく実行したと仮定して、OrderModify() に渡す第2パラメータには OrderOpenPrice() を使ってください。

 

Simon, OrderModify()関数のドキュメントを読んで、使用されている例がトレーリングストップであることに気がつきました。私はEAにトレーリングストップを使用したくありません。なぜなら、もし私がトレーリングストップを使用した場合、(例によると)EAは、指定された価格にスリップを修正するために、市場が現在のスリップよりxポイント移動する必要があるからです。基本的にこれはあまりにも複雑です。私は、注文が市場に送信された後に、注文にストップロスを 追加したいだけです。

とにかく、私は現在新しい解決策も試しています。

ありがとうございました。

 
WhooDoo22:

Simon, OrderModify()関数のドキュメントを読んで、使用されている例がトレーリングストップであることに気がつきました。私はEAにトレーリングストップを使用したくありません。なぜなら、もし私がトレーリングストップを使用した場合、(例によると)EAは、指定された価格にスリップを修正するために、市場が現在のスリップよりxポイント移動する必要があるからです。基本的にこれはあまりにも複雑です。私は、注文が市場に送信された後に、注文にストップロスを追加したいだけです。

とにかく、私は現在新しい解決策も試しています。

ありがとうございました。

では、なぜOpen Price を 0.0 に変更しようとしているのですか? Open Price を変更しないまま、つまり OrderOpenPrice() を試してみてください ... ...
 

サイモン

ストラテジーテスター

1.ビジュアルモード

2.スピード31

3.2010.12.29

4.EURUSD

5.M15

は、すべてのティックではなく、「始値のみ」を実行します。


MetaEditor:編集 -> 検索...-> "// 選択肢1."


choice 1.=エラーなし、でもこれは明らかにいらない。

choice 2.=ジャーナルタブ→ジャーナルを読み込む。"エラー4051 "と表示されます。

ありがとうございました。

ファイル:
test1.mq4  12 kb
 

明らかに、OrderModify()のパラメータ内でOrderOpenPrice()関数を 使用すると、エラー4051によると「無効な関数パラメータ」と見なされます。と思っているのですが... :)OrderOpenPrice()の値を保存して、これをOrderModify関数のパラメータに含めれば、私のやりたいことができるのですが、本当にそうでしょうか?もっと簡単な方法があるはずです。それは私のために古い研削盤に戻ります。)

ありがとうございました。

 
WhooDoo22:
明らかに、OrderModify()のパラメータ内でOrderOpenPrice()関数を使用することは、エラー4051により「無効な関数パラメータ」と見なされます。
明らかに、あなたのコードは間違っています。OrderOpenPrice()は問題ありません。orderSelectを含むコードを投稿してください。
 

Williamです。

明らかに、私はあなたがあなたのサポートを提供したい場合、ダウンロードし、MetaEditorで表示するためのリンクでEAを投稿しました。OrderSelect()関数は、現在問題ありません。あのね。ウィリアム君のためだけに投稿するよ。

//***************************************************
// EMERGENCY BUY ORDER STOP LOSS PROTECTION SECTION ;
//***************************************************

   OrderSelect(0,SELECT_BY_TICKET,MODE_TRADES); // was ticket.
   if(OrdersTotal()>0)                                                                         {
   if(OrderType()==OP_BUY)                                                                     {
   if(OrderSend1==true)                                                                        {
//   if(iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)<=OrderOpenPrice()-500*Point)                     {
     
// choice 1.     
//     {OrderModify(ticket,OrderOpenPrice(),Ask-500*Point,0,0,Blue);}}}}
// choice 2.
     {OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice()-500*Point,0,0,Blue);}}}}

ご要望の通りです。

ありがとうございます。

 
WhooDoo22:

Williamです。

明らかに、私はあなたがあなたのサポートを提供したい場合、ダウンロードし、MetaEditorで表示するためのリンクでEAを投稿しました。OrderSelect()関数は、現在問題ありません。あのね。ウィリアム君のためだけに投稿するよ。

ご要望の通りです。

ありがとうございます。

0は 有効なチケット番号ではありません、ストラテジーテスターでも ありません、OrderSelect()をテストしてみてください、あなた自身のために見ることができます .
 

サイモン、テストをして調べてみます。

ありがとうございます。

 

あはは!チケット番号0を1に変えたら、全部うまくいったよ。そう、私はWilliamを誤解していたのです...。OrderSelect()関数が 問題だったのです。明らかに、OrderSelect()関数は、チケットを選択しなければなりません。チケット番号が 0 の場合、EA はどのチケットを選択するのでしょうか :O "?".お二人のご協力に感謝いたします。

ありがとうございました。