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

 
これを使っているのですが?上のif(OpenOrdersThisPair(Symbol())>0)」と 組み合わせれば、EAを各ペアから分離しておくことができるのでは?おっしゃることはわかるのですが。OrderOpenTime()を使って、半分になったトレードとそうでないものを区別する方法について何か提案があれば教えてください。正しい方向への小さなキック...?

//+----------------------------------------------------------------------------------------------------------------------------------------+  
//| Check to see if any order open on this currency pair                                                                                   |
//+----------------------------------------------------------------------------------------------------------------------------------------+   

int OpenOrdersThisPair(string pair)
  {
   int total=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==pair) total++;
     }
   return(total);
  }
 
DomGilberto:
これを使っているのですが?上記の if(OpenOrdersThisPair(Symbol())>0)」 と組み合わせれば、EAを各ペアから分離しておくことができますね

いや、2つのEAが動いていて、それぞれが注文を開いているとすると、OpenOrdersThisPair()関数が 最後に選んだOrderSelected()が間違ったものになる確率は50:50です ... 関数が1を返しても、間違った注文が選ばれる可能性は十分にあるのです。
 
申し訳ありませんが、どうしてそうなるのか理解できません?OrderSymbol()==pairを確認してるんですが?ということは、EURUSDに付いている該当のEAは、EURUSDのorderselectで拾うのでしょうか?
 
これで解決するのでしょうか?ジャーナルにはこう書いてあるんだけど?OrderSymbol()==OrderSymbol()」はどうなんだろう(笑) THISシンボルなら...知恵遅れかどうかはわからないけど......。

   if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
     {
     if(OrderSelect(OrderTicket(),SELECT_BY_TICKET, MODE_TRADES)==True)
         {   
         Print("The Symbol is: ", OrderSymbol());  
         }
         
         if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss() && OrderSymbol()==OrderSymbol())
               {
               CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }

         if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice() && OrderSymbol()==OrderSymbol()) // lol? If this symbol is, this symbol...
               {
               CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
               }
            
2013.08.08 18:51:21	2010.02.08 01:00  Trend Fishing 3 Exits GBPJPY,H1: The Symbol is: GBPJPY

 

ああ!もし私がOrderCloseTime()とOrderOpenTime()を比較したらどうなるのでしょう!?

きっとこれが一番いい方法なんだろうな?そうすれば、OrderClose関数を 好きなだけ追加することができますね。結局、履歴の中から、現在の「OP_BUY」と同じOrderOpenTime()を持つ取引を選択すればいいのですが、OrderCloseTime() > OrderOpenTime() なら、OrderClose() が停止して、半分ずつ連続して閉じてしまいます!!!!!?

誰か教えてください!!ここに何か原因があるんです :( あはは。

 
DomGilberto:
申し訳ありませんが、私はそれがどのように真実であるかを理解することはできませんか?OrderSymbol()==pairを確認しているのですが?つまり、EURUSDに接続されている関連EAは、EURUSDのorderselectであることをピックアップするのでしょうか?

まず OrderSelect() を行い、次にチェックします。

if(OrderSymbol()==pair) total++;

シンボルが一致しない場合、カウントは増加しませんが、それはまだあなたが選択した最後の順序は、あなたが作業しているシンボルのためのものではなかったことを意味します

ループを追加して、有効なオーダーを見つけ、ループを終了させれば、正しいオーダーが選択されます。

 
今週、16の異なるペアで同時に EAをテストしましたが、一度も間違ったものを選択したことがありません:s?私は何かを見逃しているのでしょうか?
 
DomGilberto:
今週、16の異なるペアで同時に EAをテストしましたが、一度も間違ったものを選択したことがありません:s?私は何かを見逃しているのでしょうか?
私が見る限り、間違った注文を選択することは可能なようです。コードをチェックして、それが起こらないのであれば、修正する必要はありません。
 

DomGilberto:
I thought that too - It says I need OrderSelect() before using OrderType, but it works? I only ever have one order open at any given time...

I can't think of how to use OrderOpenTime() to my advantage and stop CloseHalfOrder being called every time...

EAが注文を決済すると、EAはどの注文を再び決済してはいけないかを知る必要があります。そこで、決済する前にOrderOpenTime()を取得します。同じOrderOpenTime()を持つ通貨ペ アの注文を二度と決済しないようにEAにコードしてください。

 
SDC:

EAが注文を決済すると、EAはどの注文を再び決済してはいけないかを知る必要があります。そこで、決済する前にOrderOpenTime()を取得します。同じOrderOpenTime()を持つ通貨ペアの注文を二度と決済しないようにEAにコードしてください。


同じOrderSymbol()で決済した取引履歴と比較する必要があるのでしょうか?

しかし、問題は、同じ「OP_BUY」または「OP_SELL」を異なる価格で4回まで部分決済しようとしていることです...。私が尋ねるべき質問は、すべての部分的なクローズ(1つの与えられた取引の任意のロットと価格)が、その定義済みの "OrderClose()" パラメータセットで1回だけ部分的にクローズするというルールを持つ方法を得ることができるかどうかだと思います...。

OrderOpenTime()は基本的に一度しか動作せず、他のタイプのOrderClose() 関数が全く発生しないように制限されます...。4つのOrderClose()関数に1つのルールを適用できる方法を見つけたいのですが...。(意味があるのでしょうか?)

4つの注文を開くことを勧めている人がいるのは知っていますが、あまり深く考えずに、その方法は私にとっては効率が悪いのです。