[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 434

 
過去の 注文データを用いて、最小株主資本を算出することは可能ですか?
 
forexnew:
注文のヒストリカルデータを使用して、最小エクイティを計算することは可能ですか? 。


ひとつだけ理解してほしいのは、「過去の 注文データ」には何が指定されているのか、ということだ。選択した注文の利益か損失か、終値に興味があるのでは...?だからなんだ注文履歴には、注文が市場に出ているときの口座の純資産額(現在の損失額)は表示されません。例えば、終値での損失が500通貨単位であっても、注文履歴には表示されますが、注文が市場に出ているときの純資産額は-1000通貨単位に減少している可能性があります。注意:ストラテジーテスターは、株式に対する損失を計算しています。

質問の答え:できません。

 
LOA:

ごきげんよう。

プロフェッショナル・ヘルプ - あなたなしではどこにも行かない!

私はすでにこの問題に対処していますが、エラーを発見していない、私は本当に自分自身でそれを理解したかった、私は数日間頭を悩ませたが、今のところあまり経験がない。

前回の議論では、おそらく私が使おうとしているそれらの指標のコードに原因があるのだろうということで終わりました。

ME_Proboy_F5の内訳を表示するインジケータを書きました(最初の一歩です)

問題は......。新しいバーが形成されても再描画されず、ティックを受信した後、最後のバーでゼロにリセットされるインジケータです。t fを変更したり、プロパティを表示すると再描画されます。

このインジケータは他のインジケータにデータを要求しますが、ME_Proboy_F_5(私もそのコードを配置します)以外はすべて正常に動作します。2番目のインジケータも同様にエラーが見つかりません。インジケータは再描画されますが、遅い、つまり2回目の再起動で正しく表示されます(FFまたはディスプレイのプロパティを変更します)。

是非ともご協力をお願いします。

Proboy_Order_F5-これは私が尋ねる主要な指標である。

ME_Proboy_F5 - 怪しいのは2番目。


何度もしつこく質問して申し訳ないのですが、どうしても真相を知りたいのです。

関数limit=MathMin(Bars-1, Bars-counterd_bars-1)を適用しても問題は解決しませんでしたが、私は勧告を受けて、プログラミングスタイルに取り組み、不要な変数を取り除き、それが機能したことを願っています。

問題の本質は上記を参照

ファイル:
 
Roman.:


ひとつ理解しておいていただきたいのは、「過去の注文データ」には何が指定されているのか、ということです。選択した注文の終値、利益または損失に興味がありますか...?それがどうした?注文履歴には、注文が市場に出ているときの口座の純資産額(現在の損失額)は表示されません。例えば、終値での損失が500通貨単位であっても、注文履歴には表示されますが、注文が市場に出ているときの純資産額は-1000通貨単位に減少している可能性があります。注意:ストラテジーテスターでは、株式損失が計算されます。

質問の答え:できません。

ただし、過去のデータからなんとなくエクイティが算出されるような指標https://c.mql5.com/mql4/forum/2010/11/Equity_v7.zip がある。どうすればいいのか、まだわかっていません。おそらく、エクイティはキーポイント(オーダークローズ)をもとに計算できるのでしょうが、一つの計算式の形としてはどうなのでしょうか?

 

以下は、時間経過後に注文を削除するという条件のコードで、このような条件になっています。

MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber

では、なぜこの条件を最初のif演算子に挿入すると、その中にある他の演算子はこの条件を考慮しないのでしょうか?

つまり、このコードは機能せず、保留中の注文を すべて一度に削除してしまうのです。

  for(int counter=0;counter<OrdersTotal();counter++)
    {
    if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES) == false) break;

    if(MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
      if(OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP)
        {
        OrderDelete(OrderTicket());
        }
        
      }
    }

そして、このコードは動作し、注文を一度に削除することはありません。

  for(int counter=0;counter<OrdersTotal();counter++)
    {
    if(OrderSelect(counter,SELECT_BY_POS,MODE_TRADES) == false) break;

    if(MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber) //Если текущее время больше чем время истечения
      {
        
        
      if(OrderType() == OP_BUYLIMIT || OrderType() == OP_SELLLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLSTOP && MyCurrentTime >= OrderExpiriation && OrderMagicNumber() == MagicNumber)
        {
        OrderDelete(OrderTicket());
        }
        
      }
    }
 
sss2019:

以下は、時間経過後に注文を削除するという条件のコードで、このような条件になっています。

では、なぜこの条件を最初のif演算子に挿入すると、その中にある他の演算子はこの条件を考慮しないのでしょうか?

つまり、このコードは機能せず、保留中の注文をすべて一度に削除してしまうのです。

そして、このコードは動作し、注文を一度に削除することはありません。

どちらのコードも正しくないので、あなたのコードを分析しても、何が正しいのか/間違っているのかがわかりません。

最も単純な例で考えてみましょう。削除が必要な注文が2件あります。

1)for(int counter=0;counter<OrdersTotal();counter++)

の始まりは2以下であり、1次を安全に削除することができます。

2)

 for(int counter=0;counter<OrdersTotal();counter++)

