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

 
Urain:

MathRandは使用前にMathSrand()で初期化 する必要があります。

で、MathSrand()のパラメータとしてTimeLocal()を渡すことをお勧めします。

初期化が一度必要で、その後32768クエリでMathRand()が検出されない。

その後、新しいシーケンスが必要な場合は再度初期化することができますが、そうでない場合は同じことが起こります。

もちろん、各ステップごとに初期化することも可能ですが、初期化パラメータが変化することを監視する必要があります。

でなければ、同じシーケンスになります。


それが私の仕事です。タイムロッカルとは?

同じネタで同じセットを持っています。

 
誰かヒントください3回目 書いても誰も答えてくれない...AccountEquity() ONE BAR ABOVE (on past bar) HOW TO WRITE?
 
vlad123:


それが私の仕事です。タイムロッカルとは?

同じネタで同じセットを持っています。


教科書に載っている例

datetimeTimeLocal()

この関数は、ローカルコンピュータの時刻を、1970年1月1日00:00からの経過秒数で返します。
注:テスト時には、ローカル時刻は シミュレートされ、シミュレートされた最終既知のサーバー時刻と一致します。

MathSrand(TimeLocal());
  // Отображает 10 чисел.
  for(int i=0;i<10;i++ )Print("произвольная величина ", MathRand());

 
sllawa3:
どなたかアドバイスをお願いします。...AccountEquity() ONE BAR ABOVE (過去のバー) How to WRITE?

答え:まさか
AccountEquity() は、持分額を返すものであり、バー数には 依存しない。
バーの履歴をロールバックするだけでは、その前の値を知ることはできない。
その値は、オープン/クローズ、利益が出ている/損失が出ている取引の数によって決まります。
資本の履歴」を記録するには、静的配列を作成し、例えば、バーが開くごとに AccountEquity() の値をその中に記録します。
そのため、エクイティの変更履歴を取得するためには、配列をスクロールする必要がある。

 
sllawa3:
誰かヒントください...AccountEquity() ONE BAR ABOVE (過去のバーの場合) How to WRITE?

例えばこのように、新しいバー ごとに変数に格納する必要があるようです。

1. init()関数で、EquAkk=AccountEquity()といった変数に、株式の初期値を格納する。

2. 新しいバーの出現を確認(もちろん init ではありません ), if yes, then
{
LastEqu=EquAkk; // 変数に過去の (私たちが必要とする) 純資産値を格納
EquAkk=AccountEquity(); // 新しい純資産値 (次の「過去の」値に対して) を記録
}

従って、変数LastEqu には過去のバーに対する純資産値が格納され、次のバーが開かれると再びその値が上書きになる ...ということです。

...勝手に書いて、確認もせず、もう寝てしまったので、あまり蹴らないでください...。
表現したつもりなのですが・・・。

 
ToLik_SRGV:

答え:まさか
AccountEquity() は、持分額を返すものであり、バー数には依存しない。
バーの履歴をロールバックするだけでは、その前の値を知ることはできない。
その値は、オープン/クローズ、利益が出ている/損失が出ている取引の数によって決まります。
資本の履歴」を記録するには、静的配列を作成し、例えば、バーが開くごとに AccountEquity() の値をその中に記録します。
従って、配列をスクロールさせることで、株式の変動履歴を取得することが可能である。



であれば、まだ
 
sllawa3:
であれば、まだ


さて、同じことを書いたのですが、変数ではなく、配列を使うことを提案しました。

資本の履歴」を記録するためには、例えば、静的配列を作成し、そこに各バーの開始時などに AccountEquity() の値を記録する必要があります。
従って、エクイティの変更履歴は、配列をスクロールして取得する必要がある。

 
みんな、チャートに矢印を設定する方法がわからないんだ。一つは過去80日間の最高値のバー、もう一つは同じ80日間の最安値のバーだ。このコードを作成したのですが、矢印がクラスターで投げられてしまいます...。過去80日間の各バーの 最小値と最大値に1つの矢印が必要で、次に次の80日分などです。ヒントを教えてください。
//====================================================================================
   int      NBars,MostHiBar, MostLoBar;
   double   MostHiPrice,MostLoPrice;
   datetime TMostHiBar,TMostLoBar;
   
//-----------------------------------------------------------------
   NBars       = 80;
   MostHiBar   = iHighest(NULL,PERIOD_D1,MODE_HIGH,NBars,0);      // Номер "максимального" бара
   MostLoBar   = iLowest (NULL,PERIOD_D1,MODE_LOW, NBars,0);      // Номер "минимального" бара
   MostHiPrice = iHigh   (NULL,PERIOD_D1,MostHiBar);              // Цена  "максимального" бара
   MostLoPrice = iLow    (NULL,PERIOD_D1,MostLoBar);              // Цена  "минимального" бара
   
   TMostHiBar  = iTime   (NULL,PERIOD_D1,MostHiBar);              // Время открытия "максимального" бара
   TMostLoBar  = iTime   (NULL,PERIOD_D1,MostLoBar);              // Время открытия "минимального" бара

   Comment (
            "\n", 
            "Наибольшая цена за ", NBars, " дней = ", MostHiPrice, "\n",
            "Наименьшая цена за ", NBars, " дней = ", MostLoPrice, "\n",
            "Время наибольш. бара = ", Time[MostHiBar], "\n",
            "Время наименьш. бара = ", Time[MostLoBar]   // сюда пробовал и TMostLoBar вставлять - пофигу...           
           );
           
   SetArrow(241, MediumSpringGreen, "", Time[MostHiBar], High[MostHiBar], 0);
   SetArrow(242, OrangeRed, "", Time[MostLoBar], Low[MostLoBar], 0);
//====================================================================================
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка значка на графике, объект OBJ_ARROW.                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm="", datetime t1=0, double p1=0, int sz=0) 
{
  if (nm=="") nm=DoubleToStr(Time[0], 0);
  if (t1<=0) t1=Time[0];
  if (p1<=0) p1=Bid;
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);
  ObjectSet(nm, OBJPROP_TIME1    , t1);
  ObjectSet(nm, OBJPROP_PRICE1   , p1);
  ObjectSet(nm, OBJPROP_ARROWCODE, cd);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//====================================================================================
 
教えていただきたいのですが、MTでストップでポジションを建てる ことは可能でしょうか?例えば、サポート/コーポレーションの後ろにストップを置き、突破されたらストップがポジションを開く。
 
Craft:
教えていただきたいのですが、MTでストップでポジションを建てることは可能でしょうか?例えば、サポート/ソープの後ろにストップを置き、貫通したらストップでポジションをオープンする。 。

もちろんです。ただ、これはストップではなく、ペンディングオーダーと 呼ばれるものです。端末を開く。その中でF1キーを押す。表示されたウィンドウで、「コンテンツ」-「取引」-「オーダータイプ」を開きます。