[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 622

 
Rossi:

は、画面下のタブで楽器をソートする方法はないのでしょうか? 4つのタイムフレームで8つの楽器がごちゃごちゃに散らばっているので...。

ノー
 
DDFedor:

グラフの名前のついたタブをつかみ、正しい場所にドラッグします。

AAAAAAAAAAAA素晴らしい回答、ありがとうございます....
 
artmedia70:
:)現在、エラー130が表示されています。一番混乱したのは、間違ったストップ(130)を設定しても、正しい離陸(ATRで計算)を設定することですが、私のストップは最初から設定されていませんでした...。 これを理解する方法はあるのでしょうか?

130の誤差は、間違ったストップロスか間違ったテイクプロフィットのどちらかである可能性があります。
 
ToLik_SRGV:


指値注文を追加(以前のコードでは忘れていました :) + エラー#1処理(修正前に新しい価格と現在の価格を比較し、同じであれば何も起こりません)。

トロールによって市場に近づいた修正注文は、TakeProfitの継承を失うようです...。一度トリガーされると、チャートにポジションでぶら下がり、バカみたいに証拠金を消費していくのです。損益で閉じないし、TakeProfitのラインもない...。とはいえ、ATRで計算したtp 値をわざわざコードに追加して確認したのですが。

void trailingOrder(int magic, int trailing){
   int index = 0, tp=TakeProfitATR (5);
   while(trailing > 0 && OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS)){
      if(OrderMagicNumber() == magic){
         if(OrderType() == OP_BUYSTOP){
            if(OrderOpenPrice() - Ask > Point*trailing){
               if((Ask+Point*trailing) - Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
                 (Ask+Point*trailing) - Ask > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
                 (Ask+Point*trailing) != OrderOpenPrice()){
                  if(!OrderModify(OrderTicket(),Ask+Point*trailing,OrderStopLoss(),
                  /*OrderTakeProfit()*/tp, 0, MediumSpringGreen))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку или передано неизмененное значение!");
               }
            }
            return;
         }
// ..... Далее по тексту функции также добавлены изменения...

私の変更の前も後も、変更された注文はポジションに変換する前も後もテイクラインを持っていませんでした...。

その理由は何でしょうか?

 
artmedia70:

トロールによってマーケットに近い場所に移動した修正注文はTakeProfitの継承を失うようです...。一度トリガーされると、チャートにポジションでぶら下がり、バカみたいに証拠金を消費していくのです。損益で閉じないし、TakeProfitのラインもない...。とはいえ、ATRで計算したtp 値をわざわざコードに追加して確認したのですが。

変更を加える前も加えた後も、変更後の注文はポジションに変換する前も後もテイクラインを持たなかった...。

その理由は何でしょうか?

保留中の注文の 価格を変更する場合、ストップロスとテイクプロフィットも変更する必要があります。
 
khorosh:
エラー130は、間違ったストップロスか、間違ったテイクプロフィットのどちらかです。
ありがとうございます。もう、わかっていたことですが...。そういう問題じゃないんです。トロールが原因でエラーが発生しました。まだ、対応する時間がないんです。
 
khorosh:
保留中の注文価格を変更する場合、StopLossとTakeProfitも変更する必要があります。 。

ATR Take Profit機能ではできないのでしょうか?注文を修正する前に呼んで、TakeProfitATR()で計算した現在のテイク値を取得し、注文修正に貼り付けています...。これは、上の私の例で言うと

int index = 0, tp=TakeProfitATR (5); // Рассчёт нового тейка по значению ATR. Ф-ция возвращает размер тейка в пунктах

....

if(!OrderModify(OrderTicket(),Ask+Point*trailing,OrderStopLoss(),
   /*OrderTakeProfit()*/tp, 0, MediumSpringGreen))Print(">>> ERROR ", GetLastError()); // здесь вместо OrderTakeProfit() подставляю tp
これを書いているときに間違いを見つけたようだ...。ATRのTakeProfit関数は、TakeProfitの値をpipsで返しますが、本来は価格を使用します。
しかし、それならなぜ、この変更を行う前に修正されたオーダーがテイクポイントの値を失っていたのか、理解できません...。ただし、OrderTakeProfit()は、そのテイクポイントの値を変更中のオーダーに書き込む必要があります......。
それから、疑問なのですが、例えば、保留中の注文を そのまま市場に近づけたいだけなのに、市場がそこから離れて反転や修正の準備ができた場合、なぜ毎回修正(テイク)しなければならないのでしょうか......。???
 
artmedia70:

ATR Take Profit機能ではできないのでしょうか?注文を修正する前に呼んで、TakeProfitATR()で計算した現在のテイク値を取得し、注文修正に貼り付けています...。これは、上の私の例で言うと

....

これを書いている間に自分のミスを見つけたようです・・・。ATRのTakeProfit関数は、TakeProfitの値をpipsで返しますが、本来は価格を使用します。
しかし、それにしても、変更前のモディファイド・オーダーがテイクポイントの値を失っているのは理解できませんが...。しかし、OrderTakeProfit()は、そのテイクポイントの値を修正中のオーダーに書き込む必要があります......。
それから、疑問なのですが、例えば、保留中の注文をそのまま市場に近づけたいだけなのに、市場がそこから離れて反転や修正の準備ができた場合、なぜ毎回修正(テイク)しなければならないのでしょうか......。???




私のメソッドに自動ストップとテイクオーバーを追加しました。 保留注文を出すとき、指値を設定するだけで、メソッドがすべてを正しい場所にドラッグしてくれます :))