counter = 1なのに、オーダーが1つしか残っていない!条件(1<1)が満たされていないことになり、ループが終了してしまう...。

 
ilunga:

なお、どちらのコードも未補正なので、何が正しいのか/間違っているのかはわかりません。

最も単純な例で考えてみましょう。2つの注文があり、両方とも削除する必要があります。

1)for(int counter=0;counter<OrdersTotal();counter++)

良い0が2未満で、最初の注文が正常に削除されましたが、その後

2)

counter = 1 であるが、残りオーダーは1つ!条件(1<1)が満たされないので、ループが終了してしまう...ということだ。


いいえ、でもそれが問題で、この時点ではすべての注文をきれいに削除しています。問題は、すぐに削除してしまうことです。
 
LOA:

こんにちは。

ME_Proboy_F5の内訳を明確に示すインジケータを書きました(これは私の最初のステップです)。


初めの一歩が良かったですね、オルガ・アレクサンドロヴナさん。330行のコード

 
forexnew:

ただし、過去のデータからなんとなくエクイティが算出されるような指標https://c.mql5.com/mql4/forum/2010/11/Equity_v7.zip がある。まだメソッドを理解していない。 おそらく、エクイティは重要な瞬間(オーダークローズ)をもとに計算できるのでしょうが、計算式の形としてはどのようなものでしょうか?




EQUITYとBALANCEの概念とその違いについて理解する。

このインジケータは、リアルタイムでエクイティラインを表示します。エクイティラインは未決済ポジションの現在の損益であるため、「キーポイント(注文の決済)で本当にエクイティを決定することが可能」-不可能なので、決済したポジションのエクイティラインの変化を検討することになるのです。

"エクイティは過去のデータに基づいて何とか計算している" - いいえ。この指標は、市場のオープンポジションによって、現時点でのエクイティラインを計算します。

 

こんばんは!Sさんのチュートリアルにこんなのがありました。コバレフさん、でもMT4のターミナルでは「ウフフ」しかないんですよ。お願いします、アドバイスください、私がずっとコンピュータを見続ける必要がないように、異なる操作のための音信号のセットをどこで借りられるか知っている人?ヒントになりそうなことをありがとうございます

   switch(Mess_Number)                 // Elegir texto del mensaje segun el numero 
     {
      case 1:
         Graf_Text="Closed order Buy "+ Number;
         PlaySound("Close_order.wav");                              break;
      case 2:
         Graf_Text="Closed order Sell "+ Number;
         PlaySound("Close_order.wav");                              break;
      case 3:
         Graf_Text="Deleted pending order "+ Number;
         PlaySound("Close_order.wav");                              break;
      case 4:
         Graf_Text="Opened order Buy "+ Number;
         PlaySound("Ok.wav");                                       break;
      case 5:
         Graf_Text="Opened order Sell "+ Number;
         PlaySound("Ok.wav");                                       break;
      case 6:
         Graf_Text="Placed pending order "+ Number;
         PlaySound("Ok.wav");                                       break;
      case 7:
         Graf_Text="Order "+Number+" modified into the market one";
         PlaySound("Transform.wav");                                break;
      case 8:
         Graf_Text="Reopened order "+ Number;
         PlaySound("Bulk.wav");                                     break;
      case 9:
         Graf_Text="Partly closed order "+ Number;
         PlaySound("Close_order.wav");                              break;
      case 10:
         Graf_Text="New minimum distance: "+ Number;
         PlaySound("Inform.wav");                                   break;
      case 11:
         Graf_Text=" Not enough money for "+
         DoubleToStr(Value,2) + " lots";
         Color_GT=Red;
         PlaySound("Oops.wav");                                     break;
      case 12:
         Graf_Text="Trying to close order "+ Number;
         PlaySound("expert.wav");                                   break;
      case 13:
         if (Number>0)
            Graf_Text="Trying to open order Sell..";
         else
            Graf_Text="Trying to open order Buy..";
         PlaySound("expert.wav");                                   break;
      case 14:
         Graf_Text="Invalid password. EA doesn't function.";
         Color_GT=Red;
         PlaySound("Oops.wav");                                     break;
      case 15:
         switch(Number)                 // Elegir texto del mensaje segun el numero del error 
           {
            case 2:   Graf_Text="Common error.";                    break;
            case 129: Graf_Text="Wrong price. ";                    break;
            case 135: Graf_Text="Price changed. ";                  break;
            case 136: Graf_Text="No prices. Awaiting a new tick.."; break;
            case 146: Graf_Text="Trading subsystem is busy";        break;
            case 5 :  Graf_Text="Old version of the terminal.";     break;
            case 64:  Graf_Text="Account is blocked.";              break;
            case 133: Graf_Text="Trading is prohibited";            break;
            default:  Graf_Text="Occurred error " + Number;//otros errores 
           }
         Color_GT=Red;
         PlaySound("Error.wav");                                    break;
      case 16:
         Graf_Text="Expert Advisor works only for EURUSD";
         Color_GT=Red;
         PlaySound("Oops.wav");                                     break;
      default:
         Graf_Text="default "+ Mess_Number;
         Color_GT=Red;
         PlaySound("Bzrrr.wav");                    
     }