2008年6月11日 (水)

つづき6 年率換算利回り

 つづき  (3月22日に書いていた記事)

 分らない時は具体的な数字を入れて考えると分りやすい。

例えば10日で100万が105万になったとする。

10日間換算利回りは105万/100万で1.05となる。

そこで1日間換算利回りをaとすると、

  aの10乗したものが1.05となれば良いからのだから、

 aは1.05の10平方根となります。言い換えれば1.05の(1/10)乗です。

          *

つまり

 a=(最終資産/初期資産)の(1/その日数)乗

となります。

          *

月間換算利回りbは月の営業日数21を1日間換算利回りaに乗じれば良いのです。

b=aの21乗={(最終資産/初期資産)の(1/その日数)乗}の21

       =(最終資産/初期資産)の(21/その日数)乗

同じ様に年間換算利回りcはaの245乗で(年の営業日数245)

      c=(最終資産/初期資産)の(245/その日数)乗

となります。先の具体的な数字を入れますと

      c=(105万/100万)の(245/10日)乗

です。スッキリした。happy01

つづく

| | コメント (0) | トラックバック (0)

2008年5月24日 (土)

つづき5 ヒストリカル・ボラティリティ

  下の記事は3/21に書いた記事で尻切れトンボになっていたものです。連休でもあるし暇な人は読んでみてください。

 つづき

その前に元になる数式を調べないといけない。

2Chのジンサンに聞いたらその式を書いてあるサイトを教えてもらった。それが下の式だ。

ヒストリカル・ボラティリティ

株価の値動きがモデル(1)に従うと仮定し、過去の株価のデータから推定したσの値。 過去n日にわたって株価を観測したとし、Siを第i日の(例えば)終値とする。(今回の場合はSiは第i日の資産です。)

u_i:=\log \frac{S_i}{S_{i-1}},\ \ \overline{u}:=u_iの平均

と置くと

ここまでは前の記事で書いた通りでした。

s=\sqrt{\frac{1}{n-1}\sum_{i=1}^n(u_i-\overline{u})^2}

が推定値となる。このような手続きによって推定された値をヒストリカル・ボラティリティという。

これに245日の平方根をかけると年率ボラティリティになるみたいだ。

ルートの中に×245と入れても良い。

        ********

//損益率合計
var assetRateSum = 0;
for (i = 0; i < assetRate.length; i++) {
  assetRateSum += Math.pow((assetRate[i]-assetRateAvg),2);
}
assetRateSum /= (assetRate.length-1);

          *

Math.pow() という関数が出てきた。これはpow(2,3)なら2の3乗となる。

だから
assetRateSum += Math.pow((assetRate[i]-assetRateAvg),2);

この式は

(損益対数差-損益対数平均)の2乗の総和となる。

          *

次のこの式の/=は assetRateSum=assetRateSum/98

だろう。

        ********

//日率換算利回り

var profitRateDaily

= Math.round((Math.pow(assetdata[assetdata.length-1]/

assetdata[0],1/assetdata.length)-1) * 10000)/100;

Math.round()は小数点以下を四捨五入します。

( )が3個も有るのでややっこしいのですが、

Math.round(        *10000)/100となっています。

     の値が0.12456789ならば*10000で1245.6789となりMath.round()で小数点以下は四捨五入され1246となります。それを100で割りますから。最終的に12.46となりこれに%をつければ12.46%と率になります。

     の中は

Math.pow(assetdata[assetdata.length-1]/assetdata[0]

     ,1/assetdata.length)-1

          *

 (最終資産/初期資産)の(1/100)乗-1

となります。(デー多数を100とした場合)

統計的な式で僕には良く分りません。

        ********

月率換算利回り profitRateMonthly

   (最終資産/初期資産)の(21/100)乗-1

年率換算利回り profitRateYearly

   (最終資産/初期資産)の(245/100)乗-1

となります。

        ********

年率ボラティリティ volatility

