学習ロジック - ページ 5

 
Vinin:


それは私のセリフではありません。それは、著者の

最適なstart()コード

この2行は、控えめに言って違和感がありますね。

   limit = Bars - counted_bars-1;
   if(Bars - counted_bars > 2) limit = Bars - nPeriod-1;

という感じです。

   if(Bars - counted_bars > 2) limit = Bars - nPeriod-1;
   else limit = Bars - counted_bars-1;
 
PapaYozh:

このように書けるのに、なぜブール変数に踊らされるのか理解できない。

好きだったんだ、思い出させてくれてありがとう、PapaYozh。自分でもそのような構造を作り、そして忘れていた...。
 
Vinin:


そして論理も、考える論理。

第三の選択肢は、指標の論理条件を完全に放棄することである。可能なのだろうか、という疑問が湧いてきます。

レッツトライ .

このために、いくつかの論理変数を追加します。

start関数のコード全体は次のようになります。


簡略化できるようです。

for(int i = 0; i < limit; i++)
{
// Option three_v1

high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i);
atr=高-低;
MaTDn[i] = low - atr;
MaTUp[i] = high + atr;
} }.

ファイル:
 
Mathemat:
好きだったんだ、思い出させてくれてありがとう、PapaYozh。私自身、そのような構造を作り、そして忘れていた...

私見ですが、Symbol()関数の 呼び出しが過剰に使われているように思います。

私ならそのように書きますね。

   string smbl=Symbol();
   showEUR  = ( StringFind(smbl, "EUR", 0) != -1);
   showUSD  = ( StringFind(smbl, "USD", 0) != -1);
   showGBP  = ( StringFind(smbl, "GBP", 0) != -1);
   showCHF  = ( StringFind(smbl, "CHF", 0) != -1);
   showJPY  = ( StringFind(smbl, "JPY", 0) != -1);
でも、それはロジックの話ではないんです :)
 
Vinin:

実にシンプルなことです。他の人が最高のコードを書くのを助けたい、他の人から学びたいという欲求があるのです。

人は、ある種の固定観念を持つようになり、それが時に役立ち、時に妨げになることはよく知られている。

インジケーターのバリエーションを用意し、何がどうしてそうなったのかを説明できるようにしたいと思います。もちろん、興味があればですが。


最適なコードの作り方を例示して説明しても、抜けが多くてダメなんです。

要は、最適なコードを作るには、いろいろなルールがあるということです。例えば、MQL4言語をご存知の方でも、プロセッサにとっては乗算や除算よりも加算や減算の演算の方がはるかに簡単だということをご存知の方は少ないでしょう。コードの最適化の観点から、a=b*2よりもa=b+bと書いた方が良いということを知っている人はあまりいないでしょう。ですから、プログラミングや最適化の論理を理解するには、最適なコードを構築するための著作やアルゴリズム言語の勉強をさせたり、将来のプログラムのフローチャートを作成して抜けをなくし、手戻りを少なくすることに慣れさせる方がよっぽど有効だと考えています。

この投稿にダウンロードできる、コードビルディングに関する非常に優れた書籍へのリンクを同封します。

С.S・マコネル「パーフェクト・コード」。


http://depositfiles.com/files/ebk6t6t5h(ファイルサイズ 21 Mbytes. フォーマット - djvu)からダウンロードできます。

ですから、一般的には、このスレッドでは、ソースコード部と最適化コード部の特殊なケースを、なぜ最適化コード部がソースコード部よりも優れているのか、なぜこのように最適化されているのか、という説明とともに扱うしかありません。それこそ、元々欲しかったんじゃないですか?

 
drknn:


この投稿には、コードビルディングに関する優れた書籍のダウンロードリンクが添付されています。

С.S・マコネル「パーフェクト・コード」。

+1、とても役に立つ本です。
 
drknn:

ですから、一般的にこのスレッドでは、ソースコード部と最適化コード部の特殊なケースについて、なぜ最適化コード部がソースより優れているのか、なぜそのように最適化されているのか、という説明をつけて議論することしかできないのです。それこそ、最初から望んでいたことだと思うのですが。

悪くはないのですが、やはり枝葉の名前をはっきりさせるか、論理の勉強を始めるか、どちらかが良いと思います。

2つ目は本当に自分でもどうしたらいいのかわかりません...))

 
denis_orlov:

それも悪くはないのですが、枝葉の名前をはっきりさせるか、論理の勉強を始めるか、どちらかにしたほうがいいと思います。

2つ目は本当に自分でもどうしたらいいのかわかりません...))