//+------------------------------------------------------------------+
void trailingOrder(int magic, int trailing){
   int index = 0;
   double takeprofit, stoploss;
   while(trailing > 0 && OrdersTotal() != 0 && OrderSelect(index, SELECT_BY_POS)){
      if(OrderMagicNumber() == magic){
         if(OrderType() == OP_BUYSTOP){
            if(OrderOpenPrice() - Ask > Point*trailing){
               if((Ask+Point*trailing) - Ask >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
                 (Ask+Point*trailing) - Ask > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
                 (Ask+Point*trailing) != OrderOpenPrice()){
                  if(!OrderModify(OrderTicket(),Ask+Point*trailing, Ask+Point*trailing-(OrderOpenPrice()-OrderStopLoss()), Ask+Point*trailing+(OrderTakeProfit()-OrderOpenPrice()), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку или передано неизмененное значение!");
               }
            }
            return;
         }
         if(OrderType() == OP_SELLSTOP){
            if(Bid - OrderOpenPrice() > Point*trailing){
               if(Bid - (Bid-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
                 Bid - (Bid-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
                 (Bid-Point*trailing) != OrderOpenPrice()){
                  if(!OrderModify(OrderTicket(),Bid-Point*trailing,Bid-Point*trailing+(OrderStopLoss()-OrderOpenPrice()),Bid-Point*trailing-(OrderOpenPrice()-OrderTakeProfit()), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку или передано неизмененное значение!");
               }
            }
            return;
         }
         if(OrderType() == OP_SELLLIMIT){
            if(OrderOpenPrice() - Bid > Point*trailing){
               if((Bid+Point*trailing) - Bid >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
                 (Bid+Point*trailing) - Bid > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
                 (Bid+Point*trailing) != OrderOpenPrice()){
                  if(!OrderModify(OrderTicket(),Bid+Point*trailing,Bid+Point*trailing+(OrderStopLoss()-OrderOpenPrice()),Bid+Point*trailing-(OrderOpenPrice()-OrderTakeProfit()), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку или передано неизмененное значение!");
               }
            }
            return;
         }
         if(OrderType() == OP_BUYLIMIT){
            if(Ask - OrderOpenPrice() > Point*trailing){
               if(Ask - (Ask-Point*trailing) >= MarketInfo(Symbol(), MODE_STOPLEVEL)*Point &&
                 Ask - (Ask-Point*trailing) > MarketInfo(Symbol(), MODE_FREEZELEVEL)*Point &&
                 (Ask-Point*trailing) != OrderOpenPrice()){
                  if(!OrderModify(OrderTicket(),Ask-Point*trailing,Ask-Point*trailing-(OrderOpenPrice()-OrderStopLoss()),Ask-Point*trailing+(OrderTakeProfit()-OrderOpenPrice()), 0))Print(">>> ERROR ", GetLastError());
               }else{
                  Print(">>> Слишком близко к рынку или передано неизмененное значение!");
               }
            }
            return;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+
 
ToLik_SRGV:


メソッドに自動ストップとテイクオーバーを追加しました。 保留注文を設定する際、指値を一度設定すれば、あとはメソッド自体が全てを正しい場所にドラッグしてくれます :)) 。

とても便利です。しかし、最適とは言えません。動的にテイクを変えるべきなぜ、マーケットに追随しなければならないのか?もし、保留中の注文をセットして、価格が離れてしまった場合 - 例えば、修正など...。どうする?価格が戻るのを待つか?それとも注文を削除する?こうしたらいいのでは...

市場のボラティリティは低いが、安定した上昇トレンドがある状況を想像してみよう。保留中の SELLSTOP注文から 徐々に上方へ離れています。BUYのオープンポジションは、すでに利益が出て決済されています。市場のボラティリティが上がるのを待ち、ある閾値を超えたらすぐに指値注文を動かしていくのです。こうして、始まった修正をキャッチし、リミッターはロックポジションとしてではなく、追加の収入源として機能するのです。もし動かしていなかったら、補正が届いて触って終わっていたかもしれません。この場合、上昇トレンドの中でロタの売りポジションを持つことになります。

そんなトレンドサファリへのエクスカーション...。

もしダイナミックTPがあれば、保留中の注文をマーケットに移動させ、強いボラティリティ(ここでは弱いボラティリティよりも大きくなる)を考慮することで、静的TPの場合よりも修正からより多くの利益を得られる可能性が高くなります。とにかく、テイクで決済しなければ、トロールが仕事をしてくれるので、逃した利益分だけを失うことになるのだが......。

うっ...こんなにキーボードをクリックしたのは久しぶりです・・・。

したがって、この提案はそれ自体で成立する。関数のパラメータを渡す際に、TimeFrameも渡すようにする。そして、それに基づいてATR値からテイクを計算します。

しばらく実験して、M5 TFについて調べた結果、ATRによる最適なテイクプロフィットはATR*45000で計算されるという結論に達し、私の計算ではそうしました。このような値では、市場はほとんど常にテイクを時間内に「キャッチ」する。

//+------------------------------------------------------------------+
//|                  Take from ATR                                   |
//+------------------------------------------------------------------+
double TakeProfitATR (int tf)
  {
   double   atr   =iATR(NULL,tf,14,0);
   double   mltp  =15000;
   if (tf==1) mltp=15000;
   if (tf==5) mltp=45000;
   double   tp    =MathRound(atr*mltp);
   return  (tp);
  }

もちろん、機能は未完成ですが、テストには十分です(今はM5をテストしています)...。ちなみに、入力値=1では、保留注文の設定にかなり良い距離感が得られます。

機能で見れるといいのですが・・・。:)

とにかくありがとうございます。上記を得るためだけに改造したことを考えると、かなり満足です...。
ZS...修正アイコンに色を付けてくれると嬉しいのですが...。(本当はすでに追加しているのですが)...。

 

ここで質問ですが、BCは大量のトレードを どのように処理しているのでしょうか?私のExpert Advisorは29分ごとにポジションを開いています(5つのストラテジーのうち1つだけ)。そして、エクイティが5%増加した時点で、すべてまとめてクローズする。主に、3〜5日ごとに残高が5%ずつ増えていきます。

BCはこのような取引にクレームをつけることはないのでしょうかね。