[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 113

 
r772ra:

ポジションを循環させる

本当にありがとうございます!これから全部試してみます! ありがとうございました。
 
r772ra:

ポジションを循環させる

試してみたが、うまくいかなかった。だから、はい、見つかります。しかし、問題は次のような状況になることです。

例えば、01.01にポジションを建てたが、条件が発動したのは02.01のみ。つまり、マイナス側の注文の始値から、2日目に50pips抜いたことになる。条件を満たした場合、アクションが実行されます。そしてアクションは、取引を1/3減らすことです。 つまり、取引量を3分の1に減らすことです。 しかし、アクションはロットが完全にクローズされるまで機能します。何らかのフラグを立てることができる。 b=0であれば、アクションは成立する。そして、動作終了時にb=1。一日の終わりにフラグをNULLにしなければ、取引は一度実行され、履歴でテストするとそれでおしまいです。フラグをゼロにすると、フラグがゼロになると同時に、アクションは再び注文を減らし始め、完全に閉じるまで、注文を減らすことになります。最初にオープンした取引量とその後変更した 取引量を比較できるかと思いましたが、比較すると必ず同じになります。ロット数を減らせば、口座内の資金量も減るので、当初の数量は再計算されます。すなわち、それはまた、3日目のために思うことではありません。全く分からないのですが、他に何かアイデアはありますか?

 
Boneshapper:

こんにちは。

プロフェッショナルの皆様、アドバイスをお願いします。

価格がこの注文の建値より50pips上回る場合、この注文は修正されなければなりません。

OrderSelect(0, SELECT_BY_POS,MODE_TRADES);

double OPEN =OrderOpenPrice();
double maximus = OPEN + 0.00500;
アラート(「maximus = ",maximus」)。
double minimus = OPEN - 0.00500;
RefreshRates()。//データを更新する。
timecur = TimeToStr(TimeCurrent(),TIME_SECONDS); //現在時刻をHH:MM形式で計算する。
if ((timecur > "00:00:00" && (timecur < "22:58:00") && (Deal_s == 1) && (Deal_bb == 0)&& (Bid > maxus)))
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES);
Lootup = OrderLots () * 0.34;
Lootdown = OrderLots () * 0.34;
OrderClose(OrderTicket(), Lootdown, Ask, 10, CLR_NONE);
アラート(GetLastError())。
Deal_bb = 1;
}

日中の出来事であれば、できるようになっています。数日後に閉じるまで、始値+50Pが各ロットの価格によってコントロールされているかどうかを確認する方法を教えてください。

弦の時間を計って、弦で計測するんですね、オリジナル!!!!
何も工夫する必要はありません。まず時間分解能を確認し、その後トレーリングオーダーをするだけです。どちらも実績のあるソリューションは、こちらと こちらを ご覧ください。

 
Boneshapper:

試してみたが、うまくいかなかった。動作はするのですが、問題は、それが見つからないことです。しかし、問題は次のような状況になることです。

例えば、01.01に取引を開始しましたが、条件が発動するのは02.01のみです。つまり、マイナス側のワラントの開始価格から、2日目に50pips通過しています。条件を満たした場合、アクションが実行されます。そしてアクションは、取引を1/3減らすことです。 つまり、取引量を3分の1に減らすことです。 しかし、アクションはロットが完全にクローズされるまで機能します。何らかのフラグを立てることができる。 b=0の場合、アクションがある。そして、動作終了時にb=1。一日の終わりにフラグをNULLにしなければ、取引は一度実行され、履歴でテストするとそれでおしまいです。フラグをゼロにすると、フラグがゼロになると同時に、アクションは再び注文を減らし始め、完全に閉じるまで、注文を減らすことになります。最初にオープンした取引量とその後変更した取引量を比較できるかと思いましたが、比較すると必ず同じになります。ロット数を減らせば、口座内の資金量も減るので、当初の数量は再計算されます。すなわち、それはまた、3日目のために思うことではありません。全く分からないのですが、他に何かアイデアはありますか?

日数は関係あるのか?欲しいものを書くだけで、アルゴリズムがアドバイスされます。日数を確認するのではなく、注文の損益を確認して、そこから選んだ方が良いように思います。50(またはそれ以上)pipsが重要なのでは...。

 
TarasBY:

文字列に時間を入れて、文字列で計測する、それがオリジナルです。
何も工夫する必要はありません。まず時間分解能を確認し、あとはオーダーをトレールするだけです。どちらも実績のあるソリューションは、こちらと こちらを ご覧ください。

お返事ありがとうございました。まさに私が必要としているものへのリンクを教えていただきました。これから試してみますが、うまくいきそうです。

バグについては申し訳ないのですが、私はプログラミングを始めたばかりで、まだあまり得意ではありません。

 
artmedia70:

日間と何か関係があるのでしょうか?欲しいものを書けば、アルゴリズムを教えてくれる。日数ではなく、注文の損益を確認し、それに依存したほうがよさそうです、50(ポイント)は自分にとって重要ですから......。

はい、おっしゃるとおりです。私の損益が頼りです。TarasBYは、まさに私が必要としていることを指摘してくれました。これから調べてみます。

ご丁寧にありがとうございました

 

フラクタルを検索するためのキム関数があれば教えてください。

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
一定期間のフラクタルの数を数える関数と同じものを書くにはどうしたらよいのでしょうか。
 
berezhnuy:

フラクタルを見つけるためのキム関数があるかどうか教えてください。

一定期間のフラクタルの数を数える関数と同じ書き方をするには、

こんな感じです。

void fGet_ExtremumsZZPrice (string fs_Symbol,           // инструмент
                            int fi_TF,                  // таймфрейм
                            datetime fdt_TimeControl,   // время, до которого ищем экстремумы
                            int fi_ExtDepth = 12,       // ExtDepth         
                            int fi_ExtDeviation = 5,    // ExtDeviation
                            int fi_ExtBackstep = 3)     // ExtBackstep
{
    double ld_Value, lda_Extremum[];
    int    li_size = iBarShift (fs_Symbol, fi_TF, fdt_TimeControl), li_IND = 0;
//---- 
    for (int li_Bar = 1; li_Bar < li_size; li_Bar++)
    {
        ld_Value = iCustom (fs_Symbol, fi_TF, "ZigZag", fi_ExtDepth, fi_ExtDeviation, fi_ExtBackstep, 0, li_Bar);
        if (ld_Value != 0.)
        {
            ArrayResize (lda_Extremum, li_IND + 1);
            lda_Extremum[li_IND] = ld_Value;
            li_IND++;
        }
    }
//---- 
}

現在時刻から Time_Control までの ZigZag の極値を配列で収集する。

 
新しいフラクタルか古いフラクタルかを確認する機能を提案していただけませんか?
 
berezhnuy:
新しいフラクタルか古いフラクタルかを確認する機能を提案していただけませんか?

ここで、「便利な機能」というトピックに行き、「銀の皿に載せて」持ってきたのです。

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 07.10.2006                                                      |
//| Описание : Поиск ближайшего фрактала.                                      |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//|   sy - наименование инструмента     (NULL - текущий символ)                |
//|   tf - таймфрейм                    (  0  - текущий ТФ)                    |
//|   mode - тип фрактала               (MODE_LOWER|MODE_UPPER)                |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
元気に生きて、元気に使う!いろんな種類があるんですねー。聞かなくても、待たなくても、ただ受け取って、使うだけでいいんです