MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 579 1...572573574575576577578579580581582583584585586...1953 新しいコメント Artyom Trishkin 2018.07.05 18:51 #5781 PolarSeaman: 現在の期間のバーが閉じるまでの秒数をカウントする方法がまだわかっていません。あなたの力が必要です。機能をあげてみました。 PolarSeaman 2018.07.05 19:14 #5782 Artyom Trishkin:機能をあげてみました。そうなんですが、上のコメントのコードでは1秒ごとにスムーズにカウントダウンしているのに、この関数ではぎくしゃくしています。M1では、60小節のうち、3、4回はアラートが出ません。 #property strict #define MILLISEC_TIMER_INTERVAL 500 //--- input parameters input int s_clo=2; input int Period_=13, Shift_=0; input ENUM_MA_METHOD Method_MA_=MODE_SMA; input ENUM_APPLIED_PRICE Apply_to_=PRICE_CLOSE; double ma_fast; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { if(!EventSetMillisecondTimer(MILLISEC_TIMER_INTERVAL)) { Print("Не могу запустить таймер"); return INIT_FAILED; } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- destroy timer EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTimer() { RefreshRates(); //--- ma_fast=0; if(SecondsToCandleClose(Symbol(),0)>=s_clo)return; { ma_fast=ma(Period_,Shift_,Method_MA_,Apply_to_,0); Alert("ma_fast",ma_fast,"время откр. бара ",Time[0]);} } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ long SecondsToCandleClose(const string symbol_name,const ENUM_TIMEFRAMES timeframe) { datetime array[]; return(CopyTime(symbol_name,timeframe,0,1,array)==1 ? PeriodSeconds(timeframe)+array[0]-TimeCurrent() : 0); } //+------------------------------------------------------------------+ double ma(int period,int ma_shift,ENUM_MA_METHOD ma_method,ENUM_APPLIED_PRICE ap_price,int shift) { return(ND(iMA(NULL,(int)0,period,ma_shift,ma_method,ap_price,shift))); } // double ND(double A) { return(NormalizeDouble(A,Digits)); } // Artyom Trishkin 2018.07.05 19:56 #5783 PolarSeaman:はい、しかし、上記のコード、コメントでは、1秒ごとにスムーズにカウントダウンしていますが、関数ではぎくしゃくしています。M1では、60小節のうち3、4回はアラートが出ない。 これは、この関数がTimeCurrent()- 直近の引用文の到着時刻 - を使用して いるからです。この時間を、オフセットを計算したローカルなTimeLocal()に置き換える必要があります(すでに説明済み)。 PolarSeaman 2018.07.05 20:31 #5784 Artyom Trishkin:この時刻を、オフセットを計算したローカルな TimeLocal() に置き換える必要があります (これについては既に説明しました)。正しいやり方がわからないので、H1が閉じるまでの時間をティックなしでカウントダウンするコードを見つけ、それを使おうとしているのですが、あなたの関数のTimeCurrent() を置き換えたところ、閉じるまでの秒数を表示しようと しません。 #property strict #property indicator_chart_window //--- input parameters #define MILLISEC_TIMER_INTERVAL 500 int timeOffset; datetime ServerLocalOffset; datetime prevTime,myTime,localtime; bool newBar = false; datetime sec; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping EventSetMillisecondTimer(MILLISEC_TIMER_INTERVAL); datetime srvtime,tmpOffset; RefreshRates(); srvtime = TimeCurrent(); // Modified localtime = TimeLocal()+TimeGMTOffset(); if(TimeHour(srvtime)>TimeHour(localtime)){ // Server Time is still ahead of us int newOffset = TimeHour(srvtime)-TimeHour(localtime); ServerLocalOffset = (newOffset*60*60); }else if(TimeHour(srvtime)<TimeHour(localtime)){ // Server Time is Behind us int newOffset = TimeHour(localtime)-TimeHour(srvtime); ServerLocalOffset = (newOffset*60*60); }else{ // No modification required ServerLocalOffset = srvtime; } localtime = TimeLocal()-ServerLocalOffset; tmpOffset = TimeSeconds(srvtime) - TimeSeconds(localtime); if(tmpOffset < 30 && tmpOffset >= 0){ timeOffset = TimeSeconds(srvtime) - TimeSeconds(localtime); } return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { EventKillTimer(); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer() { //--- datetime localtime; localtime = TimeLocal()+(TimeGMTOffset()+(60*60)); sec=Time[0]+Period()*60-localtime-timeOffset;// if(SecondsToCandleClose(Symbol(),0)<=2){Alert("время откр. бара ",Time[0]);} Comment(" Time 1: ",TimeToStr(sec,TIME_SECONDS )," Time 2: ",TimeToStr(SecondsToCandleClose(Symbol(),0),TIME_SECONDS )); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ long SecondsToCandleClose(const string symbol_name,const ENUM_TIMEFRAMES timeframe) { datetime array[]; return(CopyTime(symbol_name,timeframe,0,1,array)==1 ? PeriodSeconds(timeframe)+array[0]-sec : 0); } //// Tigerfreerun 2018.07.06 11:03 #5785 そのアイデアをコードで実装する方法をアドバイスしてください。ワラントが開いていて、今はない場合=アラート。こんな感じかな、たぶん...。double x=0;If(OrdersTotal>0) {x=1;}.If (OrdersTotal <x) {Alert ;}.x=0; Alekseu Fedotov 2018.07.06 11:09 #5786 Tigerfreerun: そのアイデアをコードで実装する方法を教えてください。ワラントが開いていて、今はワラントがない場合=Alert。このようなスタイルのものは、おそらく......。double x=0;If (OrdersTotal >0) {x=1;}.If (OrdersTotal <x) {Alert ;}.x=0; If(OrdersTotal==0) {Alert ;}. Tigerfreerun 2018.07.06 11:32 #5787 Alekseu Fedotov: If (OrdersTotal ==0) {Alert ;}. そうすると、信号が周期的になります。また、仮に注文が開かれていなかったとしても考え方としては、1)注文が開いている 2)今は注文がない 3)1アラート Vladimir Tkach 2018.07.06 12:30 #5788 みんな! グラフにはたくさんのオブジェクトが描かれています。 でも、アクセスすると Comment(ObjectsTotal()); 3つしかないって書いてあるじゃん。 なぜ、矢印がカウントされないのですか? Ihor Herasko 2018.07.06 12:55 #5789 Tigerfreerun: そのアイデアをコードで実装する方法を教えてください。ワラントが開いていて、今はない場合=アラート。こんな感じかな、たぶん...。double x=0;If (OrdersTotal >0) {x=1;}.If (OrdersTotal <x) {Alert ;}.x=0;こんな感じでやってください。コードはほぼ正しいです。そこには、たった1つの言葉が欠けている。 static double x=0; If (OrdersTotal >0) {x=1;} If (OrdersTotal <x) {Алерт ; x= 0;} Galim_V 2018.07.06 16:05 #5790 Vladimir Tkach:みんな! グラフにはたくさんのオブジェクトが描かれています。 でも、アクセスすると 3つしかないって書いてあるじゃん。 なぜ、矢印がカウントされないのですか? Wingdingsフォントの 記号だからでしょうか。 1...572573574575576577578579580581582583584585586...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
現在の期間のバーが閉じるまでの秒数をカウントする方法がまだわかっていません。あなたの力が必要です。
機能をあげてみました。
機能をあげてみました。
そうなんですが、上のコメントのコードでは1秒ごとにスムーズにカウントダウンしているのに、この関数ではぎくしゃくしています。M1では、60小節のうち、3、4回はアラートが出ません。
はい、しかし、上記のコード、コメントでは、1秒ごとにスムーズにカウントダウンしていますが、関数ではぎくしゃくしています。M1では、60小節のうち3、4回はアラートが出ない。
これは、この関数がTimeCurrent()- 直近の引用文の到着時刻 - を使用して いるからです。この時間を、オフセットを計算したローカルなTimeLocal()に置き換える必要があります(すでに説明済み)。
この時刻を、オフセットを計算したローカルな TimeLocal() に置き換える必要があります (これについては既に説明しました)。
正しいやり方がわからないので、H1が閉じるまでの時間をティックなしでカウントダウンするコードを見つけ、それを使おうとしているのですが、あなたの関数のTimeCurrent() を置き換えたところ、閉じるまでの秒数を表示しようと しません。
そのアイデアをコードで実装する方法を教えてください。
If (OrdersTotal ==0) {Alert ;}.
みんな!
グラフにはたくさんのオブジェクトが描かれています。
でも、アクセスすると
3つしかないって書いてあるじゃん。
なぜ、矢印がカウントされないのですか?
そのアイデアをコードで実装する方法を教えてください。
こんな感じでやってください。コードはほぼ正しいです。そこには、たった1つの言葉が欠けている。
みんな!
グラフにはたくさんのオブジェクトが描かれています。
でも、アクセスすると
3つしかないって書いてあるじゃん。
なぜ、矢印がカウントされないのですか?