[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 28 1...212223242526272829303132333435...432 新しいコメント Роман 2012.12.21 14:30 #271 Dimka-novitsek: 点滅したり、断続的になったり、要するに完全にレーザーのようなものです。 カッコイイ! 質問ですが、教科書のトラロープを最初から 最後まで分解してください。きっと答えが見つかるはずです! そして、一般的に、車輪を再発明する必要はありません、トレーラーを参照してください、Y.Dzyubanからトロールのライブラリがあります。すべて動作確認済みです。トロールの種類をお好みに合わせて編集して、完成です。 ファイル: trailingfunclib.mq4 59 kb trailingfunclib.ex4 45 kb trailingexperts.zip 113 kb Dimka-novitsek 2012.12.21 14:31 #272 ありがとうございます!!!! 削除済み 2012.12.21 17:25 #273 Roll:<Ctrl+D> です。 なぜ表示されないのですか? Алексей Тарабанов 2012.12.21 17:45 #274 ショートネームは、追加ウィンドウに表示されているインジケーターにしか割り当てることができないためです。正確には、どのインジケータにも割り当てることを誰も禁止していないが、0番目のウィンドウについては、ターミナルのどのウィンドウにもこの名前を表示する規定がない。 削除済み 2012.12.21 17:50 #275 tara: ショートネームは、追加ウィンドウに表示されているインジケーターにしか割り当てることができないため。 正確には、どのインジケータにも割り当てることを誰も禁止していないが、0番目のウィンドウについては、ターミナルのどのウィンドウにもこの名前を表示する規定がない。 あんがと subus 2012.12.22 02:47 #276 ディムカを見たよ!TOҮOTA-BBに乗ってるんだ。そのベラルーシの友人に、「may, may not」という質問を伝えてほしいと頼まれた。聞く必要はありません。 TarasBY 2012.12.22 09:31 #277 villy: ディムカを見たよ!TOҮOTA-BB に乗っている。という質問を、ベラルーシの友人に伝えてほしいと頼まれた。聞く必要はありません。 "BB "は14年前からBabyBaby?! 。 subus 2012.12.22 09:50 #278 友達に聞いてください!間違えて削除しちゃいました!私がザワークラウト嫌いなの知ってますよね、勘違いしちゃいました。 Виктор 2012.12.22 12:56 #279 返書 42 laveosa 2012年12月22日 14:46|禁止|削除 ここで、とても不思議なケースがあるんです。2004年から2012年までの履歴でアドバイザーをテストしているのですが、結果は1つでプラス、次に2009年から2012年までの期間でテストをすると全く違っています。もしかしたら、それが何であるか知っていますか? ありがとうございました。) Viktar Dzemikhau 2012.12.22 16:23 #280 ジグザグインジケーターから値を抽出する方法を教えてください。一般的にはどのように実装されているのでしょうか?I.e.最後の1つだけでなく、ある極限を拾い上げたい場合。例えば、このジグザグをExpert Advisorに付けたいとします。#property copyright "Scriptong" #property link "http://autograf.dp.ua" #property indicator_chart_window // Индикатор выводится в окне графика #property indicator_buffers 1 // используется 1 буфер индикатора #property indicator_color1 Blue // Цвет отображения данных 1-го буфера #property indicator_width1 1 // Толщина линий 1-го буфера double ZZBuf[]; // Буфер экстремумов double UpDnBuf[]; // Буфер признака текущего тренда #define NO_TREND 0 // Нет тренда #define TREND_UP 1 // Восходящий тренд #define TREND_DOWN -1 // Нисходящий тренд //+-------------------------------------------------------------------------------------+ //| Custom indicator initialization function | //+-------------------------------------------------------------------------------------+ int init() { IndicatorBuffers(2); // - 1 - == Проверка корректности значений настроечных параметров индикатора ============ string name = WindowExpertName(); // - 1 - == Окончание блока ============================================================= // - 2 - == Связывание буферов с индексами, определение стилей ========================== SetIndexBuffer(0, ZZBuf); // Первый буфер - экстремумы SetIndexStyle(0, DRAW_SECTION); // В виде линии между непустыми.. // ..значениями SetIndexBuffer(1, UpDnBuf); // Второй буфер - признак тренда SetIndexStyle(1, DRAW_NONE); // Не отображается // - 2 - == Окончание блока ============================================================= return(0); } //+-------------------------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+-------------------------------------------------------------------------------------+ int deinit() { return(0); } //+-------------------------------------------------------------------------------------+ //| Определение индекса бара, с которого необходимо производить перерасчет | //+-------------------------------------------------------------------------------------+ int GetRecalcIndex() { int counted_bars = IndicatorCounted(); if (counted_bars == 0) // Кол-во посчитанных баров - 0. Будут { // ..пересчитаны все буфера с самого.. ArrayInitialize(ZZBuf, EMPTY_VALUE); // ..начала. Очистка буферов ArrayInitialize(UpDnBuf, 0); return(Bars - 2); // Начинаем со второго бара истории } return(Bars - counted_bars - 1); // Начинаем с нового бара } //+-------------------------------------------------------------------------------------+ //| Определение тенденции по соотношению указанной и предыдущей свечей | //+-------------------------------------------------------------------------------------+ int GetTrend(int index) { // - 1 - == Закрытие новой свечи выше максимума предыдущей ============================== if (Close[index] > High[index+1]) return(TREND_UP); // Рост // - 1 - == Окончание блока ============================================================= // - 2 - == Закрытие новой свечи ниже минимума предыдущей =============================== if (Close[index] < Low[index+1]) return(TREND_DOWN); // Падение // - 2 - == Окончание блока ============================================================= return(NO_TREND); // Если свеча не пробита - нет тренда } //+-------------------------------------------------------------------------------------+ //| Поиск последнего элемента ZZBuf с непустым значением | //+-------------------------------------------------------------------------------------+ int GetLastIndexNoEmptyValue(int index) { while (ZZBuf[index] == EMPTY_VALUE && index < Bars)// Поиск по графику справа налево index++; // Пока не будет найден экстремум или // ..пока не достигнем конца истории return(index); // Индекс бара с непустым значением.. // ..зиг-зага } //+-------------------------------------------------------------------------------------+ //| Сравнение последнего максимума с новым максимумом | //+-------------------------------------------------------------------------------------+ void CheckHigh(int index) { int cnt = GetLastIndexNoEmptyValue(index); // Найдем последний непустой элемент.. // ..зиг-зага if (cnt == Bars) // Если элемент не найден (достигнут.. { // ..конец истории), то максимумом.. ZZBuf[index] = High[index]; // ..считается текущий максимум return; } if (High[index] > ZZBuf[cnt]) // Элемент найден. Сравним его.. { // ..значение с новым максимумом. Если ZZBuf[cnt] = EMPTY_VALUE; // ..новый максимум выше, то.. ZZBuf[index] = High[index]; // ..предыдущий максимум уничтожается, // ..а новый сохраняется } } //+-------------------------------------------------------------------------------------+ //| Сравнение последнего минимума с новым минимумом | //+-------------------------------------------------------------------------------------+ void CheckLow(int index) { int cnt = GetLastIndexNoEmptyValue(index); // Найдем последний непустой элемент.. // ..зиг-зага if (cnt == Bars) // Если элемент не найден (достигнут.. { // ..конец истории), то минимумом.. ZZBuf[index] = Low[index]; // ..считается текущий минимум return; } if (Low[index] < ZZBuf[cnt]) // Элемент найден. Сравним его.. { // ..значение с новым минимумом. Если ZZBuf[cnt] = EMPTY_VALUE; // ..новый минимум ниже, то.. ZZBuf[index] = Low[index]; // ..предыдущий минимум уничтожается, // ..а новый сохраняется } } //+-------------------------------------------------------------------------------------+ //| Смена тренда или его продолжение при отсутствии нового сигнала | //+-------------------------------------------------------------------------------------+ void TrendChange(int trend, int i) { // - 1 - == Тренд изменился с нисходящего на восходящий ================================= UpDnBuf[i] = trend; // Сохранение признака направления if (trend == TREND_UP) // Тренд изменился на восходящий { CheckLow(i); // Проверка появления нового минимума if (ZZBuf[i] != EMPTY_VALUE) // Если минимум обновлен, то максимум ZZBuf[i-1] = High[i]; // ..переносим на следующий бар else // Если минимум не обновлен, то.. ZZBuf[i] = High[i]; // ..максимум отображается на текущем return; // ..баре } // - 1 - == Окончание блока ============================================================= // - 2 - == Тренд изменился с восходящего на нисходящий ================================= CheckHigh(i); // Проверка появления нового максимума if (ZZBuf[i] != EMPTY_VALUE) // Если максимум обновлен, то минимум ZZBuf[i-1] = Low[i]; // ..отображается на следующем баре else // Если максимум не обновлен, то.. ZZBuf[i] = Low[i]; // ..минимум отображается на текущем.. // ..баре // - 2 - == Окончание блока ============================================================= } //+-------------------------------------------------------------------------------------+ //| Расчет значений индикатора | //+-------------------------------------------------------------------------------------+ void ZigZag(int limit) { for (int i = limit; i > 0; i--) // По всем новым барам { int trend = GetTrend(i); // Получение направления на баре i if (trend != UpDnBuf[i+1] && trend != 0) // Направление на текущем баре.. { // ..отличается от направления на.. TrendChange(trend, i); // ..предыдущем баре. continue; } UpDnBuf[i] = UpDnBuf[i+1]; // Направление не изменяется if (UpDnBuf[i] == TREND_UP) // Сохранение восходящего тренда { CheckHigh(i); // Обновление максимума continue; } if (UpDnBuf[i] == TREND_DOWN) // Сохранение нисходящего тренда CheckLow(i); // Обновление минимума } } //+-------------------------------------------------------------------------------------+ //| Custom indicator iteration function | //+-------------------------------------------------------------------------------------+ int start() { int limit = GetRecalcIndex(); // Определим первый расчетный бар ZigZag(limit); // Расчет значений индикатора return(0); }iCustom 関数は通常カスタムインジケータのアドレスに適用されるので、それを使えばいいのは理解できるのですが、問題はノードの接続方法です...。 1...212223242526272829303132333435...432 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
点滅したり、断続的になったり、要するに完全にレーザーのようなものです。
カッコイイ!
質問ですが、教科書のトラロープを最初から 最後まで分解してください。きっと答えが見つかるはずです!
そして、一般的に、車輪を再発明する必要はありません、トレーラーを参照してください、Y.Dzyubanからトロールのライブラリがあります。すべて動作確認済みです。トロールの種類をお好みに合わせて編集して、完成です。
<Ctrl+D> です。
なぜ表示されないのですか?
ショートネームは、追加ウィンドウに表示されているインジケーターにしか割り当てることができないためです。
正確には、どのインジケータにも割り当てることを誰も禁止していないが、0番目のウィンドウについては、ターミナルのどのウィンドウにもこの名前を表示する規定がない。
ショートネームは、追加ウィンドウに表示されているインジケーターにしか割り当てることができないため。
正確には、どのインジケータにも割り当てることを誰も禁止していないが、0番目のウィンドウについては、ターミナルのどのウィンドウにもこの名前を表示する規定がない。
あんがと
ディムカを見たよ!TOҮOTA-BB に乗っている。という質問を、ベラルーシの友人に伝えてほしいと頼まれた。聞く必要はありません。
"BB "は14年前からBabyBaby?!
。
ジグザグインジケーターから値を抽出する方法を教えてください。一般的にはどのように実装されているのでしょうか?I.e.最後の1つだけでなく、ある極限を拾い上げたい場合。
例えば、このジグザグをExpert Advisorに付けたいとします。
iCustom 関数は通常カスタムインジケータのアドレスに適用されるので、それを使えばいいのは理解できるのですが、問題はノードの接続方法です...。