bool bIsFirstTick;// It is used to catch the Bar Opening.datetime dtCurrentBarOpeningTime;int init(){
bIsFirstTick =false;
dtCurrentBarOpeningTime =Time[0];return(0);}int start(){// Is this the first tick for the bar
bIsFirstTick =( dtCurrentBarOpeningTime !=Time[0]);if( bIsFirstTick){
dtCurrentBarOpeningTime =Time[0];}......////// Exit at a Bar Closing price (almost).////// MetaTrader does not provide an onBarClose event so we are not able to close a position/// exactly at Bar Closing. We workaround the problem by closing the position within a time span/// near to the bar closing time. In the cases when there is no any ticks within this period,/// we close the position att he next bar opening price.///int ClosePositionsAtBarClosing(bool bCloseLong,bool bCloseShort,datetime dtClosingTimeSpan){int iOrders =OrdersTotal();bool bIsOpen =false;for(int iOrder =0; iOrder < iOrders; iOrder++){OrderSelect( iOrder, SELECT_BY_POS, MODE_TRADES);if((OrderType()==OP_BUY||OrderType()==OP_SELL)&&OrderSymbol()==Symbol()){// There is an open position for this symbol.datetime dtOpeningTime =Time[0]-TimeSeconds(Time[0]);// The opening time of current bardatetime dtClosingTime = dtOpeningTime +Period()*60;// The closing time of current barsdatetime dtCurrentTickTime =TimeCurrent();// The time of current tickif( dtCurrentTickTime > dtClosingTime - dtClosingTimeSpan || bIsFirstTick){// The current tick is within the closing time span or this is the first tick of the bar.// Code}}}}
Частично, видимо, заодно к вопросу получаемых значений (для заполнения оперируемых буферов при расчете индикатора) из искомой функции protected staticfloat[] Price(BasePrice price)
元値と「その後展開」に乖離があったことは? やはり2倍......)
未だ...もんだいいっぱいいっぱい)
強制的に思いとどまらせる!重要なのは、「EAの1回の反復の限界」というニュアンスです。この範囲内では、インジケータは1回だけ計算されます(最初の呼び出し時)!100%の自信をもって宣言します。その後のすべての呼び出しは、それをまったく開始()せず、必要なバッファから必要な値を取るだけである。入力パラメータが変更されない場合(バッファとオフセットを除く)は100%である。このルールは、1つのツールの範囲内で計算する場合に有効である。しかし、iCustomが他のTFやツールを参照する場合でも、その原理は成り立つと思います。
1つは「無理やり」......一気呵成にしなければならないだろう。もう一つの文書化されていない機能をありがとうございます :)
FSB__Bar_Opening_Bar_Closing.mql4 v0 .0.2 Beta
Bar Openingでのマーケットエントリー。
バークローズで終了(クローズまで10秒、または次のオープニングで終了)
** このデモはEntry/Exitポイントを テストするためのものです。**
コードフラグメント。
1.性能について。
ほとんどの場合、ティック ごとにインジケータを再計算する必要はありません。(参考:「直前のバーの値を使用する」)指標は、「バー・オープニング」または「バー・クロージング」のどちらかで計算する必要があります。
2. fMicron:
取引判断のために価格を比較するときは、fMicron = Point/ 2を使用しています。しかし、指標には適用されません。Eg.USDJPYの場合 point = 0.01; fMicron = 0.005.
0.000075は、長年にわたる多くのテストの結果です。2001年にFSBの仕事を始めました :) もちろん、何の意味もないんですけどね。それについては、何度も考えを改めました。
**編集:MTはこれをユーザーの手に渡します。おそらくEAの達人たちは、自分のEAで使っているものを言えると思います。
**edit2:実験用にこのパラメータをコンフィグファイルに入れておきます。
3.FSBの各バージョンについて、オリジナルのソースコードのダウンロード提供を開始します。そのような場合、小さな変更のたびにウェブサイトを更新する必要はないでしょう。
。
floatをdoubleに変更するように なりました。このバージョンは、今夜か明日、すぐに公開します。その後、徹底的にテストしなければなりません。MQLに書き込む前に、各インジケータごとにパスして、いくつかの問題や機能を修正する必要があります。
1.はい、ほとんどの場合(FSBのポジションのオープン/クローズ(バー・オープニング/バー・クロージング)に対する一般的なアプローチを考慮した場合)。- これは必要ありません。しかし、仮に--マナーのルールは--義務であるとしよう。毎回(バーで一度でも) "ゼロから"指標の計算- 一般的に(私は同意する)大規模な期間の制限内で重要ではありません...。しかし、期間が数分の場合はどうでしょうか。また、インジケータがまだ毎バー計算する必要がある(あるいはしたい)場合はどうでしょうか? (ポジションの洗練されたポイントで、始値がストップレベルより低いため、注文で捕捉できない(あるいはできない))場合はどうでしょう。
実際、変換はそれほど複雑ではありません。そう、いくつかのコードが「ラッパーに」あり、バーウォークの原理が逆になっているのです。実は、大まかに言ってそれだけなんです。主な内容は、アルゴリズムを維持し(ソースコード内で簡単に読み、識別できるように)、FSBとのパラメトリックな互換性を維持することです。信号抽出に便利な仕組みを作る。そして、純粋なビジュアルデザイナー(EAにこだわらない人)にも使えるようにすること。私見ですが。
2.まあ、Point/2 variant を使って(同じように)指標となる値を比較しろとは言っていないのですが :) 。- 私は定数を提案しただけです。問題は、その値と次元(0.000075 - 悪いことではない、私はそれを言わなかった - 私は正確に75としない "通常" 50:)なぜ理解していないのですか?2001年以降」の経験はかなり明らかにされており(論拠!)、私はこの値をかなり積極的に受け入れています。しかし、最後に言っておきますが、0.12345のディメンションの引用符の場合、これは十分ではありません(つまり、たくさん:))。数値は少なくとも1フレーム分右にずれている必要があります(0.0000075)。例えば私の証券会社では、すでにそのような見積もりは常識となっているのですが...。楽器に合わせて調整し、"75 "ではなく、"10 "を使うことをお勧めします :)
fMicron = ポイント * 0.1f
要するに、そうです - パラメトリックに設定することを提案します(いくつかのフレンドリーな実験の後、すべてがうまくいくと思います(しかし...ポイントが何度も変更されている場合 ;)...)。そして、より多くの人の意見を待つ...。
3.掲載されているソースをなんとかダウンロードしました :-P.だから、(結果のコードという意味で)「比較するもの」が出てくる。そして、これ以上迷惑をかけたくないので、floatからdoubleへの変換を頑張ってください。
(RSIのテストはどうでしたか?)。
ベストは100>ミクロン>50とわかりました。だから75を取ったんです。私のブローカー向けでした:Point= 0.0001.
しかし、ブローカーが0.00001でクォートを開始したのは正しいことです。
マイクロン = Math.Min(Point * 0.75, 0.000075)で作成します。
あと3時間で変換が終わるといいんですけどね。ここにテスト用のプログラムを置いておきます。
コンバートしたインジケーターのソースコードもアップロードしておきますね。
指標やパラメータはすべて2重 数値です。
ミクロン=0.000075
exeを前回のFSB v2.8.3.3 Betaと一緒にフォルダに入れる。両プログラムは、同じデータと戦略を共有します。比較するのに便利です。インジケーターの数値にご注意ください。実質的にすべてのインジケータと他のファイルの半分が変更されています。
完全な精度を見るには、チャート上でF12キーを押すか、コマンドコンソール(ind ####)を使用します。
問題があれば報告してください。今こそ、指標についての変更を要求する時です。MT統合の作業を継続するためには、それらを修正する必要があるのです。
おはようございます。
ミロスラフ、今は時間が限られているので...。ので、早いです。
1.早速の翻訳(フロート→ダブル)ありがとうございました素晴らしい
2.今のところ、(私が確認した限りでは)すべてうまくいっているようです。インジケータの値とストラテジーの結果の両方で、(その場で)違いを見ることができます :)
3.しかし、その違いは、私たちが事前に予想して いたものとは違っていました。(昨晩、社内で実験してみたところ、私の「懸念」は的中しました。 変換することで計算精度は上がるが、結果が壊滅的に変わることはない! 4~5桁目の差の部分から何か......」。が、2桁目で早くも乖離が発生しているのです(例えば、同じRSI))
理由は他にある!!!
なんとか確認できたこと。
1.最初は、Digits(私は5桁の楽器を持っています)というテーマでハードリンクはないかと考えたのですが...。 ツールのプロパティで 4桁の数字を強制的に指定してもダメでした(ちなみに、動作します)
2.指標そのもののコード ...ふむ......まあ、文句のつけようがない!(笑今はどこもかしこも二重になっていて、コード自体は(私が見る限り)変わっていないのですが......。コードは十分シンプルです(非常によく足し算と引き算だけで動作します) -そのようなエラーはそこに蓄積されていないかもしれない!(私はそうでもないのですが......))
3.最後に思ったこと(確認はできませんが) -THIS IS WHAT :)!:
Bar Closing/Opening Values (???) (その他、潜在的に?)
この数字の出所は?:)))(どんな「添加物」なんだろう :D?)
ここ(Bar Closing.cs)のどこかから持ってきています。
その結果、私の最初の作業仮説は、(たぶん)これのことかな?(「間違っている」(あるいは「正しい」、しかしなぜそのように正確に?)関数で引用値を与えること?)
部分的には、明らかに、求められた関数から得られた値(インジケータを計算する際に操作されたバッファを埋めるために)の質問へprotected static float[] Price(BasePrice price)
一般的には、ミロスラフ - "ボールはあなたのコートにある" :).今のところ、私はMTの指標と完全に互換性があるあなたの指標の新しいコードに気づいた(私はしつこいです:D、そして私はRSIのテーマを "終了 "します)。
同じバーで、最初のインジケータは変換、2番目はMTからのネイティブです。
何かご意見、ご感想はありますか?(6時間後に行く予定)
Частично, видимо, заодно к вопросу получаемых значений (для заполнения оперируемых буферов при расчете индикатора) из искомой функции protected static float[] Price(BasePrice price)
すべてのベースクラス、メソッド、プロパティは、すべての取引関数と 同様に2倍 値を返すようになりました(私は6ヶ月前に最後の変更を行いました)。
RSIの計算式に違いがあるようですね。2つ目のサインにあるはずがない「でも、すでに2つ目のサインに違いがあるんです!:)FSBの既存のMTのRSIの計算式を採用してみる。
**編集
すでに修正済み。
デフォルトのパラメータ:RSI(close, 14, smoothed) == MT RSI
プログラムは近日中にダウンロード予定です。
ミロスラフ - 処方箋に違いはありません。RSIの議論の最初に述べたように、あなたは他の平均化ループ(正しく動作するMovingAverage関数のすべての結果から強制的にSmoothedを作る) :)を持っているだけで、最初の値(MovingAverage実行から残っている :)を除きます。
とにかく、最後に引用したコードから判断して、すべてが うまくいきました(そして、RSIは他の平均化モードを普通に読むようになりました) :)!をヤフオク!
(私が以前保存したインジケーターコードは、すでにこの変更を含んでいます ;) - 念のため、次のパラメータでfsbRSIを呼び出してください。
indLogic = not important
maMethod =2(!MTの用語で重要なMODE_SMMA)
basePrice = 0 (MTでいうところのPRICE_CLOSE)
周期=14
fLevel = not important
iPrvs = 重要ではない
また、ネイティブのRSt(Relative Strength Index)(MTに付属)を使って、結果を完全に 一致させることができます。
ただし、fsbRSIとiRSIはFSBと同じでは ありません :(
では、本題に 戻ろう。
"すべてのベースクラス、メソッド、プロパティは、すべての取引関数と同様に2倍 値を返すようになりました(私は最後の6ヶ月前に変更しました)"。
なるほど、それは素晴らしいですね。ただ、この論文がどのように影響するのかが理解できません。
バーの始値、終値は?上記の例では
繰り返しになりますが、なぜ、求める価格が見積もりとDIFFERENTな のか?けた
ダブルは 全く関係ない!引用符で囲まれた値は正規化されており、変数間で単純にコピーしても保存される(完全に同一である)べきである。
同様の値が指標の計算で表示されるようになった場合(計算のためのバッファは、引用符の値に基づいて充填されている場合、保護された 静的 float[] 価格(BasePrice価格))、その後我々は美しい(それが見えるかもしれませんが奇妙)、すなわち、それは別のソース(前のフロートのほかに)、 "少し "非正規化データのようです:) です。
インジケーターの一部をMT標準のものと同じように少し変更しました。
FSBインジケーターを変更しました。
反復過多損傷
RSIのオシレーター
RSI MA Oscillator
ボリンジャーバンド
標準偏差
ストキャスティクス
以下の指標に違いがあります。
モメンタム
市場円滑化指数
その他
MT Moving Average Oscillator == FSB MACD ヒストグラム
MTモメンタム==FSB変化率
相対的活力指数(Relative Vigor Index) - FSBには含まれません。
これで、FSBとMTの指標はほぼ同じになるはずです。
TODOです。
ストキャスティクス - シグナルの修正。
市場円滑化指数-計算式の改訂。
FSBに搭載されるMTのようなモーメンタム。"Momentum MT "と命名。
FSBに「Relative Vigor Index」を含む。