//+----------------------------------------------------------------------------------------------------------------------------------------+ //| 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);
}
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
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...
これを使っているのですが?上記の 「if(OpenOrdersThisPair(Symbol())>0)」 と組み合わせれば、EAを各ペアから分離しておくことができますね 。
ああ!もし私がOrderCloseTime()とOrderOpenTime()を比較したらどうなるのでしょう!?
きっとこれが一番いい方法なんだろうな?そうすれば、OrderClose関数を 好きなだけ追加することができますね。結局、履歴の中から、現在の「OP_BUY」と同じOrderOpenTime()を持つ取引を選択すればいいのですが、OrderCloseTime() > OrderOpenTime() なら、OrderClose() が停止して、半分ずつ連続して閉じてしまいます!!!!!?
誰か教えてください!!ここに何か原因があるんです :( あはは。
申し訳ありませんが、私はそれがどのように真実であるかを理解することはできませんか?OrderSymbol()==pairを確認しているのですが?つまり、EURUSDに接続されている関連EAは、EURUSDのorderselectであることをピックアップするのでしょうか?
まず OrderSelect() を行い、次にチェックします。
if(OrderSymbol()==pair) total++;
シンボルが一致しない場合、カウントは増加しませんが、それはまだあなたが選択した最後の順序は、あなたが作業しているシンボルのためのものではなかったことを意味します。
ループを追加して、有効なオーダーを見つけ、ループを終了させれば、正しいオーダーが選択されます。
今週、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にコードしてください。
EAが注文を決済すると、EAはどの注文を再び決済してはいけないかを知る必要があります。そこで、決済する前にOrderOpenTime()を取得します。同じOrderOpenTime()を持つ通貨ペアの注文を二度と決済しないようにEAにコードしてください。
同じOrderSymbol()で決済した取引履歴と比較する必要があるのでしょうか?
しかし、問題は、同じ「OP_BUY」または「OP_SELL」を異なる価格で4回まで部分決済しようとしていることです...。私が尋ねるべき質問は、すべての部分的なクローズ(1つの与えられた取引の任意のロットと価格)が、その定義済みの "OrderClose()" パラメータセットで1回だけ部分的にクローズするというルールを持つ方法を得ることができるかどうかだと思います...。
OrderOpenTime()は基本的に一度しか動作せず、他のタイプのOrderClose() 関数が全く発生しないように制限されます...。4つのOrderClose()関数に1つのルールを適用できる方法を見つけたいのですが...。(意味があるのでしょうか?)
4つの注文を開くことを勧めている人がいるのは知っていますが、あまり深く考えずに、その方法は私にとっては効率が悪いのです。