記事"MQL4からMQL5への移植"についてのディスカッション - ページ 4 1234567891011...13 新しいコメント Sergey Pavlov 2010.05.23 16:31 #31 Interesting : 私はこのデザインの機能性に疑問を抱き始めた。ブロックのロジックをいくら理解しようとしても、理解できなかったのだ(そして、懸命に理解しようとした)......。何を疑っているのか?正しくカウントされている。//+------------------------------------------------------------------+ //|をテストします。mq5 //+------------------------------------------------------------------+ #include <InitMQL4.mqh> double close[]; int total,count; datetime time[]; //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ void OnStart() { count=Bars(_Symbol,_Period); total=CopyClose(_Symbol,_Period,0,count,close); total=CopyTime(_Symbol,_Period,0,count,time); ArraySetAsSeries(time,true); ArraySetAsSeries(close,true); int N=7; int shift=iBarShiftMQL4(_Symbol,_Period,time[N]); Print("TIME",time[N],"BAR=",shift," CLOSE=",close[shift]); } //+------------------------------------------------------------------+ int iBarShiftMQL4(string symbol, int tf, datetime time, bool exact=false) { if(time<0) return(-1); ENUM_TIMEFRAMES timeframe=TFMigrate(tf); datetime Arr[],time1; CopyTime(symbol,timeframe,0,1,Arr); time1=Arr[0]; if(CopyTime(symbol,timeframe,time,time1,Arr)>0) return(ArraySize(Arr)-1); else return(-1); } //+------------------------------------------------------------------+ 削除済み 2010.05.23 20:18 #32 DC2008 :何が問題なんだ?彼は正確にカウントしている。そして、次はホカホカの話だ1.MT4でこの行を書き、H4でコードを実行する。Print(iBarShift(Symbol(),Period(),1274356800,false)); //日付 2010年5月20日 12:00次にMT5と同じことをする。int shift=iBarShiftMQL4(_Symbol,_Period,StringToTime("20.05.2010 12:00"),false);その結果、8が得られる。2.その後、まったく同じ操作をD1で行う。その結果、MT4は-1を返し、MT5は0を返す。さて、iBarShiftMQL 4のこの実装が、必要なものにどれだけ対応しているか、教えてくれる人はいるだろうか...。int iBarShiftMQL4(string symbol, int tf, datetime time, bool exact=false) { if(time<0) return(-1); ENUM_TIMEFRAMES timeframe=TFMigrate(tf); datetime Arr[],time1; CopyTime(symbol,timeframe,0,1,Arr); time1=Arr[0]; if(CopyTime(symbol,timeframe,time,time1,Arr)>0) return(ArraySize(Arr)-1); else return(-1); } Sergey Pavlov 2010.05.23 22:56 #33 これを試してみてほしい:int iBarShiftMQL4(string symbol, int tf, datetime time, bool exact=false) { if(time<0) return(-1); ENUM_TIMEFRAMES timeframe=TFMigrate(tf); datetime Arr[],time1; CopyTime(symbol,timeframe,0,1,Arr); time1=Arr[0]; if(CopyTime(symbol,timeframe,time,time1,Arr)>0) { if(ArraySize(Arr)>2) return(ArraySize(Arr)-1); if(time<time1) return(1); else return(0); } else return(-1); } Vasily 2010.05.31 18:56 #34 もう一度言いますが、あなたが書いている機能について読んだことがありますか?mcl4では正確に次のように書かれています。double iClose( string symbol, int timeframe, int shift) shift パラメータで指定された対応するチャート(シンボル、タイムフレーム)のバーの終値の値を返します。エラーの場合、この関数は0を返します。エラーに関する詳細情報を取得するには、 GetLastError() 関数を呼び出します。 現在のチャートでは、終値に関する情報は定義済みのClose[] 配列にあります。 そして、あなたは....return(-1); モデレーターは何を見ているのでしょうか? Sergey Pavlov 2010.06.01 14:07 #35 ありがとう、CoreWinTT。修正された関数:iClose、iLow、iHigh、iOpen、iTime、iVolume。エラー時に-1ではなく0を返すようにした。 Vasily 2010.06.01 15:20 #36 そして、いつ図書館にあるのだろうか?というように、少なくとも開けば疑問が生じるからであり、上に書いた意味は?また、少なくともすべての問題が解決された関数を収集し、残りの部分のエラーの研究に進みます。 Vasily 2010.06.01 15:30 #37 bool SetIndexBuffer( int index, // バッファインデックス double buffer[], // 配列 ENUM_INDEXBUFFER_TYPE data_type // 何を保存するか ); 先日、ある人がμl4環境を作る賢い方法を提案した。の配列を使ってμl4環境を作るという賢い方法を提案した人がいた。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[])しかし、これらの配列は定数状態を持つため、使用するのは難しいだろう。グローバル・バッファはの助けを借りて宣言しなければならないからだ。SetIndexBuffer 指定された指示バッファをグローバルに 宣言されたdouble 型の1次元動的配列に関連付けます。 ただし、double型のみであり、ボリュームや日付-時刻型の配列は通過しません。残された唯一の方法は、mql4モジュール内でこれらの配列を開始することである。これは実質的にインジケーターを書き換えるのと同じことなのだが......。 Sergey Pavlov 2010.06.01 15:37 #38 CoreWinTT:いつ図書館にあるんですか? もうありますよ。 Vasily 2010.06.01 15:41 #39 空っぽだし、空っぽだった。 削除済み 2010.06.02 20:00 #40 CoreWinTT:そして、いつ図書館にあるのだろうか?というように、少なくとも開けば疑問が生じるからであり、上に書いた意味は?とまた、少なくともすべての問題が解決されている関数を収集し、残りの部分のエラーの研究に進みます。このテーマに関する解答は、昔から私設図書館にたくさんある。 私などは、IsTesting()などは最初から使っていますし、日付と時刻も昔からすべて解決しています(もちろん、他にも解決策はあります)......。 もう一つは、MT5自体にこのような「時代遅れのソリューション」が存在することです。 1234567891011...13 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私はこのデザインの機能性に疑問を抱き始めた。ブロックのロジックをいくら理解しようとしても、理解できなかったのだ(そして、懸命に理解しようとした)......。
何を疑っているのか?正しくカウントされている。
何が問題なんだ?彼は正確にカウントしている。
そして、次はホカホカの話だ
1.MT4でこの行を書き、H4でコードを実行する。
次にMT5と同じことをする。
その結果、8が得られる。
2.その後、まったく同じ操作をD1で行う。
その結果、MT4は-1を返し、MT5は0を返す。
さて、iBarShiftMQL 4のこの実装が、必要なものにどれだけ対応しているか、教えてくれる人はいるだろうか...。
これを試してみてほしい:
もう一度言いますが、あなたが書いている機能について読んだことがありますか?
mcl4では正確に次のように書かれています。
現在のチャートでは、終値に関する情報は定義済みのClose[] 配列にあります。
そして、あなたは....
モデレーターは何を見ているのでしょうか?
ありがとう、CoreWinTT。
修正された関数:iClose、iLow、iHigh、iOpen、iTime、iVolume。エラー時に-1ではなく0を返すようにした。
そして、いつ図書館にあるのだろうか?
というように、少なくとも
開けば疑問が生じるからであり、上に書いた意味は?
また、少なくともすべての問題が解決された関数を収集し、残りの部分のエラーの研究に進みます。
先日、ある人がμl4環境を作る賢い方法を提案した。
の配列を使ってμl4環境を作るという賢い方法を提案した人がいた。
しかし、これらの配列は定数状態を持つため、使用するのは難しいだろう。
グローバル・バッファは
の助けを借りて宣言しなければならないからだ。
SetIndexBuffer
指定された指示バッファをグローバルに 宣言されたdouble 型の1次元動的配列に関連付けます。
ただし、double型のみであり、ボリュームや日付-時刻型の配列は通過しません。
残された唯一の方法は、mql4モジュール内でこれらの配列を開始することである。
これは実質的にインジケーターを書き換えるのと同じことなのだが......。
いつ図書館にあるんですか?
そして、いつ図書館にあるのだろうか?
というように、少なくとも
開けば疑問が生じるからであり、上に書いた意味は?
とまた、少なくともすべての問題が解決されている関数を収集し、残りの部分のエラーの研究に進みます。
このテーマに関する解答は、昔から私設図書館にたくさんある。
私などは、IsTesting()などは最初から使っていますし、日付と時刻も昔からすべて解決しています(もちろん、他にも解決策はあります)......。
もう一つは、MT5自体にこのような「時代遅れのソリューション」が存在することです。