Math.sqrt(assetRateSum) * Math.sqrt(daycountY)

(損益対数差-損益対数平均)の2乗の総和の平方根

                          ×245の平方根

        ********

年率シャープレシオ sharpRatio

 profitRateYearly / volatility

 年率換算利回り÷年率ボラティリティ 

となっています。後半は何がなんやらさっぱりわかりませんね。

ちょっと長くなりましたが、途中で切る事が出来なかった。 

次回   よく分らない年率換算利回り profitRateYearlyを考えてみる。

       

| | コメント (0) | トラックバック (0)

2008年4月 8日 (火)

つづき4 損益の対数平均

つづき

今日は損益、勝率、損益率を出します。

        ********

if(i>0){
   //損益
   var diff = assetdata[i] - assetdata[i-1];
   if (diff > 0) {
    //勝ちトレード数が増える
    winCount++;        // winCount = winCount +1
    //利益合計が増える
    winSum += diff;   // winSum = winSum + diff
   }
   if (diff < 0) {
    //負けトレード数が増える
    loseCount++;
    //損失合計が増える
    loseSum += diff * -1;
   }
   //その日の損益率←1トレードの対数損益差
  assetRate[i-1] = Math.log(assetdata[i]/assetdata[i-1]);
   //平均損益率←1トレードの損益対数平均
  assetRateAvg += assetRate[i-1]/(assetdata.length-1);
  }

          *

