[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 101 1...949596979899100101102103104105106107108...631 新しいコメント Chukwuma Okoye 2012.05.04 07:42 #1001 Zhunko: 以前のコメントをクリアします。 ありがとうございました。 Skander 2012.05.04 08:15 #1002 皆さん、こんにちは。 MQL4の入門書から、この例を理解するのに役立ってください。ここがそうです。 わからないところは赤で下線を引いています。IndicatorCounted()がTick 3で299を返すのはなぜですか?前回の指標呼び出し(Tick 2)から、前回のローソク足は変化しておらず、300本目のローソク足となります。ですから、この関数は300を返すはずです。 もう一つ質問です。この画像で最後のバーのOpenはTick 2に来た価格なのかTick 3に来た価格なのか、教えてください。 この苦しみを乗り越えようとするすべての人に感謝します :-)) Alexey Subbotin 2012.05.04 08:26 #1003 Skander: みなさん、こんにちは。 MQL4チュートリアルの例で助けてください。ここがそうです。 わからないところは赤で下線を引きました。IndicatorCounted()がTick 3で299を返すのはなぜですか?結局のところ 時刻t2では、技術的にまだタイムフレーム期間が終了していないため、バーはまだ終了していないとみなされます。これがバーの最後のティックなのか、次のバーが始まるまでにもっとティックがあるのか、事前に判断する方法はないのです。その結果、Indicator Countedは、ドキュメントに よると、ゼロバー(再び時刻t2)を除く時刻t2でカウントされたバーの数、すなわち300-1=299を返すことになります。 Skander 2012.05.04 10:37 #1004 alsu: 時刻t2では、技術的にまだタイムフレーム期間が終了していないため、バーはまだ終了していないとみなされます。これがバーの最後のティックなのか、次のバーが始まるまでにもっとティックがあるのか、事前に判断する方法はないのです。その結果、Indicator Countedは、ドキュメントに よると、ゼロバー(再び時刻t2)を除く時刻t2でカウントされたバーの数、すなわち300-1=299を返すことになります。 なるほど、時刻t2での状況を記述していますが、教科書には時刻t3でIndicator Counted関数が時刻t2と同じ数を返すと書いてありますね。なぜそうなるのか、私にはよくわかりません。こちらのフラグメント。 それとも、ここに書かれているのは時刻t2での状況でしょうか? Alexey Subbotin 2012.05.04 11:40 #1005 Skander: なるほど、時刻t2での状況を記述していますが、教科書には時刻t3でIndicator Counted関数が時刻t2と同じ数を返すと書いてありますね。なぜそうなるのか、私にはよくわかりません。この段落はここです。 それとも、ここに書かれているのは時刻t2での状況でしょうか? いいえ、時刻t3においてです。ポイントはt3がバーの最初の ティックであり、それはまだ計算が行われていないので、IndicatorCounted()の値がまだ変化する時間がないことを意味します - それは関数start()が仕事を終えた後にのみ起こります。この関数は計算されたバーの数を表示するので、与えられたバーの少なくとも1ティックが計算されるまで、この値を変更する意味はありません。したがって、t3 の時点ではまだ 299 と表示されていますが、次のティックでは 300 になっています。 よりクリアになりましたか? Kirllik 2012.05.04 18:00 #1006 ヘッダーファイル(MQH)とは何か、エディターで作成できるのか、皆さん、ご教示ください。エディターズヘルプには何も書いていない。 costy_ 2012.05.04 21:57 #1007 Las-tochka: 皆さん、ヘッダーファイル(MQH)とは何か教えてください、エディターで作成できます。エディターズヘルプには何も書いていない。 ライブラリ 関数を使えば、MetaEditorやNotepad...で作成 することができます。 コンパイルは必須ではありません。コンパイル時に必要な関数をエキスパートにインクルードし、Libraries ライブラリex4をコンパイルしてインポート する(つまり、必要なf-msを常に参照する)。 削除済み 2012.05.04 22:14 #1008 Las-tochka: 皆さんは、ヘッダーファイル(MQH)とは何か、エディターで作成することができるのか、アドバイスしてください。エディターズヘルプには何も書いていない。 MKLのヘッダーファイルもこのような角度から見てみるのも良いかと思います。 のように、言語にはクラスが存在しないが、これは便利である。ヘッダーファイルで何らかのクラスを作成することができます。その中で、対象物を記述する環境(変数)を作り、この環境と連携する関数を定義する。かなり便利です(プロジェクトが 十分に複雑であることが前提ですが)。 Sceptic Philozoff 2012.05.04 23:52 #1009 220Volt: ご存知の通り、語学の授業はありませんが、便利なんです。ヘッダーファイルを使って、クラスのようなものを作ることができます。その中で、対象物を記述する環境(変数)を作り、この環境と連携する関数を定義する。かなり便利です(ただし、プロジェクトがかなり複雑であることが条件)。 もう少し具体的に教えてください。具体的な例を教えてください。 ラストークの ような初心者には、このような巧妙な手紙は全く意味がないのです。 削除済み 2012.05.05 04:05 #1010 Mathemat: もう少し具体的に教えてください。何かしらの例を挙げてください。 ラストークの ような初心者にとって、あなたのこのスマートな手紙は全く意味をなさない。 このようなクラスの例である他人のコードを掘り起こすことに興味を持つ人はいないと思います。 //+------------------------------------------------------------------+ //| WaveCounter.mq4 | //| Паха | //| | //+------------------------------------------------------------------+ #property copyright "Паха" #define wC_SHADECOLOR C'121,0,0' #define wC_NAMEPART "WaveCounter" //#define NEW_LINE_COLOR DarkKhaki #define NEW_LINE_STILE 2 #define NEW_LINE_RAY 0 #define SCARP_LINE_STILE 1 //#define SCARP_LINE_COLOR White #include <WaveCounterCore.mqh> ///////////////////////////////////////////////////////////////////// Var string wC_sName = ""; int wC_iTimeframe; int wC_iDirection; bool wC_bFirst; int iwC_iLockBar; double wC_dSizePorog[][2]; //------------------------ rez int wC_iMoveBar[2]; double wC_dMovePrice[2]; bool wC_bScarp; int wC_iStop; ///////////////////////////////////////////////////////////////////// /* //-------------------------------------------------- private bool wC_vn_getWaveSizeArray(); //-------------------------------------------------- public string wC_Create(bool bSizeFilter, bool bAddToExtr); bool wC_Check(string &sName, bool bFromBegin, bool bFirst); bool wC_IsScarp(); int wC_IsStop(); bool wC_Redraw(); */ ///////////////////////////////////////////////////////////////////// string wC_Create(bool bSizeFilter, bool bAddToExtr) { //---- string sShadeName[2] = {"wC_Shade1", "wC_Shade2"}; //--// if(ObjectFind(sShadeName[0]) < 0) { Shade_create( sShadeName[0], wC_SHADECOLOR ); return(""); } if(ObjectFind(sShadeName[1]) < 0) { Shade_create( sShadeName[1], wC_SHADECOLOR ); return(""); } //--\\ if( ! Shade_attach(sShadeName, false) ) return(""); if( ! Shade_direction(wC_iDirection, 0, 1) ) return(""); if( ! Shade_minTimeframe(0) ) return(""); wC_iTimeframe = Shade_getTimeframe(); int iCorrectIndex[2] = {0, 1}; Shade_correctKoord(iCorrectIndex); datetime datPoint0; double dPoint0, dPoint1; if(wC_iDirection == 2) { if( ! Shade_getPointTimePrice(0, CONTMOV1, false, datPoint0, dPoint0) ) return(""); } else { if( ! Shade_getPointTimePrice(0, CONTMOV1, true, datPoint0, dPoint0) ) return(""); } if(bSizeFilter) { if( ! wC_vn_getWaveSizeArray() ) return(""); int iIndexPoroga[1]; if( ! MyInputBox("Индекс порога", iIndexPoroga) ) return(""); if( iIndexPoroga[0] < 0 || iIndexPoroga[0] + 1 > ArrayRange(wC_dSizePorog, 0) ) { Alert("Недопустимый индекс"); return(""); } if(wC_iDirection == 2) dPoint1 = dPoint0 + wC_dSizePorog[ iIndexPoroga[0] ][0] * dPoint0; else dPoint1 = dPoint0 - wC_dSizePorog[ iIndexPoroga[0] ][0] * dPoint0; iwC_iLockBar = MYEMPTY; } else { if(wC_iDirection == 2) { if( ! Shade_getPoint(1, CONTMOV2, true, iwC_iLockBar) ) return(false); dPoint1 = iHigh(NULL, wC_iTimeframe, iwC_iLockBar); } else { if( ! Shade_getPoint(1, CONTMOV2, false, iwC_iLockBar) ) return(false); dPoint1 = iLow(NULL, wC_iTimeframe, iwC_iLockBar); } if(dPoint1 == 0) return(false); if(bAddToExtr) iwC_iLockBar --; } if( ! Fun_partOfName(wC_sName) ) return(""); wC_sName = StringConcatenate(wC_sName, wC_NAMEPART); if( ! ObjectCreate(wC_sName, OBJ_TREND, 0, datPoint0, dPoint0, datPoint0, dPoint1) ) return(""); if( ! ObjectSetText(wC_sName, "2") ) return(""); if( ! ObjectSet(wC_sName, OBJPROP_RAY, NEW_LINE_RAY) ) return(""); if( ! ObjectSet(wC_sName, OBJPROP_COLOR, Fun_ColorFromPanel()) ) return(""); if( ! ObjectSet(wC_sName, OBJPROP_STYLE, NEW_LINE_STILE) ) return(""); Fun_deleteObjects(sShadeName); return(wC_sName); } //-------------------------------------------------- bool wC_vn_getWaveSizeArray() { static bool bSizePorogInit = false; if(bSizePorogInit) return(true); string sSymbol = Symbol(); if( sSymbol == "USDCHF" ) { if(ArrayResize(wC_dSizePorog, ArrayRange(prop_dWaveSizeUSDCHF, 0)) < 0) return(false); if(ArrayCopy(wC_dSizePorog, prop_dWaveSizeUSDCHF) < 1) return(false); bSizePorogInit = true; return(true); } if( sSymbol == "AUDJPY" ) { if(ArrayResize(wC_dSizePorog, ArrayRange(prop_dWaveSizeAUDJPY, 0)) < 0) return(false); if(ArrayCopy(wC_dSizePorog, prop_dWaveSizeAUDJPY) < 1) return(false); bSizePorogInit = true; return(true); } if( sSymbol == "EURUSD" ) { if(ArrayResize(wC_dSizePorog, ArrayRange(prop_dWaveSizeEURUSD, 0)) < 0) return(false); if(ArrayCopy(wC_dSizePorog, prop_dWaveSizeEURUSD) < 1) return(false); bSizePorogInit = true; return(true); } if( sSymbol == "EURGBP" ) { if(ArrayResize(wC_dSizePorog, ArrayRange(prop_dWaveSizeEURGBP, 0)) < 0) return(false); if(ArrayCopy(wC_dSizePorog, prop_dWaveSizeEURGBP) < 1) return(false); bSizePorogInit = true; return(true); } if( sSymbol == "EURJPY" ) { if(ArrayResize(wC_dSizePorog, ArrayRange(prop_dWaveSizeEURJPY, 0)) < 0) return(false); if(ArrayCopy(wC_dSizePorog, prop_dWaveSizeEURJPY) < 1) return(false); bSizePorogInit = true; return(true); } if( sSymbol == "GBPUSD" ) { if(ArrayResize(wC_dSizePorog, ArrayRange(prop_dWaveSizeGBPUSD, 0)) < 0) return(false); if(ArrayCopy(wC_dSizePorog, prop_dWaveSizeGBPUSD) < 1) return(false); bSizePorogInit = true; return(true); } if( sSymbol == "USDCAD" ) { if(ArrayResize(wC_dSizePorog, ArrayRange(prop_dWaveSizeUSDCAD, 0)) < 0) return(false); if(ArrayCopy(wC_dSizePorog, prop_dWaveSizeUSDCAD) < 1) return(false); bSizePorogInit = true; return(true); } if( sSymbol == "USDJPY" ) { if(ArrayResize(wC_dSizePorog, ArrayRange(prop_dWaveSizeUSDJPY, 0)) < 0) return(false); if(ArrayCopy(wC_dSizePorog, prop_dWaveSizeUSDJPY) < 1) return(false); bSizePorogInit = true; return(true); } if( sSymbol == "AUDUSD" ) { if(ArrayResize(wC_dSizePorog, ArrayRange(prop_dWaveSizeAUDUSD, 0)) < 0) return(false); if(ArrayCopy(wC_dSizePorog, prop_dWaveSizeAUDUSD) < 1) return(false); bSizePorogInit = true; return(true); } Alert("У символа нет размерного массива, или он не прописан в функции Tl_vn_getWaveSizeArray()"); return(false); } //-------------------------------------------------- bool wC_Check(string &sName, bool bFromBegin, bool bFirst) { if(StringFind(sName, wC_NAMEPART) == -1) return(false); wC_bScarp = false; wC_iStop = -1; wC_sName = sName; string sDescrip = ObjectDescription(sName); int iID = StrToInteger(sName); if(iID == 0) return(false); datetime datLastTime; if(sDescrip == "1" && ! bFirst) { datLastTime = FL_LastTime(); if(datLastTime == -1) datLastTime = MYEMPTY; if( ! tlC_Load(iID, datLastTime) ) return(false); wC_bFirst = false; if(bFromBegin) if( ! tlC_SeekToBegin()) return(false); } else { if(sDescrip == "2" && bFirst) { int iBeginBar = iBarShift(NULL, wC_iTimeframe, ObjectGet(sName, OBJPROP_TIME1), true); if(iBeginBar == -1) return(false); datLastTime = FL_LastTime(); if(datLastTime == -1) datLastTime = MYEMPTY; if( ! tlC_Attach(iID, wC_iDirection, wC_iTimeframe, iBeginBar, ObjectGet(sName, OBJPROP_PRICE2), iwC_iLockBar, datLastTime) ) return(false); if(iwC_iLockBar != MYEMPTY) tlC_SetStops(false, MYEMPTY); wC_bFirst = true; } else return(false); } if( ! tlC_Check() ) return(false); wC_bScarp = tlC_IsScarp(); wC_iStop = tlC_IsStop(); tlC_GetCurView(wC_iMoveBar, wC_dMovePrice); if(wC_bScarp) { int iTempVar; double dTempVar; tlC_GetCurPos(iTempVar, dTempVar); wC_iMoveBar[1] = iTempVar; wC_dMovePrice[1] = dTempVar; } return(true); } //-------------------------------------------------- bool wC_IsScarp() { return(wC_bScarp); } //-------------------------------------------------- int wC_IsStop() { return(wC_iStop); } //-------------------------------------------------- 1...949596979899100101102103104105106107108...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
以前のコメントをクリアします。
皆さん、こんにちは。
MQL4の入門書から、この例を理解するのに役立ってください。ここがそうです。
わからないところは赤で下線を引いています。IndicatorCounted()がTick 3で299を返すのはなぜですか?前回の指標呼び出し(Tick 2)から、前回のローソク足は変化しておらず、300本目のローソク足となります。ですから、この関数は300を返すはずです。
もう一つ質問です。この画像で最後のバーのOpenはTick 2に来た価格なのかTick 3に来た価格なのか、教えてください。
この苦しみを乗り越えようとするすべての人に感謝します :-))
みなさん、こんにちは。
MQL4チュートリアルの例で助けてください。ここがそうです。
わからないところは赤で下線を引きました。IndicatorCounted()がTick 3で299を返すのはなぜですか?結局のところ
時刻t2では、技術的にまだタイムフレーム期間が終了していないため、バーはまだ終了していないとみなされます。これがバーの最後のティックなのか、次のバーが始まるまでにもっとティックがあるのか、事前に判断する方法はないのです。その結果、Indicator Countedは、ドキュメントに よると、ゼロバー(再び時刻t2)を除く時刻t2でカウントされたバーの数、すなわち300-1=299を返すことになります。
時刻t2では、技術的にまだタイムフレーム期間が終了していないため、バーはまだ終了していないとみなされます。これがバーの最後のティックなのか、次のバーが始まるまでにもっとティックがあるのか、事前に判断する方法はないのです。その結果、Indicator Countedは、ドキュメントに よると、ゼロバー(再び時刻t2)を除く時刻t2でカウントされたバーの数、すなわち300-1=299を返すことになります。
なるほど、時刻t2での状況を記述していますが、教科書には時刻t3でIndicator Counted関数が時刻t2と同じ数を返すと書いてありますね。なぜそうなるのか、私にはよくわかりません。こちらのフラグメント。![](https://c.mql5.com/mql4/forum/2012/05/2012-05-04_202309_small.png)
それとも、ここに書かれているのは時刻t2での状況でしょうか?
なるほど、時刻t2での状況を記述していますが、教科書には時刻t3でIndicator Counted関数が時刻t2と同じ数を返すと書いてありますね。なぜそうなるのか、私にはよくわかりません。この段落はここです。
それとも、ここに書かれているのは時刻t2での状況でしょうか?
いいえ、時刻t3においてです。ポイントはt3がバーの最初の ティックであり、それはまだ計算が行われていないので、IndicatorCounted()の値がまだ変化する時間がないことを意味します - それは関数start()が仕事を終えた後にのみ起こります。この関数は計算されたバーの数を表示するので、与えられたバーの少なくとも1ティックが計算されるまで、この値を変更する意味はありません。したがって、t3 の時点ではまだ 299 と表示されていますが、次のティックでは 300 になっています。
よりクリアになりましたか?
皆さん、ヘッダーファイル(MQH)とは何か教えてください、エディターで作成できます。エディターズヘルプには何も書いていない。
ライブラリ 関数を使えば、MetaEditorやNotepad...で作成 することができます。
コンパイルは必須ではありません。コンパイル時に必要な関数をエキスパートにインクルードし、Libraries ライブラリex4をコンパイルしてインポート する(つまり、必要なf-msを常に参照する)。皆さんは、ヘッダーファイル(MQH)とは何か、エディターで作成することができるのか、アドバイスしてください。エディターズヘルプには何も書いていない。
MKLのヘッダーファイルもこのような角度から見てみるのも良いかと思います。
のように、言語にはクラスが存在しないが、これは便利である。ヘッダーファイルで何らかのクラスを作成することができます。その中で、対象物を記述する環境(変数)を作り、この環境と連携する関数を定義する。かなり便利です(プロジェクトが 十分に複雑であることが前提ですが)。
もう少し具体的に教えてください。具体的な例を教えてください。
ラストークの ような初心者には、このような巧妙な手紙は全く意味がないのです。
もう少し具体的に教えてください。何かしらの例を挙げてください。
ラストークの ような初心者にとって、あなたのこのスマートな手紙は全く意味をなさない。
このようなクラスの例である他人のコードを掘り起こすことに興味を持つ人はいないと思います。