半分の区画を閉鎖する。 - ページ 6

 
if(FirstTarget_Buy == Bid)」と入れればいいということですか?(明らかに動作しないので、それではない)
 
DomGilberto:
if(FirstTarget_Buy == Bid)" と書いたらどうなる?(明らかに機能しないのでそれはない)

または、次のようなものです ... ...

if(Bid >= FirstTarget_Buy + (Point / 2) )
   {
   //  close the Order
   }

.................................ダブルの比較の問題(価格は!)

また、スプレッドを考慮し、ターゲットがスプレッドを含むか含まないかを考える必要があります。

 

(ため息) ok - Raptorさんのご協力に感謝します。これはイライラしてきますね。こんなに時間がかかる必要はないと思うのですが...。上のIf文は、うまくいきません。

正直、途方に暮れています...。

もし私が上の "if "ステートメントを含まず(その場合何も起こりません)、closeorderを "Bid "に置くだけなら、それはいくつかの半分(半分の半分など)を閉じます - しかし私はそれがこの半分を閉じるタイミングを知る方法を解決することができません...。

これ以上の提案は非常に高く評価されます。

 
DomGilberto:

(ため息) OK - Raptorさんのご協力に感謝します。これはイライラさせられますね。こんなに時間がかかることではないと思うのですが...。上のIf文は、うまくいきません。

正直、途方に暮れています...。

もし私が上の "if "ステートメントを含まず(その場合何も起こりません)、closeorderを "Bid "に置くだけなら、それはいくつかの半分(半分の半分など)を閉じます - しかし私はそれがこの半分を閉じるタイミングを知る方法を見つけ出すことができません...。

もし、満たさなければならない価格条件を指定しないなら、それは単に可能な限り早く注文の半分を閉じます、Bidは 常にBidであり、OP_BUYを閉じるのに有効です。

if文は動作します ... ... 原因がわからない場合は、その前にPrint()を追加してください ... ... その後も追加してください。

Print("Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );

if(Bid >= FirstTarget_Buy + (Point / 2) )
   {
   Print("Bid >= FirstTarget_Buy - Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );

   //  close the Order
   }

心配しないでください。もっとイライラするのは、コードが思い通りに動いているのに、それをストラテジー・テスターで実行すると、コイン投げと同じぐらいうまくいかないとわかったときです。

 
ありがとうございます。また、STを実行した後、停止してもJournalに何も出力されないことがあるのですが、なぜでしょうか?

"コードが思い通りに動いているのに Strategy Testerで 実行するとコイントスと同じくらいうまくいかないとき"

ええ、想像できますよ。このような場合、「某国では、某国では、某国では、某国では、某国では、某国では、某国では、某国では、某国では、某国では、某国では、某国では、某国では、某国では、某国では、某国では、某国ではなくてはならない。しかし、ロットクロージングは直感に反しています(私の知る限り)。
 
DomGilberto:
OK ありがとうございます。また、STを実行した後、停止してもJournalに何も出力されないことがあるのですが、どうしてでしょうか?

ジャーナルタブは2つありますが、Strategy Tester ウィンドウで見るべきものと、Expertsタブの隣で見るべきものがあります。 一番良い方法は、tester ⇄logsに保存されたログファイルを見ることです。

 
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Ticker Number = 10
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.08.01 13:44:27     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000
   if(OrderType()==OP_BUY && Bid >= FirstTarget_Buy +(Point / 2)){
                  Print("Bid >= FirstTarget_Buy - Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );
                  bool Close_Half_Order_Buy = OrderClose(OrderTicket(),half,Bid,3,CLR_NONE);
                  if(Close_Half_Order_Buy!=TRUE)Print("Close_Half_Order_Buy Last Error = ", GetLastError());
                  }
firsttarget_buy は、まさにその通りです。決済するロット数も正確です。これはすべて保留中の注文にプリントアウトされます - しかし、それは正しく計算されて いるにもかかわらず、その価格で閉じないのですか?OP_BUY "の時に選択しているのですが・・・。このような質問ばかりで申し訳ありませんが、なぜこれが機能しないのか理解できません。
 
DomGilberto:
firsttarget_buy は、まさにその通りです。クローズするロット数も正確です。これはすべて保留中の注文で印刷さ れます - しかし、それはその価格で閉じません、私はそれが正しく計算されているにもかかわらず?OP_BUY "の時に選択しているのですが・・・。このような質問ばかりで申し訳ありませんが、なぜこれが機能しないのか理解できません。

if()の前にprintを追加していませんね。

Print("Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );   //  add this line too . . .

if(Bid >= FirstTarget_Buy + (Point / 2) )
   {
   Print("Bid >= FirstTarget_Buy - Current Bid: ", DoubleToStr(Bid, Digits), " FirstTarget_Buy: ", DoubleToStr(FirstTarget_Buy, Digits)  );

   //  close the Order
   }

もしそうでなければ、if()は真ではなく、オーダーは部分的にクローズしていないことになります。

 
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Current Bid: 1.35972 FirstTarget_Buy: 1.37931
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: FirstTarget_Buy: 1.37931
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Lots Open = 0.18
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: Order Ticker Number = 9
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lots to close is: 0.09000
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The Lotstep is: 0.01000
2013.08.01 14:19:36     2013.02.01 15:00  trendfishing_play_ground EURUSD,H1: The minimum lots are: 0.01000

Bidが"FirstTarget_buy " と同等かそれ以上であれば見ることができるのですが。2:1の報酬比率の利益目標まで実行するトレードでテストしています...だから、1:1の報酬になることは分かっています。すべての印刷 機能は、保留中の注文に印刷されます (すなわち、保留中の注文がある場合、私はテストを停止し、すべての印刷が表示されます - しかし、保留中の注文の1つがトリガーされた後にテストを停止すると、「印刷」という点では何も印刷されません、ジャーナルの?)

このことにこだわっている自分が信じられません。これはこれまでで最大の課題になっていますが、もっと複雑なことが他にあるような気がします...。

(update: 私は、価格を "for "ループに引き込むために、ティックごとにBidを監視する必要があると仮定しています?

IF()」ステートメントが真になるために、Bidは最終的に私の「FirstTarget_buy」と等しくなるのでしょうか?

 
DomGilberto:

Bidが"FirstTarget_buy " と同等かそれ以上であれば見ることができるのですが。2:1の報酬比率の利益目標まで実行するトレードでテストしています...それで、1:1の報酬になることがわかりました - ロットが半分になるべきところです。すべての印刷機能は、保留中の注文で印刷されます (つまり、保留中の注文があり、テストを停止すると、すべての印刷が表示されます。しかし、保留中の注文がトリガーされた後にテストを停止すると、ジャーナルの「印刷」の点では何も印刷されません)。

OK、あなたは今進歩しています ... あなたは、OP_BUYが、保留中の注文と 同じ方法ですべての変数を印刷するあなたのコードをトリガーしない理由を見つける必要があります ... あなたがそのコードを投稿したい場合、私は見てみます。