警告を数秒遅らせる - ページ 2 12345 新しいコメント 削除済み 2016.03.02 23:45 #11 OnTimer() Massimo 2016.03.03 16:31 #12 eevviill さんありがとうござい ます、 でも 私の スキルは 複雑 すぎます。 私は プログラミングを始めて、 彼らは 独学で 、 いくつかのことを 理解 するのは難しいです。 マッシモ さん、 いつもありがとう ございます。 削除済み 2016.03.03 17:08 #13 omissamf: eevviill さんありがとうござい ます。 でも、私の スキルは 複雑 すぎます。 私は プログラミングを始めて、 彼らは 独学で 、 いくつかのことを 理解 するのは難しいです。 マッシモ さん、 いつもありがとう ございます。int seconds=3; int OnInit() { EventSetTimer(seconds); IndicatorBuffers(2); SetIndexBuffer(0, Buffer1); SetIndexEmptyValue(0, 0); SetIndexArrow(0, 241); SetIndexBuffer(1, Buffer2); SetIndexEmptyValue(1, 0); SetIndexArrow(1, 242); //initialize myPoint myPoint = Point(); if(Digits() == 5 || Digits() == 3) { myPoint *= 10; } return(INIT_SUCCEEDED); } //_____________________________________________ //_____________________________________________ int start() { return(0); } void OnTimer(){ //Indicator Buffer 1 if(iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) < 30 ) { Buffer1[0] = Low[0] - iATR(NULL, PERIOD_CURRENT, 14, 0); //Set indicator value at Candlestick Low - Average True Range if(0 == 0 && Time[0] != time_alert) { myAlert("indicator", "Buy"); time_alert = Time[0]; } //Instant alert, only once per bar } else { Buffer1[0] = 0; } //Indicator Buffer 2 if(iRSI(NULL, PERIOD_CURRENT, 2, PRICE_CLOSE, 0) > 70 ) { Buffer2[0] = High[0] + iATR(NULL, PERIOD_CURRENT, 14, 0); //Set indicator value at Candlestick High + Average True Range if(0 == 0 && Time[0] != time_alert) { myAlert("indicator", "Sell"); time_alert = Time[0]; } //Instant alert, only once per bar } else { Buffer2[0] = 0; } } } Massimo 2016.03.03 20:24 #14 おかげ eevviill、あなたの コードが動作 しますが、私は ろうそくを 開いた 3秒 後に信号から では ありませんが、 例えば、 RSIは ろうそくが開いている ことを 30秒後に レベル 70を超えて いる場合、 コードは まだ 3 / 2 ことができ 、その後、矢印を もたらす。 今のところ 最も近い来る コードは、私が提案した ものです GumRai 、 しかし、 私に 信号を与え、 ろうそくの 開口 部を設定 し、 3 秒 後ではない。 マッシモ、 すべてをありがとう ございました。int start(){ if (BarStart !=Time[0]) { BarStart = Time[0]; //This is the code suggested by GumRai. This works well, but the arrow appears and fixed the opening of the candle, instead of 3 seconds after its opening. 削除済み 2016.03.03 20:48 #15 しかし、私はろうそくを開いた3秒後の信号からではありません最初にそれを書くと、 "私はすべての3秒の警告を必要としない方が良い。" 削除済み 2016.03.03 20:59 #16 extern int seconds=3; int time_dif; bool current_candle_alert_been; int prev_bars; int OnInit() { prev_bars=Bars; EventSetTimer(1); time_dif=int(TimeLocal()-TimeCurrent()); ... void OnTimer() { if(Bars!=prev_bars) current_candle_alert_been=false; prev_bars=Bars; if(current_candle_alert_been) return; if(TimeLocal()-time_dif<Time[0]+seconds) return; current_candle_alert_been=true; ... Keith Watford 2016.03.03 21:50 #17 static datetime BarStart=0; static bool check=false; if(BarStart!=Time[0]) { BarStart=Time[0]; check=true; } if(check && TimeCurrent()>=Time[0]+3) { check=false; //Check Condition }これは、バーのオープン時間から 少なくとも3秒後にある最初の受信ティックでチェックする必要があります。インジケータが初期化されたときにバーがn秒開いていて、nが>3である場合、その時点でチェックされることに注意してください。また、当然ですが、ヒストリカルバーでは動作しません。 削除済み 2016.03.04 07:59 #18 GumRai:これは、バーのオープン時間から少なくとも3秒後の最初の受信ティックでチェックする必要があります。インジケータが初期化され、nが> 3であるときにバーがn秒開いている場合、それはその時点でチェックされることに注意してください。また、当然ですが、ヒストリカルバーでは動作しません。:))))1)私はアラートが、代わりにろうそくのオープニングで表示されるように、このコードを変更したいのですが、数秒後に条件を検出します。2)しかし、私はローソク 足を開いた3秒後に信号からではありません。P.S.時間[0]を使用しないでください、バーを使用 する Keith Watford 2016.03.04 08:59 #19 eevviill::))))1)私はアラートが、代わりにろうそくのオープニングで表示されるように、このコードを変更したいのですが、数秒後に条件を検出します。2)しかし、私はろうそくを開いた3秒後の信号からではありません。あなたのポイントは何ですか?eevviill。:))))P.S.時間[0]を使用しないでください、使用Barsどうしてですか?新しいバーを検出するためにTime[0]を使用することは何も問題ありません。 Massimo 2016.03.04 09:27 #20 こんにちは、皆さん、 素晴らしいです !!! 私は、あなたの協力に どのように感謝 したらよいかわかりません。 eevevillが 投稿した コードは非常によく機能する、という こと です。 GumRaiの コードは、代わりに RSIが 30/70の レベルを 越える たびに リペイントして シグナルを 出すようにして います。 eevviill さんの提案にしたがって、動作する コードを挿入して みました。 マッシモ さん、 いろいろありがとう ございました。//+------------------------------------------------------------------+ //| Test Delay.mq4 | //| Massimo | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Massimo" #property link "https://www.mql5.com" #property version "1.00" #property description "" #include <stdlib.mqh> #include <stderror.mqh> //--- indicator settings #property indicator_chart_window #property indicator_buffers 2 #property indicator_type1 DRAW_ARROW #property indicator_width1 1 #property indicator_color1 0xFFAA00 #property indicator_label1 "Buy" #property indicator_type2 DRAW_ARROW #property indicator_width2 1 #property indicator_color2 0x0000FF #property indicator_label2 "Sell" extern int seconds =3; int time_dif; bool current_candle_alert_been; int prev_bars; datetime time_alert; //used when sending alert //--- indicator buffers double Buffer1[]; double Buffer2[]; extern int Period1 = 2; double myPoint; //initialized in OnInit void myAlert(string type, string message) { if(type == "print") Print(message); else if(type == "error") { Print(type+" | Test @ "+Symbol()+","+Period()+" | "+message); } else if(type == "order") { } else if(type == "modify") { } } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { prev_bars=Bars; EventSetTimer(1); time_dif=int(TimeLocal()-TimeCurrent()); IndicatorBuffers(2); SetIndexBuffer(0, Buffer1); SetIndexEmptyValue(0, 0); SetIndexArrow(0, 241); SetIndexBuffer(1, Buffer2); SetIndexEmptyValue(1, 0); SetIndexArrow(1, 242); //initialize myPoint myPoint = Point(); if(Digits() == 5 || Digits() == 3) { myPoint *= 10; } return(INIT_SUCCEEDED); } //________________________________ int start() { return(0); } //_________________________________ void OnTimer(){ { if(Bars!=prev_bars) current_candle_alert_been=false; prev_bars=Bars; if(current_candle_alert_been) return; if(TimeLocal()-time_dif<Time[0]+seconds) return; current_candle_alert_been=true; //Indicator Buffer 1 if(iRSI(NULL, PERIOD_CURRENT, Period1, PRICE_CLOSE, 0) < 30 ) { Buffer1[0] = Low[0] - iATR(NULL, PERIOD_CURRENT, 14, 0); //Set indicator value at Candlestick Low - Average True Range if(0 == 0 && Time[0] != time_alert) { myAlert("indicator", "Buy"); time_alert = Time[0]; } //Instant alert, only once per bar } else { Buffer1[0] = 0; } //Indicator Buffer 2 if(iRSI(NULL, PERIOD_CURRENT, Period1, PRICE_CLOSE, 0) > 70 ) { Buffer2[0] = High[0] + iATR(NULL, PERIOD_CURRENT, 14, 0); //Set indicator value at Candlestick High + Average True Range if(0 == 0 && Time[0] != time_alert) { myAlert("indicator", "Sell"); time_alert = Time[0]; } //Instant alert, only once per bar } else { Buffer2[0] = 0; } } } //----------------------------------------------------------------------------------------------------------------------------- 12345 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
マッシモ さん、 いつもありがとう ございます。
eevviill さんありがとうござい ます。 でも、私の スキルは 複雑 すぎます。 私は プログラミングを始めて、 彼らは 独学で 、 いくつかのことを 理解 するのは難しいです。
マッシモ さん、 いつもありがとう ございます。
今のところ 最も近い来る コードは、私が提案した ものです GumRai 、 しかし、 私に 信号を与え、 ろうそくの 開口 部を設定 し、 3 秒 後ではない。
マッシモ、 すべてをありがとう ございました。
しかし、私はろうそくを開いた3秒後の信号からではありません
最初にそれを書くと、 "私はすべての3秒の警告を必要としない方が良い。"
これは、バーのオープン時間から 少なくとも3秒後にある最初の受信ティックでチェックする必要があります。
インジケータが初期化されたときにバーがn秒開いていて、nが>3である場合、その時点でチェックされることに注意してください。また、当然ですが、ヒストリカルバーでは動作しません。
これは、バーのオープン時間から少なくとも3秒後の最初の受信ティックでチェックする必要があります。
インジケータが初期化され、nが> 3であるときにバーがn秒開いている場合、それはその時点でチェックされることに注意してください。また、当然ですが、ヒストリカルバーでは動作しません。
:))))
1)私はアラートが、代わりにろうそくのオープニングで表示されるように、このコードを変更したいのですが、数秒後に条件を検出します。
2)しかし、私はローソク 足を開いた3秒後に信号からではありません。
P.S.時間[0]を使用しないでください、バーを使用 する
:))))
1)私はアラートが、代わりにろうそくのオープニングで表示されるように、このコードを変更したいのですが、数秒後に条件を検出します。
2)しかし、私はろうそくを開いた3秒後の信号からではありません。
あなたのポイントは何ですか?
:))))
P.S.時間[0]を使用しないでください、使用Bars
どうしてですか?新しいバーを検出するためにTime[0]を使用することは何も問題ありません。
私は、あなたの協力に どのように感謝 したらよいかわかりません。
eevevillが 投稿した コードは非常によく機能する、という こと です。
GumRaiの コードは、代わりに RSIが 30/70の レベルを 越える たびに リペイントして シグナルを 出すようにして います。
eevviill さんの提案にしたがって、動作する コードを挿入して みました。
マッシモ さん、 いろいろありがとう ございました。