ea n7s_ao_772012 - ページ 29

 
boing9267 >> :

>>具体的にはどのようなことがショックなのでしょうか?

本当に紛らわしいですね。変数名が悪夢のようです。変数の半分がグローバルになっていますが、そうではありません。要するに、今は仕組みを理解するために全部書き換えているんです。

 
:) 私も自分用にやり直しを始めたので、週末にオプションを比較検討しようかと思います :)
 
boing9267 >> :
週末には完成すると思うので、オプションを比較することができます。)

ご覧ください。だから、理解できないのは私だけじゃないんだ :)

 
ちなみに、コードの学習にはさらに適していると思います:)。だから、シューターには感謝している
 
boing9267 >> :
コードの学習にはなおさらだと思います:)。だから、撮影者に感謝する。

個人的なメッセージをチェックする

 
mpeugep писал(а)>>

面白い観察ですね!できればDCの名前、少なくとも最初の文字を教えてください)

А

 
rtr989 писал(а)>>

馬鹿な質問で申し訳ないのですがこれらの最適化はすべて互いに関連しているのですか?つまり、ステージ2はステージ1の後のデータに基づいているのですか?最初のステージの後、私は_stage_2=y_l3.setを ロードし、私が理解するように最初の最適化の後にあったそれらの入力パラメータは_stage_2=y_l3.setに 規定されているものと置き換えられます? それなら最初の最適化は何の意味があるのでしょう?ステップ_1=x_l3.setをロードし、最適化し、私の意見で最高の結果を選び、右クリックで「入力パラメータを設定」し、テスターにかけ、次に_step_2=y_l3.setをロードして最適化のボックスをチェック し...とやっています。で、6回目の最適化の後、必要なセットを得ることができましたが、これでいいのでしょうか?

あなたはすべて正しく行っているのです。そして、ほとんどすべてを正しく理解しています。ただし、_step_2=y_l3.setのような最適化セットファイルは私が特別に書いたもので、順次読み込んでも先に得た値には何の影響も及ぼさないということです。>>依存性についてですが、1番目と2番目は互いに依存しません(ほとんど:-)) 3番目は2つ(1番目と2番目)に依存します 4番目は3つに依存します 5番目も3つに依存し4番目にはほとんど依存しませんが 6番目は全てに依存します。

 
ShestkoFF писал(а)>>

今日、Expert Advisorの仕組みを理解してみようと思い、衝撃を受けました。私には、すべてが非常にわかりにくいものに見えます。
SHOOTER777さん以外でEAの動作を理解している人はいるのだろうか?どのように最適化すべきかではなく、どのように機能するかという意味です。

申し訳ありませんが、これは私のEAの中で最も簡単なものの1つです。他には、私でも時間が経つとすぐにわからなくなる--忘れてしまう、何がどう動いているかを他人に説明するのが面倒くさい(私がやっているのではない、というヒントもありました)。それを共有することで、ある瞬間を修正したり、改善したりするのに役立てようとしたのですが......。 私は主に関数でコードを作るようにしていますが、その方がわかりやすくていいですね。コードで簡潔なコメントをつける方法を学びたいのですが・・・。

 
ShestkoFF писал(а)>>

本当に紛らわしいですね。変数名が悪夢のようです。変数の半分はグローバルですが。要するに、今はすべての仕組みを理解するために、すべてを書き換えているのです。

変数に「ひび」が入っている可能性があります。プログラミングを詳しく勉強したわけではないので、何かヒントがあれば、建設的な批評をお願いします。

 
SHOOTER777 >> :

変数に "問題 "があるかもしれません。プログラミングを詳しく勉強したわけではないので、アドバイス、建設的な批評をお願いします。

私は、うまくいっているものを批判するのは好きではありません。コードの批判だけしておきます。

  • 全部を一行で書く必要はない、そんなやり方ではコードを読むことは不可能だ。例えば、Expert Advisorの初期化コードです。
int init(){ MMH1 = Hour( ); LFB  = iTime(Symbol(), 0, 0); H1();
Delta_G12 = G12(); if ( IsOptimization( )  ) TrBlnc = false;//if ( IsTesting() ) TrBlnc = false;
if ( VSR () !=0) { Flg=false;} else { Flg=true;}
cmmnt();}

を書いた方がいいと思います。

int init(){
	expertInitHour = Hour();
	SYMBOL = Symbol();
	lastBarTime  = iTime(NULL, 0, 0); 
	H1();
	AO_Delta = indicatorDelta(); 
	if (IsOptimization()) {
		TrBlnc = false;
	}
	if ( VSR() != 0) {
		Flg=false;
	} else {
		Flg=true;
	}
	cmmnt();
}

コードは読みやすくなりましたが、この置き換えでも、H1, VSR, Flgが何であるかは不明なままです。

  • 変数に意味のある名前をつける。変数名や関数名を考えるのに数分長くても、それが何のためにあるのかを思い出しやすい方がいい。例:G12機能-何のためにあるのか?これは、最後のインジケータ値間のデルタを計算します(インジケータのバリアントを選択しても持っています)。まあ、indicatorDeltaと呼ぶべきでしょう、その方がずっと簡単でわかりやすいですね。
  • ローカル変数の場合は、グローバル変数にしないでください。どのような機能で見たのか、覚えていません。
  • グローバル変数をスタティックにしないのは、意味がありません。そうでない場合は、その説明をお願いします。
  • 言語で定義された標準定数を使用する。例えば、時間間隔を指定する。double iA_C (int pr){int tmfr=60; return(iAO(Symbol(), tmfr, pr));} は double iA_C (int pr){return(iAO(Symbol(), PERIOD_H1, pr));} に置き換えたほうが良さそうです。


このEAを書き換えて、自分にも、そしておそらく他の人にもわかりやすいようにしようと思っています。

アイデアを教えていただき、ありがとうございました。毎週、作品を共有し、結果を掲載しているのはとても素晴らしいことです。
批判をお詫びします :)