[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 478

 
abolk:

リンク先https://www.mql5.com/ru/code には、似たようなものが倉庫にたくさんあります。

へのリンクがあります。)

そうこなくっちゃ

 

こんにちは。

助けを求めているんだ!もう自殺したんだ!解らないんだ!!!!20p達成時に、注文のSLを始値で 並べ替える、つまり関数が77を出すことが必要。

 for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
       if (!OrderSelect(i, SELECT_BY_POS))
      {
         continue;
      }

      if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)
          continue;
      if(OrderStopLoss()==OrderOpenPrice())
            break;    
       if (   OrderProfit()>=(MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub)        ) 
   return(77);
                  
           }
   

動作させることができない。

 
demlin:

注文のSLが+20pipsになったら始値に再設定してほしい、つまり関数が77を示すように

20 pはそのようには計算されません。OrderOpenPrice()関数を使用して、現在の価格と比較する必要があります。つまり、注文がプラスまたはゼロの利益に達したとき、あなたはおそらく結果が77になることを望んでいます、すなわち。

for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
            if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;
            if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)  continue;
            if(OrderStopLoss()==OrderOpenPrice()) break;    
            if ( OrderProfit()>=0)) return(77);
           }
OrderProfit()関数は、注文の利益をpips単位ではなく、預入通貨で 返します。
 
EAが他のインジケータからインジケータデータを取得することが可能かどうか教えてください。価格帯でこのようなチャンスはないですね。
 
IgorM:

20pはこの方法では計算できません。OrderOpenPrice()関数を使って、現在の価格と比較する必要があります。どうやら、注文がプラスまたはゼロの利益に達したときに結果77を返したいようですね。そうすると、次のような感じになります。

OrderProfit()関数は、注文の利益をpips単位ではなく、預入通貨で返します。

20pipsの計算はしていません。 Bezub変数に設定しています。入金通貨での 注文の現在の利益(OrderProfit())と、入金通貨での必要な20ポイント((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub))を比較しようとするのです。
 
demlin:
それくらい、20pを計算しているわけではなく、Bezubという変数に設定されているのです。現在の預かり通貨での注文利益(OrderProfit())と預かり通貨での要求レベル20p((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub))を比較してみたところ

の場合、現在の価格と注文してから価格が何ピップス動いたかを考慮するのを忘れています。

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub

ZZZEROXXX
他のインジケータからインジケータデータ(許可されているもの)を取得することができるかどうか、アドバイスをお願いします。価格帯でこのような機会はありませんでした。

iCustom()

https://book.mql4.com/ru/samples/shared
 
IgorM:

の場合、現在の価格と注文してから価格が何ピップス動いたかを考慮するのを忘れています。

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub


あなたのスキームを試してみました。アラートでは、(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub 値が -0.033 となります。とはいえ、利益は21Pもあるんですけどね〜。これは正常なのか?
 
demlin:
あなたのスキームをテストしました。(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub の値が -0.033 の場合にアラートが発生します。21Pの利益が出ていますが !これは正常なのか?

すみません、確認せずに書いているので、ここを間違えてしまいました、このように動作するはずです。

売り:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

買い:(Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

 
IgorM:

すみません、確認せずに書いているので、ここを間違えてしまいました、このように動作するはずです。

売り:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

買い:(Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

それも、まだきれいな数字ではありません。数式がどうのこうのということではないと思います。(MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)式自体は、基本的にユーロは20に なります。ポイントは、forループのどこかにある
 
IgorM:

すみません、確認せずに書いているので、ここを間違えてしまいました、このように動作するはずです。

売り:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

買い:(Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

それも、まだきれいな数字ではありません。数式がどうのこうのということではないと思います。(MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub) 式自体は、基本的に EURUSD の場合は 20 を与える forループのどこかにある