OrderCloseが機能しない - ページ 3

 

ありがとうthrdel、あなたのコーディングを調べてみるよ。あなたは本当にとても親切です。本当にありがとうございます。

 
thrdel:


しかし、もしその人がオーダーセレクトを使いたくなければ(あるいは使い方を知らなければ)、そして市場にオープンオーダーを残さないのであれば、それは有効です。

私たちはここでお互いに助け合おうとしているのですが、あなたの回答は少しも役に立っていません。

次回は、正しい方法で、正しいコードを入れて、他の人が実際に何かを学ぶことができるように、助けてあげてください。

 
私の質問に投稿してくれた皆さん、ありがとうございます。私の意図は、bar2が特定の条件を満たしたときに取引を開始することです。 私はMQL4の初心者なので、GBPJPYでテストしており、一度に1つのトレードを開いています。一回の取引で、Orderclose()でチケットを使用することができます。私はまだOrderSelectに慣れていないのです。バー3がある条件を満たせば取引は終了するのですね。 質問ですが、デバッグのためにプログラムの実行をファイルに保存する方法はありますか?プログラムの実行時に、どの部分が間違って実行されたのかが分からないのです。
 
chuale:
私の質問に投稿してくれた皆さん、ありがとうございます。私の意図は、bar2が特定の条件を満たしたときに取引を開始することです。 私はMQL4の初心者なので、GBPJPYでテストしており、一度に1つのトレードを開いています。一回の取引で、Orderclose()でチケットを使用することができます。私はまだOrderSelectに慣れていないのです。バー3がある条件を満たせば取引は終了するのですね。 質問ですが、デバッグのためにプログラムの実行をファイルに保存する方法はありますか?プログラムの実行時に、どの部分が間違って実行されたのかが分からないのです。

どういたしまして、Chualeさん。私もこのフォーラムで他の人から多くを学びましたので、問題ありません。プログラムの実行をファイルに保存する必要はありません。変数の値や出てくるかもしれないエラーを監視する方法がいくつかあります。私は主にComment()関数と Print()関数を使用しています。必要であれば、例をお送りします。前にも書きましたが、GBPJPYはポジティブな結果を得られませんでしたが、USDJPYは得られました。私は1ヶ月間(2014年1月21日~2015年2月25日)だけバックテストを行い、私の設定でリターンは400米ドルを少し超えるものでした。時間が出来次第、他のペアもテストしてお知らせします。また、Print()やComment()を使ってリアルタイムで画面上の値を確認する方法についてヘルプが必要な場合は、私に知らせてください。以前添付した画像は、あなたのEAの1ヶ月間のパフォーマンスグラフです。今のところ悪いようには見えませんね。
 

thedelさんへ。

ありがとうございます。

はい、私はPrint()を使用しています。未決済の取引がある場合、OrderSelect() をどのように使用 するかを知る必要があります。単一の取引について、SELECT_BY_POSを使用する場合、インデックスの値はどうなりますか(OrderSelect (int index, in select, int pool=MODE_TRADES))?1でしょうか?

またはどのような値ですか?

 
chuale:
私の質問に投稿してくれた皆さん、ありがとうございました。私の意図は、bar2が特定の条件を満たしたときに取引を開始することです。 私はMQL4の初心者なので、GBPJPYでテストしており、一度に1つのトレードを開いています。一回の取引で、Orderclose()でチケットを使用することができます。私はまだOrderSelectに慣れていないのです。バー3がある条件を満たせば取引は終了するのですね。 質問ですが、デバッグのためにプログラムの実行をファイルに保存する方法はありますか?プログラムの実行時に、どの部分が間違って実行されたのかが分からないのです。


以下は、Order Select関数の使用例です。

この例では、CountTrades関数はすべての未決済注文を チェックし、シンボルとマジックナンバーが一致しないものを破棄し、必要なものだけをカウントしています。

この例では、最新のものから最初のものまで選択されます。

もし、もっと助けが必要なら、私に教えてください。

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
/*
On every tick program checks what the value of myTrades is
by calling (executing) the CountTrades() function and asign the value
returned to myTrades..
*/
int myTrades = CountTrades();
/*
Comment() function will display the words in quotes and the value of 
myTrades variable.
*/
Comment("You have "+myTrades+" open trades.");
   
  }
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;// we start counting from zero
int trade;  // define a variable that will hold the total number of trades that are open
// Get the number of trades from OrdersTotal() and asign that value to trade variable.
for(trade=OrdersTotal()-1;trade>=0;trade--)
   {
   OrderSelect(trade,SELECT_BY_POS,MODE_TRADES); // Select orders by position (OP_BUY and OP_SELL) - orders can be selected by position or by ticket
                                                 // select from Open or pending orders = MODE_TRADES or select from History = MODE_HISTORY
   if(OrderSymbol()!=Symbol() || OrderMagicNumber() != MagicNumber)// if the order has a different symbol or magic number, skip to next order
   continue;
   if(OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)// if symbol is right and magic number is right, that is my order ,then
   if(OrderType()==OP_SELL                                         // if it's an open sell do this.....
   || OrderType()==OP_BUY)                                         // if it's an open buy do this......      
   count++;                                                        // in this example increase the counter since I'm counting all my orders
   }
return(count);                                                     // When finished counting, return the result
}
 
thrdel:


でも、OrderSelectを使いたくない(あるいは使い方を知らない)人が、マーケットにオープンオーダーを残さないのであれば、これは有効です。

私たちはここでお互いに助け合おうとしているのですが、あなたの回答は少しも役に立っていません。

次回は、正しい方法で、正しいコードを入れて、他の人が実際に何かを学ぶことができるように、助けてあげてください。


もし、あなたが助けようとするならば、正しく説明してください。

あなたは言いました

スルデル

まず、OrdersTotal()で注文を数えます。

total=OrdersTotal();


悪い例です......あなたがあげたのは

もし、OrderSelect()を使いたくないのなら、EAのプログラミングを止めなければならない。

https://www.mql5.com/en/forum/149958/page2#915413 あなたがここで言っていることは大間違いです。

私はあなたのサンプルコードにコメントし、あなたが何をしなければならないかを伝えました。

どうすればいいか、たくさんの例があります。

もしあなたがそれらを見つけたいなら、それをググってください。

 
thrdel:


いくつか間違っている点があります。このEAをM1時間軸のJPYペアで動作させたいのだと思います。新しいバーだけに注文を出して、新しいバーだけで決済したいのか、それとも新しいバーでエントリーして条件が揃ったら終了したいのか?以下は私が考えていることです。

まず、OrdersTotal() で注文を数えます。

それから変数を計算します。

市場に注文がある場合は、それらが決済されなければならないかどうかをチェックします。

市場に注文がない場合、エントリー条件が満たされているかどうかをチェックします。

何か質問があれば教えてください。

 
をコンパイルしたところ、Timefunction not defineと表示されました。アドバイスお願いします。
if(Time[0]==previousTime) return(0);         //EA will not go past this point unless it is a new bar
   previousTime=Time[0];                        // If it was a new bar , it's old now but continue to the end
 
chuale:
をコンパイルしたところ、Time function not defineと表示されました。アドバイスをお願いします。


Timeの括弧を()ではなく、[]と入力したのがいけなかったようです。ありがとうございます。