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

 
素晴らしいアドバイスありがとうございます。私はピップ値(例えば常に100ピップ)に対する固定テイクプロフィット 価格を持っていません。それは60EMAがどこにあるか=ストップロスと最終固定TPが1:2(だからストップロスの2倍のピップ距離に対してどんなピップ値でもあり得る)であることをベースに行われます。その分、ちょっとやりにくいのですが・・・。

最後の質問ですが、価格の2倍を正規化することは、実はそんなに重要なことなのでしょうか・・・。目的がよくわからないのですが...?
 

はい、それはダブル、OrderTakeProfit() OrderStopLoss() OrderLots() で問題になる可能性があります、特にあなたがそれらで計算する場合。私のEAで、あなたの注文の一部決済と似たようなことをやっていたときに、この問題が発生しました。このスレッドhttps://www.mql5.com/en/forum/141034 を見てみてください。

 
そうですね、完璧に動作していますね...。問題は、If(OrderOpenPrice() > OrderStoploss())から、同じ価格で決済され続けるトレードを除外したいのですが...

頭を悩ませてみたのですが、「OP_BUY」が発生したらすぐにOrderTicket()で、半分決済されたら残りのポジションのOrderTicket()番号で行うというロジックがつかめません?

OP_BUYがOrderClose()で半分になると、残りのポジションは別のチケット番号になるのですが・・・。どなたか、この2つを比較して、OrderClose()が一旦終了した後に停止するように指示できる方法を教えていただけませんか?
 
私はこのスレッドを使い果たしたことを知っているが、これは最後のビットである:)プリーズ?

私はそれがすべてミントとセットを持っている - ちょうど私が上に書いたものを比較する論理を理解していない。

私はこれを完了した後、他の人を助けるためにスレッドを作成するつもりです - だけで、公正であろう!?
 
だれでも :(
 

その方法は既に述べました。あなたがパートクローズしようとしているチケットの OrderOpenTime() を取得します。パートクローズした後、同じ OrderOpenTime() を持つチケットのどれかが、パートクローズしたオーダーの残りの部分となるように、もう一度 OrderSelect() を実行します。

 

ああ、そうなんだ - すみません、最初にそれを見逃してしまったようだ

私はちょうど座ってそれについて考えていた、私はそれの論理を理解するのは難しい見つける?ポインターを教えていただけますか?

今のところ、"int Start() "セクションの中にあります。

OrderOpenPrice() > OrderStopLoss()) の部分を削除 する必要があるのは明らかですが、"CloseHalfOrder();" が継続的に呼ばれないようにするには、何と置き換えたらよいでしょうか?ロジックがまとまりません(今日は少し遅いです!)履歴の取引終了と比較しているのでしょうか...。

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

      if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice())
         {
         CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }   
      
 
DomGilberto:

そうなんです。

私はちょうど座ってそれについて考えていた、そして私はそれの論理を理解するのが難しい見つける?何かヒントになるようなことはありませんか?

今のところ、"int Start() "セクションの中にこれがあります。

OrderOpenPrice() > OrderStopLoss())の部分を削除する必要があるのは明らかですが、CloseHalfOrder();が継続的に呼ばれないようにするには、何と置き換えたらよいでしょうか?ロジックがまとまりません(今日は少し遅いです!)履歴のトレードクローズと比較しているのでしょうか...。

私があなたのコードでマークした時点で、あなたはどのオーダーを選択しましたか?

 if(OpenOrdersThisPair(Symbol())>0) //If there is a trade open = do below, which ever is applicable.
      {

      //  order currently selected is ??
 
      if(OrderType()==OP_BUY && OrderOpenPrice() > OrderStopLoss())
         {
         CloseHalfOrder(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }

      if(OrderType()==OP_SELL && OrderStopLoss() > OrderOpenPrice())
         {
         CloseHalfOrder1(); // Closes half at 1:1 - then calls another void to break even on the trade +3.
         }   
      

それは正しいオーダーですか? もし正しいオーダーなら、それは偶然ですか、それとも意図的ですか?

 
私もそう思っていました。OrderTypeを使う前にOrderSelect()が必要だと書いてありますが、動作するのでしょうか?私は常に1つの注文しか開いていないのですが・・・。

OrderOpenTime()をうまく使って、CloseHalfOrderが毎回呼ばれないようにする方法が思いつきません...。
 
DomGilberto:
私もそう思っていました。OrderTypeを使う前にOrderSelect()が必要だと書いてありますが、動作するのでしょうか?注文は常に1つしか開いていないのですが・・・。

もし、2つのシンボルでEAを動かしているならば、一度に2つの注文を開くことができます。