明らかなMT4初心者がここに..
ブレイクアウト トレードを自動化するために MT4 でボックスを描画するためのベスト プラクティスがあるかどうかを知りたいです。
どんな援助も大歓迎です。
ハル
明らかなMT4初心者がここに..
ブレイクアウト トレードを自動化するために MT4 でボックスを描画するためのベスト プラクティスがあるかどうかを知りたいです。
どんな援助も大歓迎です。
ハル
Ps .: EA は完璧ではありません。Close などの何らかのエラーです。 Close[x] または現在のバーで終値を使用するインジケーターを使用すると、無効なデータが表示されます...なぜですか? EA では、現在のバーには始値だけの終値がありません。したがって、RSI を例として使用すると、RSI[0] は RSI[1] まで適切な値を与えません。RSI は PRICE_CLOSE を使用して計算するため... . EA は優れていますが、egie を定義するためには、ライブでテストする必要があります...
いくつかの明確化を行う必要があります。
間違っています (混乱しないように): #property indicator_separate_window lt;- CI は #property indicator_buffers 1 lt;- バッファーの量を教えてください。 be draw... #property indicator_color1 Red lt;- 最初のライン バッファに赤を使用するように API に指示しますOriginally Posted by ;
間違っています: SetIndexBuffer(0,ExtMapBuffer1);lt;- 0 は最初のバッファーのみが描画され、1 は 2 番目に描画されます (確率論では、2 行のため 0,1 になります) SetIndexStyle(0, DRAW_LINE);lt;- DRAW_LINE は 0 で定義されたバッファに適用されるため、ExtMapBuffer1Originally Posted by ;
左から右に移動します: 最後のバー (最も古い) から最新のバー (0:現在) へOriginally Posted by ;
私はこれに取り組み続けてきましたが、それは理にかなっています!初めての EA を書きましたが、初心者に大きな幸運をもたらしたと思います!良いご指導ありがとうございました!あなたなしではできなかったでしょう。私はこれが長い旅の始まりであることを知っています。すぐに奇跡が起こるとは思っていません。しかし、私は今、自然の奇妙さを前向きにテストしており、これまでのところうまくいきます! (デモ FXDD アカウントで) MQL4 の経験がほとんどない人は、フォワード テストで実際にうまく機能するものを書くことができないはずなので、私はそれを自然の奇妙さと呼んでいます。過去 24 時間で 180 ピップス。デモでの FWD テストの概要 (初心者の運、1 日だけ) http://www.venexys.com/HP002A2_FWD_DET_TEST_DAY001.gif
http://www.venexys.com/HP002A2_FWD_TEST_RESULTS.htmhttp://www.venexys.com/HP002A2_FWD_TEST_RESULTS.htm
あなたが指示したとおりにエラーなしでコンパイルされた CI を編集しました。それをチャートに適用すると、同じチャートで実行した RSI(21) と同じように模倣されていることがわかります。これまでに理解できたことは次のとおりです。 CI の場合、これはすべて次のとおりです。 #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 これに赤が適用されます。そしてこれ: extern int MyPeriod = 21;は単なる外部変数です。 (変数とは何かを理解しています。外部で作成されているため、起動時に小さなGUIで設定できます。)これは次のとおりです。 int init() { SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1);リターン (0);これは、グラフィカルに描画されるものを示し、「起動時に 1 回実行」セクションにあります。この場合、0 から始まる線を描画し、次のバッファーを使用してそれ自体を描画します [ buffer = ( 0 から始まるのは ExtMapBuffer1 の値です) ] 次に、スクリプトの「開始」部分までずっと下に移動し、ここに.... int start() { int limit = Bars-IndicatorCounted(); があります。* (カウントされたチャート内のバーの数からインディケータが最後に起動された後に変更されなかったバーの量を差し引いたもの) の結果に等しい整数定数を宣言します */for(int x=limit ; x gt;=0 ; x --)* For ( 「制限」に等しく、「x」がゼロ以上の整数「x」を宣言し、「x」を 1 減らします。) これにより、たわごとが 0 から始まり、毎回1つずつ戻ります。 (?) */{ ExtMapBuffer1[x]=iRSI(NULL,0,MyPeriod,PRICE_CLOSE,x);* ExtMapBuffer1[x] equals iRSI(......,x) */} コードの各行をゆっくりと調べて、理解を深め、インジケーター、色、バッファーなどを変更します。ゆっくりと浸透し始めています。短い時間でさらに多くの質問があると確信しています。これは、誰もが求めることができるほど詳細な説明です。このありふれた詳細を初心者に説明するために時間を割いてくれたことに感謝します.あなたに大きなカルマ!もう一度ありがとう!ハル
double ExtMapBuffer1[]; の下になりました。 extern int MyPeriod = 21; を追加します。 extern はインジケーターと対話するために使用されます。CI をインストールするとポップアップが表示され、入力タブに extern 変数が表示されます... ExtMapBuffer1[x]=1; を置き換えます。と: ExtMapBuffer1[x]= iRSI(NULL,0,MyPeriod,PRICE_CLOSE,x); remove : #property indicator_minimum 0 #property indicator_maximum 2 そしてコンパイル...何も表示されない場合。それで大丈夫です。インジケーターを削除して元に戻します... コンパイルしてもスケールは変わりません.なぜなら RSI 値が 0 と 2 の間に収まらないからです.値、バッファーの追加、色の変更、他のインジケーターの使用 (RSI の代わりに iCCI を使用)、知っておく必要があるのは、開始することだけです...後で表示されます...他の質問がある場合は、先に進んでください...: -) ハッピー ホリデー
![]()
1 添付ファイル出来た!フラットレッドラインを手に入れました。この最後の投稿には、私が消化しなければならないかなりの内容があります。起こっていることすべてをよく理解するために、私はそれを何度か調べます。この男に時間を割いてくれてありがとう。市場は閉鎖され、休日が近づいています。あなたとあなたが素晴らしいホリデーとハッピーニューイヤーを過ごすことを願っています!ハル
https://www.forexgroove.com/attachme...1210488381.mq4
Ok。 so resume Init lt;- プログラムはこの関数を 1 回だけ実行します (インディケータがロードされたとき) deInit lt;- プログラムはこの関数を 1 回だけ実行します (インディケータがアンロードされたとき) Start lt;- プログラムは毎回この関数を実行しますサーバーからデータを受信します。では、カスタム インジケーターとは何ですか?短くするために。カスタムインジケーター(今のところCI)を構築する主な理由は、アイデアをグラフィカルな方法で配置することです(さらに、サウンド、エクスポート、ファイルの読み取り/書き込み、アラートなどを実行できます)。しかし前に... CIは Array(Or buffer or table) を使用します。彼らは何ですか?変数とは何かを知っておく必要があります(そうでない場合は、それについて読んでください)。 100 個の変数 (変数 1、変数 2 など) を宣言するとします。そうするには多くの時間と労力がかかります...したがって、配列は複数の変数を1つの名前で組み合わせたものです(繰り返しますが、それ以上ですが、今のところは十分です)。 100個の箱が隣り合っていると想像してください。最初のものは 0、1、2 などです... (配列は 0 から (配列サイズ) -1 で始まります) ボックス #5 から値を取得/書き込みする場合は、Box[4] ( Box [BoxSize-1] ) 通常、宣言時にバッファのサイズを定義します。プログラムは、どのくらいのサイズが必要なのかわからないからです! ___ 簡単に言うと、プログラムはバッファに必要なスペースをメモリに割り当てる必要があります (例: int buffer[2]={1,2}; は int 型の 2 つのスペースをメモリに作成します)。変数を宣言するとき(int test
、プログラムは情報を受け取るためにタイプ「int」の1つのスペースを自動的に割り当てます。 (また、コード内でバッファを展開または縮小することもできます: しかし、今は忘れてください)。 ___ CI ショー グラフィック。そのためには、Buffer を使用する必要があります。 CI は、使用するように指示したバッファーを使用します。インディケータに使用する最大 8 つのバッファがあります (ただし、多くのテーブルを使用できます。後で説明します)。各ボックス (サンプルの説明を作成するため) は、グラフィック上の 1 つのろうそくに相当します。 Buffer[0] は Candle #0 などと並んでいます... 右から左へ (最も新しいものから最も古いものへ) 線は 1 つのボックスから別のボックスに描画されます: box[0] に 10 と 5 がある場合box[1] では、線は右から左へ、10 から 5 まで (上線) になります。最初のデモでは、インジケーター (フラット ライン) の値として 1 を入れます。ここに行きます: まず、CI のプロパティである '#property' を配置します #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 2 #property indicator_buffers 1 #property indicator_color1 CIの権利)。 'indicator_minimum' と 'indicator_maximum' を削除すると、CI バッファーの値から高値と安値がスケーリングされます。 (彼女のデモのように値として 1 のみを使用すると、最小値/最大値を設定しないと平坦な線が表示されません) 「indicator_buffers」は、グラフィックを出力するために使用するバッファーの量 (必要な行数:最大 8)。 'indicator_color1' は簡単です。線に必要な色を指定することです。すべての「#property」の下に double ExtMapBuffer1[]; を置きます。 「ExtMapBuffer1」はウィザードによって付けられたデフォルトの名前ですが、毎回変更します。言いましょう Buffer[];この場合、必要なスペースの量を言う必要はありません(Buffer[x]
'Init' 関数で実行されるためです。あなたが入れたinit関数で: SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,ExtMapBuffer1); 'SetIndexStyle' は、グラフィックのタイプ (線、ヒストグラムなど) を定義するために使用されます。色... バッファを配置する順序はそれほど重要ではありませんが、次々に描画されるため、0 は 1 の下、2 は 1 の上になります。 MACD ラインがヒストグラムの背後にある場合、MACD を想像してみてください。可視性の問題です (ただし、0 から x でなければなりません)。'SetIndexBuffer' は 'ExtMapBuffer1' を 0 に関連付け、これを使用してバッファを識別し、それを使用して CI に線を描画します。それだけです。あなたはあなたのベース宣言を持っています...それを使ってみましょう... 「開始」関数に入れます: int limit = Bars-IndicatorCounted(); for(int x=limit ; x gt;=0 ; x--){ ExtMapBuffer1[x]=1;あなたの完了...関数や他のものに関する情報については。それをダブルクリックしてから「F1」 試してみてください...そしてうまくいくかどうか教えてください...あなたはあなたの平らな線を持っています...