説明  データが1個目のときは計算をしても意味がないし、エラーが出るので、if文 if(i>0){ でデータ2個目から計算するようにします。

 var diff = assetdata[i] - assetdata[i-1];

変数 diff はそのときの損益です。

          *

if (diff > 0) { winCount++;   winSum += diff; }
    
if (diff < 0) { loseCount++; loseSum += diff * -1; }

ソースコードには間に説明文 //・・・ が入っているので長くなっているけど、それを省くとこの様になります。

 上の式は損益diffがプラスなら、勝ちトレード数winCountが++(1増えますよと言う命令)で1増えます。winSumは利益合計で+=(前のwinSumに今回の損益diffを足しなさいと言う命令)によって損益diffが足されます。

 下の式はその反対で損益diffがマイナスの時です* -1によってdiffはプラスの値に変えられています。損益合計loseSumはプラスの値になっています。

          *

  //その日の損益率←1トレードの対数損益差
  assetRate[i-1] = Math.log(assetdata[i]/assetdata[i-1]);
   //平均損益率←
1トレードの損益対数平均
  assetRateAvg += assetRate[i-1]/(assetdata.length-1);

説明 なぜか[i-1]前日になるのですねsign02

Math.log()関数が使われています。これは対数です。具体的な例で考えてみるのが良いようです。

 i は10とします。 i-1 は9です。

資産assetdata[ 9 ] が100万、資産assetdata[ 10 ] が105万とラッキーにも資産が増えたとします。

 assetdata[i]/assetdata[i-1]は105/100で1.05となります。それの対数です。

 対数なんてすでに忘れている。もう一度軽く数二の参考書を見なければ。

   休憩   cafe

        ********

 ここで、1.05としてはいけない。これは単純な平均ではない対数差だ。

assetRate[i-1] =Log(A10/A9)= LogA10-LogA9

となる。これは資産曲線を対数に直し前日との差を求めたことになります。

          *

assetRateAvg += assetRate[i-1]/(assetdata.length-1);

ループが終わった時点でassetRateAvgは求まります。

assetRateAvg

=(assetRate[0]+assetRate[1]+assetRate[2]+・・+assetRate[98])/99

=[{Lo(1)-Lo(0)}+{Lo(2)-Lo(1)}+{Lo(3)-Lo(2)}+

・・・+{Lo(98)-Lo(97)}]/99

={Lo(98)-Lo(0)}/99

となります。

これは、対数差をデーター数で割る対数平均です。

間違っていたらゴメン。対数は日常ほとんど使わないので高校の時習っていたが忘れている。地震のマグニチュードなんかも対数だった。参考書を見て、閃いて来た。

ソースコードの説明を書き直しをしよう。

つづく

| | コメント (0) | トラックバック (1)

つづき3 MDD率

つづき

 var で 変数の宣言と初期値の設定が続きます。これは注釈通りです。

        ********

for (i = 0; i < assetdata.length; i++) {
  var asset = assetdata[i];
  //最大資産を求める
  maxAsset = Math.max(asset,maxAsset);
  //最大ドローダウンを求める
  maxDD = Math.min(maxDD,asset/maxAsset - 1);
  if(i>0){
   //損益
   var diff = assetdata[i] - assetdata[i-1];
   if (diff > 0) {
    //勝ちトレード数が増える
    winCount++;
    //利益合計が増える
    winSum += diff;
   }
   if (diff < 0) {
    //負けトレード数が増える
    loseCount++;
    //損失合計が増える
    loseSum += diff * -1;
   }
   //その日の損益率
   assetRate[i-1] = Math.log(assetdata[i]/assetdata[i-1]);
   //平均損益
   assetRateAvg += assetRate[i-1]/(assetdata.length-1);
  }
}

          *

説明 ループの説明は前にしたので省きます。

仮にデータが100個有って今10回目のループとします。i は9です。

var asset = assetdata[9]; 

変数assetにassetdata[9] が入ります。

maxAsset = Math.max(asset,maxAsset);

Math.max は( )内の一番大きい値を返します。もしもassetの値が今までで最も大きければ maxAssetはassetdata[9]の値になります。資産の最高値が更新すればmaxAsset がその値に変わります。maxAsset最大資産です。

          *

maxDD = Math.min(maxDD,asset/maxAsset - 1);

今までの最高資産が100万とします。maxAssetは100万です、それがassetdata[9]は95万であったとします。asset/maxAsset - 1は95/100-1で-0.05となります。今までのmaxDDが-0.04(資産96万であるなら、Math.min( )は( )内の一番小さい値を返しますから、maxDD は-0.05に変わります。maxDD は最大ドローダウン率ですね。

        ********

 もしも300万から初めてそれが一時500万に増えて、今150万になっていたなら、MDDは-150万ではなく-350万なのかsign02それではMDD率70%となるではないか。crying

 つづく

| | コメント (0) | トラックバック (0)

2008年4月 1日 (火)

つづき2 データの並び替え

 つづき

本に書いてないこともある。分らんwobbly

//データの並び替え
if (document.getElementById('reverse').checked) {
  var assetdataTmp = new Array();
  for (i = assetdata.length - 1; i >= 0; i--) {
   assetdataTmp[assetdata.length - 1 - i] = assetdata[i];
  }
  assetdata = assetdataTmp;
}

          *

if (document.getElementById('reverse').checked) チェックボックス'reverse'にチェックが入れば{  }で挟まれた文が実行されます。

 var assetdataTmp = new Array(); 新しい変数の宣言assetdataTmp[ ]でVBAのように変数の数を入れる必要はありません。

for (i = assetdata.length - 1; i >= 0; i--) 最初, i にデータの数より1少ない数が入ります。そして、iが0より大きければ実行されます。その後でi--と書かれているのでiは1づつ減ります。そしてiが0になればループから出て行きます。

          *

assetdataTmp[assetdata.length - 1 - i] = assetdata[i]

 実際に100のデータが有るとします。assetdata.length は100です。最初 i は99が入ります。

ループ1回目 

assetdataTmp[assetdata.length - 1 - i] は[100- 1 - 99] で[0]

assetdataTmp[0]= assetdata[99] となります。

ループ2回目

i はi--により 1減り98になります。

assetdataTmp[assetdata.length - 1 - i] は[100- 1 - 98] で[1]

assetdataTmp[1]= assetdata[98] となります。

ループ3回目

i はi--により 1減り97になります。

assetdataTmp[assetdata.length - 1 - i] は[100- 1 - 97] で[2]

assetdataTmp[2]= assetdata[97] となります。

          ↓

          ↓

ループ100回目

i はi--により 始めより99減り0になります。

assetdataTmp[assetdata.length - 1 - i] は[100- 1 - 0] で[99]

assetdataTmp[99]= assetdata[0] となります。

ループ101回目

i は0なので実行されないでループから出て行きます。

          *

 assetdata = assetdataTmp

まとめてassetdata[ i ] に assetdataTmp[ i ] が入ります。これで逆順が完了しました。

今回は前回と違いプログラムの基礎的な部分ですから、すんなりと行きました。

つづく

| | コメント (0) | トラックバック (0)

2008年3月24日 (月)

JavaScriptの部分

 つづき

 いよいよJavaScript です。先日書いたコントロールボタンを押せば、以下に書くfunction calc()が呼び出され、実行します。

        ********

<script>
function calc(){
//資産履歴の入力
var assetdata = document.getElementById('data').value.split("\n");
for (i = 0; i < assetdata.length; i++) {
  //
  assetdata[i] = assetdata[i].replace(/^\s+|,|\s+$/g, "");
  //
  if(assetdata[i] == ""){
   assetdata.splice(i,1);
  }
}

          *

説明   var assetdata = は変数の宣言です。同時にassetdata(任意の変数名)にテキストエリアに貼り付けられたデータが入ります。\nで分けられたデータといういみでしょうね。ところが、ここからが大変、VBA、とまったく違う、UWSCよりも厄介なbearing)

 たくさんのデータを入れるというのは初めての者にとっては難しい物だ。

 assetdataには全てが入るのか?

 本によると、上の文で勝手に\nで分けられたデータが変数assetdata[ 1 ],assetdata[ 2 ],・・・・と入っていくようだ。 VBAだとDIMでassetdata( 2700 )と宣言しないといけない。

 ところが、サンプルのデータは\nで分けられているが、自分が貼り付けたデータは\nで分けられていない。sign02

 分らないところは飛ばしても良いのだ、例えば、自分の興味のある記事の部分だけを読んでも良いし、そうしていれば後で次第に分ってくることも有る。

          *

 for ループ

for (i = 0; i < assetdata.length; i++)

説明 これも、VBAとは違う。i=0 から始まり、多分assetdata[ i ] にデータが入れられたときに、データ数が決まり.lengthがその値になる。例えばデータ数が100なら99まで、このループは続けられる。そしてi++はiの値がそのあとで1増えるのだつまり、i=i+1 と同じ。

 この式には別に++i というのがある。これは代入する前に1増えるのだ。

 なぜ99までなのかと疑問に思うかもしれないが、この場合iは0から始まっているから99でちょうど100となる。

 i が assetdata.length と同じになったときこのループから出るのだ。

          *

assetdata[i] = assetdata[i].replace(/^\s+|,|\s+$/g, "");

説明 本を読んでも分らない。多分データに¥が付いていたら除くための文だろう。replaceは文字の置き換えらしい。最期が" "になっているから”¥”が” ”に置き換えなさいと言う意味だろう、しかし/^\s+|,|\s+$/の部分が良く分らない。gは文字列の全てからさがす。^は文字列の先頭、$は文字列の後ろ。|,|は,にマッチさせて”,”も” ”に置き換えなさいと言う意味だろう。

 例えば¥5,320が5320になるのだろう。

 実際に試してみよう。

ところが、通貨の書式でデータを入れると,結果が上手く出なかった。これは明らかにバグだ。”,”は消えたけど、ここは難しい項目らしい,sad

 次へ進もう。

if(assetdata[i] == ""){
   assetdata.splice(i,1);
  }
これも分らんsplice(i,1)、これが分らん

つづく

| | コメント (0) | トラックバック (4)

2008年3月23日 (日)

改造

 今回の一連の記事はソースコードが多くて,退屈する、読みにくい、読んでいても意味がわからない、でしょう。しかし、これには意味があるのです。(記事を書き始めたときは,その意味など考えてはいなかった。ただ、勉強していれば何時か役に立つ時が来ると考えて始めた。)

 昨日出した評価結果は実際には39日分のデータです。しかし、評価結果はデータ数の54日として計算されて出て来ます。

 その為、年率換算利回りの値が変わり、シャープレシオの値も変わってしまいます。

 これを修正するにはスクリプトを一部改良しないといけないし。その為には,中の式を有る程度理解していなければ出来ないのです。

 だから、地味な作業でも,人の作ったソースの内部を覗いて見るのは意味があるのです。(良いところは盗みます。)bleah

          spade

 それで上手く改良することが出来ました。

 「seiseki-2.html」をダウンロード

 もし文字化けをしていたなら。表示(V)、エンコード(D)で日本語(シフトJIS)を選んでください。それから、PCに保存してください。

 運用日数を入れるテキストボックスを加えた。データ数と運用日数が同じ場合は、このテキストボックスは何も記入する必要はない。違う時のみ記入すれば良い。

成績

運用日数 39日
初期資産 2550000 円
最終資産 2791820 円
取引回数 48回
勝率 68.75%
純損益率 9.48%
日率換算利回り 0.23%
月率換算利回り 4.86%
年率換算利回り 76.68%
シグナル発生頻度 126.32%
最大ドローダウン 1.78%
年率ボラティリティ 8.67%
年率シャープレシオ 8.84
プロフィットファクター 2.54
ペイオフレシオ 1.16
年間営業日数

245

 昨日の結果と赤字の部分が変わっています。

 年率換算利回り は 50.84%⇒76.68

 年率シャープレシオ は 5.86⇒8.84

 にそれぞれ大きくなりました。

もちろん2ヶ月間だけの結果ですから,高い数字が出ようとも意味は有りません。実際の問題はこの様な取引が続けられるかで、この成績が続けられるなら、頻繁に取引するのも悪くはない、ということかsign02

        ********

続きの記事は少し長くなるので、先に要約しておきます。

つまり他の人が造ってくれたフォームをどのようにして今後活用,改良,別の物を作るのか、が要点となります。

 HTLM の構造を理解していればそれは簡単です。皆さんも知らずに、HTLMの内部を日ごろ書いているのです。

 ですから,もし新しい物を作りたいのであれば,外側の部分は丸々残しておいて、内部だけを真似して書き換えればよいのです。そこで大事なのは真似ることです、始めからまったく新しい物を作ることは無理でしょう。人のやり方を見てこんなやり方もあるのか、と勉強するのです。

HTLM の構造

HEAD部分

 <HEAD>

  <META>

  <TITLE>*******</TITLE>

  <style>****書式の命令****</style>

</HEAD>

body部分

<body>
<table>

  <h4>***入力***</h4>

  <div>

  <textarea></textarea>

  <BR>
  <input type="button" onclick="javascript:calc()"/>

  </div>

  <h4>***出力***</h4>
 <div class=comb id="performance">
 </div>

</table>

<script>
function calc(){      ****計算****

document.getElementById('performance').innerHTML =

               ****出力の命令****

</script>

 今回の手本となった。スクリプトはジンさんという人が作りました。

 入力 計算 出力 となっています。<script></script>がJavaスクリプトです。HTMLの部分に入力用の<div>ボックスと出力用の<div>ボックスがあります。

 赤字で書いたのはHTMLとJavaスクリプトが繋がる部分です。

 Javaスクリプトの中には計算部分と出力の命令部分があります。

 もしこれから新しい物を作りたければ、外枠は残して、青色の部分を書き換えればよいのです。

 つづく

| | コメント (0) | トラックバック (1)

2008年3月22日 (土)

HTMLのエレメント

つづき

もしも、僕がコピーしたファイルが文字化けしていたら、表示(V),エンコード(D)、日本語(JIS)を選択してください。

<body></body>部分に入ります。ここに本文を書いていくのです。

          *

 <table>表を利用することにより、内容が項目ごとに整理でき、見やすく表示できます。

 <tr>で行を、<td>でセルを作成します。そのときの注意は<tr></tr>の間に<td>セルが入るのですが。各行のセルの数は同数にします。

<table width="350" align="center" border="0" align="center" cellpadding="0" cellspacing="0">

</table>

 説明 width="350"は表の幅 、 align="center"は表の位置

     border="0"は枠の線の幅、5にすれば太い線で囲まれる。     

     cellpadding="0" は余白、

     cellspacing="0" 分らないsign02

        ********

 次にスタイルシートで設定した<h4></h4>表題が入ります。

 次にスタイルシートで設定した<div class=comb></div>ボックスが入ります。

          *

      HTLMエレメント

テキストエリア

 <textarea id='data' cols='40' rows='5'></textarea>

 説明 複数行のテキストを表示できます。

      cols='40' は40文字、 rows='5'は5行 です。

      id='data' はid名を付けておいて、後でjabaスクリプトが実行され、呼び出す時にこのidが使われます。

          *

<BR> //改行

          *

 ボタン

<input type="button" value="成績を計算" onclick="javascript:calc()"/>

説明 type="button"はエレメントの種類

    value="成績を計算"はボタンの表示

    onclick="javascript:calc()"はこのボタンをクリックすれば、後で書くjavascriptのcalc()関数を呼び出して実行します。

          *

 チェックボックス

<input type="checkbox" id="reverse" />逆順

説明 type="checkbox"はエレメントの種類

    id="reverse" 呼び出し様のid名

    チェックされていればtrue, チェックされていなければfalse

          *

<input type="button" value="クリア" onclick="javascript:document.getElementById('data').value='';document.getElementById('performance').innerHTML=''"/>

説明 document.getElementById('data').value=' '

      テキストエリアを空にします。’ ’がそれ

    document.getElementById('performance').innerHTML=' '

       評価欄の内容を空にします

     innerHTML= はHTMLタグを含むテキストを動的に変更することが出来ます。

          *

 テキストボックス

1年の営業日数<input type="text" size="5" maxlength="5" value="245" id="daycount"/>

  もう説明しなくても分りますよネ。

 参考図書

超図解 無料でホームページ作成オールインワン (超図解シリーズ) Book 超図解 無料でホームページ作成オールインワン (超図解シリーズ)

著者:エクスメディア
販売元:エクスメディア
Amazon.co.jpで詳細を確認する

詳しくは本で調べてください。

 この様に実際に何かのサンプルがあり、これはどのようになっているのかsign02と疑問に感じたら本の後ろの索引からその部分だけを見つけ出して調べるのが早道ですよ。

 プロのプログラマーを目指してはいないのだから本の隅々まで勉強することはないです。

 軽く全ページに目を通すことは良いのですが、始めから全てを吸収しようとしても、忘れるだけですよ。いま必要なことだけを勉強しましょう。そして段々と慣れて行きプログラムはこの様に出来ているのかって後から分ってきますよ。(プロの方のレベルの話ではありません。初心者レベルの話です。coldsweats01

 ぼくも30年前にはじめてフォートランを書いたときサブルーチンてなんだろうとまったくチンプンカンプンだった。でもそれが最初の一歩で、それがあったからベーシックも直ぐに理解できたし(フロピーにデータを書き込むのにはすこし苦労した、当時はエクセルと言う便利な物はなかった。)VBA,UWSC,HTML,JavaScriptと繋がっていくのだ。(簡単な言語ばかりです。ほかは出来ません。偉そうなことは言えませんcoldsweats01

 とにかく慣れでしょう。

 つづく

次回  JavaScript のお勉強

 僕も始めての勉強です。今までJavaScriptが有るのは知っていたのですが、実際にどのように使うのか分りませんでした。もっと難しいように考えていました。

 何事も最初の一歩が難しいように思います。

 投資の世界でも、信用から売りを始める前は、FXを始める前は(僕はまだFXをした事はない)たいそう難しいように思うのだけど、難しさはどれも同じだ、一歩踏み入れてしまえば、突き進むしかない、突っ走るぞ~~run

 

| | コメント (1) | トラックバック (2)

2008年3月21日 (金)

Head

つづき

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">

 よく分らないけど、JISに変えて、日本語対応にした。

<META NAME="Generator" CONTENT="HETEMULU Writer Ver2.08a">

 これも良く分らない。どうでも良いかsign02 かなりいいかげんcoldsweats01

その下に

<TITLE>成績計算フォームのコピー</TITLE> 

これがWebブラウザのタイトルバーに表示されます。

          *

<style type="text/css">
<!--

-->
</style>

で挟まれた部分がスタイルシートです。

          *

<body>部分の指定

body {
  line-height:150%;    // 行の高さ 文字の高さに対し150%
  font-size: 10px;    //  文字の大きさ 10ピクセル
  color: #222222;    //  文字の色 多分少し薄めの黒
  margin:10px 0px;   // <div>などで分けられるボックスとの間隔

}

          *

タイトル文字の指定

h4 {
  color:#ffffff;         // 白抜き
  font-size:14px;
  margin:0px 0px 0px 8px;  // 他のボックスに対し上、下、右、左の間隔
  padding:2px 12px;      // 上下余白、左余白 2を5にすると水色の帯の幅が大きくなる。
  background:#83AAF2;   // 帯の色 水色

}

          *

 divボックスの罫線の指定

.comb {                  //divのclass名
  margin:0px 0px 10px 8px;
  padding:5px 10px 5px 4px;
  border-left: #83AAF2 1px solid;  //左罫線の色、太さ、線の種類
  border-right: #83AAF2 1px solid;
  border-bottom: #83AAF2 1px solid;
}

以上  <HEAD>の説明は終わり。

スタイルシートの数値を変えればレイアウト、色、大きさなどが変わります。

つづき    

次回  HTMLのエレメント (テキストボックス、コントロールボタン、などの部品)

 VBA、UWSC にも同じエレメントがある・・・・・VBAは記述する必要はないけど、UWSCは HTMLと同じで記述する。 

| | コメント (0) | トラックバック (0)

2008年3月20日 (木)

面白いツールの紹介

 何回も書きます。成績計算フォームです。

 http://performance.ailab.biz/ 操作は簡単です。前に僕が作った売買管理シートから自分の資産の列を成績計算フォームのテキストボックスに貼り付け、ボタンを押すだけで実際の取引の評価結果が出ます。(しかし、悪い成績にガッカリさせられますbearing

 それでソースをコピーし説明部分、キャンプション、評価項目を日本語に書き換えてみました。

 「seiseki-2.html」をダウンロード  それがこのファイルです。

 表示(V) ソース(C) でソースコードが見れます。

          *

 JavaScript はHTMLに直接書き込むことが出来ます。

そして、日ごろ皆さんが書き込んでいる、読んでいるブログはHTLMで出来ています。

HTLM について先に勉強します。

HTLMの構造

 <HTML>         

    <HEAD>

         <META>

         <TITLE> </TITLE> 

                <style type="text/css">

                   </style>

    </HEAD>

    <body>

                   <table>

                             <h4></h4>

             <textarea ></textarea>

             <input type="button"

             <h4></h4>

             <div class=comb id="performance">

             </div>

         </table>

         <script>

              function calc(){

              }

         </script>

    </body>

 </HTML>

となっています。何時も私たちは<body></body>の間の部分に本文を書いているのです。

つづく   次回<HEAD></HEAD>の部分

| | コメント (0) | トラックバック (2)