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

 
tpg_k156:
皆さん、ごきげんよう。メタトレーダー4でトレードをコピーする方法を教えてください。そのため、ある端末で取引を開始すると、別の端末でも未決済の取引を取得することができます。

CodeBaseで コピー機を探す。もちろんベストではありませんが、自由に利用できます
 
Hour()、Minute()、Seconds()をグローバル変数にして、DailyPivotPointsインジケータを0時(0.00)に新しいPPレベルや他の行への変更をEAから制御することは可能でしょうか? 以前はHour(), Minute(), Seconds() で直接インジケータ内でやっていて、毎晩コンパイルしなくてもうまくいってました。しかし、最近、ビルドの変更からか、勝手に変更されなくなった?ありがとうございます。
 
borilunad:
Hour()、Minute()、Seconds()をグローバル変数にして、DailyPivotPointsインジケータを0時(0.00)に新しいPPレベルや他の行への変更をEAから制御することは可能でしょうか? 以前はHour(), Minute(), Seconds() で直接インジケータ内でやっていて、毎晩コンパイルしなくてもうまくいってました。しかし、最近、ビルドの変更からか、勝手に変更されなくなった?ありがとうございます。

新しい日の最初のティックで動作するはずです。
 
borilunad:

ビクターさん、ありがとうございました。私のショートバージョンは役に立ちましたか?


はい、ボリス さん、とても良いですよ!ちなみに。ありがとうございました。それが私の望みでした。捻じ曲げた... 捻じ曲げた...うまくいかなかったんです。まだ経験が少ないし、脳がプロのように考えているわけでもない。ちょっと行き詰まりましたね。:(

最初は聞きたくなかったけど、聞くしかなかったんです。自分で短くすることができなかったからです。

 
フラクタルを通過するチャネルを構築する方法を教えてください。ただし、0バーに制限され、新しいバーが 表示されるとさらに再描画されます。問題なのはその制限です。
 
beginner:
フラクタルを通過するチャネルを構築する方法を教えてください。ただし、0バーに制限され、新しいバーが表示されるとさらに再描画されます。問題なのはその制限です。

0barで制限される」という概念を説明する。
 

以下はその機能です。

bool IsUpFractal(int index)
{
   double centerHigh = High[index + g_center];     // За точку отсчета берется средний..
                                                   // ..бар на участке из i_fractalPeriod
                                                   // ..баров
// - 1 - == Поиск максимумов справа от центрального бара ================================
   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
      if (centerHigh <= High[i])                   // ..максимумом. Не позволяется..
         return (false);                           // ..наличие баров с большим или..
      cnt++;                                       // ..равным максимумом.
   }
   
   if (i < 0)                                      // g_center-1 низших максимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 1 - == Окончание блока =============================================================

// - 2 - == Поиск максимумов слева от центрального бара =================================
   cnt = 0;
   i = index + g_center + 1;
   int total = Bars - 1;
   for (; i < total && cnt < g_center; i++)        // Слева от центрального бара должно
   {                                               // ..быть g_center-1 баров с низшим..
      if (centerHigh == High[i])                   // ..максимумом. Не позволяется..
         continue;                                 // ..наличие баров с большим..
      if (centerHigh < High[i])                    // ..максимумом. Равный - позволяется
         return (false);
      cnt++;                                    
   }
   
   if (i >= total)                                 // g_center-1 низших максимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 2 - == Окончание блока =============================================================
                                                   
   return (true);                                  // Фрактал найден                 
}
//+-------------------------------------------------------------------------------------+
//| Определение наличия нижнего фрактала на указанном баре                              |
//+-------------------------------------------------------------------------------------+
bool IsDnFractal(int index)
{
   double centerLow = Low[index + g_center];       // За точку отсчета берется средний..
                                                   // ..бар на участке из i_fractalPeriod
                                                   // ..баров
// - 1 - == Поиск минимумов справа от центрального бара =================================
   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)           // Справа от центрального бара должно
   {                                               // ..быть g_center-1 баров с большим..
      if (centerLow >= Low[i])                     // ..минимумом. Не позволяется..
         return (false);                           // ..наличие баров с меньшим или..
      cnt++;                                       // .. равным минимумом
   }
   
   if (i < 0)                                      // g_center-1 больших минимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 1 - == Окончание блока =============================================================

// - 2 - == Поиск минимумов слева от центрального бара ==================================
   cnt = 0;
   i = index + g_center + 1;
   int total = Bars - 1;
   for (; i < total && cnt < g_center; i++)        // Слева от центрального бара должно
   {                                               // ..быть g_center-1 баров с большим..
      if (centerLow == Low[i])                     // ..минимумом. Не позволяется..
         continue;                                 // ..наличие баров с меньшим минимумом
      if (centerLow > Low[i])                      // ..Равный минимум - разрешается
         return (false);
      cnt++;   
   }
   
   if (i >= total)                                 // g_center-1 больших минимумов не..
      return (false);                              // ..найдено. Фрактала нет
// - 2 - == Окончание блока =============================================================
                                                   
   return (true);                                  // Фрактал найден                 
}

この関数は、0か1を計算するためのバー値を持つインデックス 値を取得します。ここで、ループが面白いように書かれています..:

for (; i >= 0 && cnt < g_center; i--)

つまり、計算の起点となる変数値が存在しない。機械のロジックによると、この場合、どのバーから計算を開始するのでしょうか?i--の デクリメントがあれば、最大値から?

ここでもi = index + g_center - 1と なりますが、ここでポイントが あります。どのような価値のあるインデックスが最初にここに来るのでしょうか?最大か最小か?

 
hoz:

つまり、計算の起点となる変数値がないのです。機械のロジックでは、どのバーから計算を始めるのでしょうか? iの デクリメントがあった場合、それは最大値なのでしょうか?


いいえ、サイクル前に持っていた変数の値からです。エントリー

   int cnt = 0, i = index + g_center - 1;
   for (; i >= 0 && cnt < g_center; i--)

は同じです。

   int cnt,i;
   for (cnt = 0, i = index + g_center - 1; i >= 0 && cnt < g_center; i--)
 
つまり、forループの最初の式は、その場所に書いても、ループの前に書いても、結果は同じである。
 
hoz:

ここでも、i = index + g_center - 1 なるが、ここポイントで ある。ここに来るインデックスの最初の 値は何でしょうか?最大か最小か?


インデックスには、パラメータとして関数に渡された値が使われます。