論理学(ギリシャ語 λογική- 「推論の科学」、λόγος-「スピーチ」、「推論」、「思考」から「推論の芸術」-知的 認知活動の 形態、方法、法則の科学、論理言語による 形式化。この知識は理性に由来するため、論理学は正しい 思考の 形式と法則を研究する科学とも定義される。推論は言語による推論の 形をとり、その中で証明と 反証は 特別な場合であるため、論理学は推論の様式の科学、あるいは証明と反証の方法の科学と定義されることもある。科学としての論理学は、認識の過程において、感覚的な経験ではなく、先に得た知識から間接的に真理に到達する方法を研究するので、推論知識の 導出方法に関する科学と定義することも可能である。

論理の法則と論理的思考の方法を応用して得られる演繹的知識、つまり、あらゆる論理的行為の目的は、真理を達成することと、得られた知識を世界の現象や出来事についてより深く知るために応用することである。

論理学の主要な仕事の一つは、ある前提からいかにして結論に至るか(適切な推論)、また、研究対象となる思考対象のニュアンスや当該現象の他の側面との関係をより深く理解するために、思考対象に関する真の知識をいかに獲得するかということである。

論理は、ほとんどすべての科学の道具の1つである。

 
denis_orlov:

それも悪くはないのですが、枝葉の名前をはっきりさせるか、論理の勉強を始めるか、どちらかにしたほうがいいと思います。

2つ目のやり方は自分でもよくわからないのですが......)


私にとってはどんな感じだったのか、共有できます。

論理を科学として理解するのに3年かかったが、なぜ論理が必要なのか、といった本質を理解することはまだできなかった。ほとんど役に立たないパターンの集合体なのだが、何かおかしいと思い、そのスキームを推論し、数式を駆使してあらゆる論理的問題を解決しようと、読み続けた。そして、突然に思いついたのです......。そして、ようやくこの学問の価値を理解した私は、友人たちを積極的に論理学の勉強に参加させるようになったのです。文字通り、論理に「燃えて」いたのだ。私の友人たちは、論理のユーモア、難しい結論の美しさ、パラドックスの解決不可能性など、すべてに積極的に引き込まれ、私がいる間、少なくとも何かを学んでくれたのです。しかし、一人残されると、火の粉のように消えていく。誰一人、自分の魂の火を灯すことはなかった。ここで私は、彼らが私に興味を持ったが、それ以上ではないことを理解した。彼らの背後には、この科学の世界に入らざるを得ないようなキック力がある者はいなかったのだ。そして、実際に論理学を学んだ人たちを、私自身は2つに分類していました。全員、強制的に勉強させられた。逃げ場がないのだ。大学で論理学を教えている教授の中には、「学生にとって非常に難しい」と言う人もいる。逆に、「こんなに難しかったのか」「こんなに簡単に応募できたのか」と驚かれるほどです。そこで私自身は、強制されたすべての人を、論理を勉強しているうちに好きになった人と、単位を合格して忘れてしまった人の2つのクラスに分けました。好きになった人と話すのはいつも楽しいですね。すぐに理解してくれます。しかし、時には忘れっぽい人に対処するのは難しい。そういう人は、自分の死を賭けてロシアンルーレットをするようなものだからだ。意識的にはあらかじめ作られた計画でしか行動できないこと。これが、彼らの生活に秩序を取り戻す唯一の方法なのです。行動計画を立てるのは、思考のプロセスです。正しく行わないと、良い結果は得られません。頭の中に混沌がある者は、身辺も混沌としている。つまり、思考が人生を支配していることがわかったのです。そして、ここでロジックを放棄することは、墓場への早道である。

:)もういい加減にしないと、そんな話を何時間でもしてしまい、とうとうこの枝の話題から遠ざかってしまう。

追伸

ただ一つ付け加えるとすれば、私は人生の中で、計画も希望もすべて崩れてしまい、どうしていいかわからないほど困難な状況にあったということです。すごく痛かったです。絶望感で息が詰まる思いでした。状況を理解しない限り、自分の人生をどうするか、周囲とどう関わるかは決められないと思ったからです。論理学という学問があることは本で知っていました。この時点で、自分の結論が正しくなるように、勉強しなければと思いました。私の人生の複雑さと苦痛は、私を駆り立て、論理だけでなく、他の多くの科学に私の疑問に対する答えを求めさせました。それはもう過去の話です。なぜ、こんな話をしたかというとただ、私がロジックを勉強するようになったきっかけを理解してほしかったのです。私も例外ではなく、この学問を棒読みで勉強しなければならなかったという例を挙げました。でも、ユニで勉強したわけではなく、独学で。

 
nikost:


さらに単純化することができそうです。

for(int i = 0; i < limit; i++)
{
// バリアント 3_v1

high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i);
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i);
atr=high-lowです。
MaTDn[i] = low - atr;
MaTUp[i] = high + atr;
}


レンダリングは元のコードと同じになるようにしました。ATRの計算方法は異なります。2つの指標を比較すれば、その違いがわかると思います。