[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 235

 
Metatrader4 Strategy TesterでExpert Advisorを使用せず、手動でポジションを 開くことが可能かどうか教えてください。電卓でpipsを計算するのではなく、ボタンを押すと注文開始ウィンドウが表示され、データを記入してF12を押すと、EAで開いた時と同じようにテスター自身が計算します。おそらく、この目的のための既製のプログラムがあるのでしょうが、私が探したところでは見つかりませんでした。
 
皆さん、こんにちは。ここで質問があります。正確にはいくつか質問があるのですが、助けてください。
1: レベルを設定し、価格がそのレベルに等しい場合、注文を出す。問題は、価格がこのレベルをスキップすることができ、それを介して迅速に飛んで、私が持っているレベルと等しくならない場合、または私はGAPを持っている場合は、それがあるべき場所に、すなわちレベルで、注文が開かれるのでしょうか。
2: ログにエラーが表示されるのですが、その意味が知りたいです。[B]1-Signal-failed parse signals,[/B] [B]2-DataCenter connecting failed [2] and [6][/B] 3-(I do not remember exactly but it says complete disabled when modifying order)ですか?そのような場合、あるいはその他の場合、どうしたらよいのか、アドバイスをお願いします!本当にありがとうございました。
 
TarasBY:

何が起こっているのかを理解するためには、計算結果をプリンターに出力する必要があります。

と分析する。

私は何か誤解していたようです。

ifヘッダーの条件の実行を どうイメージしたか

-プログラムはBid変数の値(0.86084)を取得します。

-変数Bid(0.86084)の値を変数massiv[S](0.85375)に落とします。

-得られた差分0.00709を定数0に対応させる

-差分が0以上の場合、if文本体の制御は行わず、注文を開けない。

-差分≦0の場合、if文本体に制御が渡され、注文が開始される

関数ArrayBsearch( massiv, value,WHOLE_ARRAY, 0, MODE_ASCEND)の 実行を 想像していたとおりです。

ヒント:配列の1次元目で最初に見つかった要素のインデックスを返します。

配列中に指定した値を持つ要素が 存在しない場合、この関数は、指定した値に最も近い要素のインデックスを返します。

-最後のティック値(Bid-0.86084)と等しい 値を取得します。

-この関数は,配列の値を小さい方から大きい方へと辿っていきます.

- つまり0 .820864(first), 0.81074,0.85375,0.80084,0.81084,0.86088(last) つまり、 0.86084 より小さい値に最も近い のは 0.85375 となるわけです。0.85375から 0.86088の 間が 求める値=0.86084 です。

=====================================================================================================

関数printのパラメータは、要素 massiv[S]の値以外に massiv[S-1]とmassiv[S+1]があります。 massiv[S] (0.85375) からまず1を引き、次に1を足すということです。

ヘッダで(あるいは ArrayBsearch()で)arrayiv[S]の値からまず1を引き、次に1を足すというのは読んだことがないのですが、どうでしょうか?

この点について、ご説明いただくか、リンクを貼っていただければ幸いです。

ありがとうございます。


 
solnce600:

関数printには もう一つパラメータが あり、massiv[S-1]とmassiv[S+1]です。 massiv[S]( 0.85375) の値から1を引き、その後に1を足したいのですが、どうすればよいでしょうか?

ヘッダー(または ArrayBsearch())が最初にmassiv[S]の値から1を引き、それに1を足すかどうかは、どのMQL教科書でも読んだことがありません。

この点について、ご説明いただくか、リンクを貼っていただければ幸いです。

ありがとうございます。

プリント した後に推理を応用することになります。プリントはできていますか(中身は何も変える必要はありません)。- 中身を見せてください。
 

このリンク先で印刷する。

http://clip2net.com/s/4MRjJe

 

ということに気づきました。

- massiv[0]の値(おそらく[S])は、そもそも配列の最初の値

- massiv[1]の値(おそらく[S+1])は,配列の2番目の値,つまり配列の先頭の値に続く値です。

-これらの値は、PRINTが 発生するたびに繰り返されます。

=============================================

- 2000年当時は、ドットの後にさらに4桁の値がついていました。

- チャート上のテスターで-5桁

-結果のテスターで- 5つのサイン

-テスター内のログ プリンター内のログ - 4文字

そして、配列の中に5桁の数字が入っているんです。

QUESTION - ソフトウェアは何桁まで読み取れるのか?

 
solnce600:

このリンク先で印刷する。

https://www.mql5.com/go?link=http://clip2net.com/s/4MRjJe

何も見えないのか?

ArrayBsearch()はどこでも(要素のインデックスとして)0を返すんですね。配列の0番目のセルには、1.0408という数字があります。コードに戻ろう。

if( (NormalizeDouble (Bid-massiv[S],Digits) <=0))

ここで、得られた変数の値をこの条件に代入する(カリテBidは0.8~0.9の範囲にあるので、この範囲の最大値-0.9を取ることにしよう)。if (0.9000 - 1.0408 <= 0) OrderSend().条件を満たしているRIGHT!!!配列の完成に誤りがないかを確認する。おそらく、ArrayBsearch()関数のこの句に注意を払わなかったのでしょう。

)バイナリサーチはソートされた配列しか扱えません。ArraySort() 関数は、数値配列の並べ替えに使用します。

P.S. プリントは画像で提供するのではなく、ターミナルウィンドウでプリントの数行(10-20行で十分)を同時に選択し(やり方がわからなければSHIFTを使って)、選択した行をSRCボタンを使ってコードとして投稿にコピー&ペーストすることが望ましいです。

追伸:明らかな構文エラーに気づきました。この行は、start()関数の外側(前)に配置されるべきです。

#include <MASSIV.mqh> 
 
solnce600:

ということに気づきました。

-テスター内のログ プリンター内の ログ 4文字

ドキュメントを読む https://docs.mql4.com/ru/common/print

voidPrint() ...)
エキスパート・ログに何らかのメッセージを出力します。パラメータはどのようなものでもよい。パラメータ数は64個までとする。

Print()に配列を渡すことはできません。配列は、要素ごとに印刷する必要があります。

double 型のデータは、ポイントの後に小数点以下4桁を印字します。よ り正確な値を得るには、DoubleToStr() 関数を使用する必要があります。
 
TarasBY:

何も見てないのか?

ArrayBsearch()はどこでも(要素のインデックスとして)0を返すんですね。配列の0番目のセルには、1.0408という数字があります。コードの話に戻ります。

ここで、得られた変数の値をこの条件に代入する(カリテBidは0.8〜0.9の範囲にあるので、この範囲の最大値-0.9を取ることにしよう)。if (0.9000 - 1.0408 <= 0) OrderSend().条件を満たしているRIGHT!!!配列の完成に誤りがないかを確認する。おそらく、ArrayBsearch()関数のこの句に注意を払わなかったのでしょう。

)バイナリサーチはソートされた配列しか扱えません。ArraySort() 関数は、数値配列の並べ替えに使用します。

バイナリサーチの意味がよくわからないのですが。2次元配列での検索でしょうか?でも、一寸法師は持っています。
 
mt 4 のフィボナッチ周期の調整方法 200 144 89 55 34