<?xml version="1.0" encoding="utf-8" ?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" 
			xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" 
			xmlns:cc="http://web.resource.org/cc/" xml:lang="ja">
<channel rdf:about="http://googolyenfx.blog18.fc2.com/?xml">
<title>mt4 (MetaTrader4)使い倒シストレ</title>
<link>http://googolyenfx.blog18.fc2.com/</link>
<description>メタトレーダー、自作インジケータ、自作EAで完全自動売買。使えるものは何でも使え。</description>
<dc:language>ja</dc:language>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://googolyenfx.blog18.fc2.com/blog-entry-441.html" />
<rdf:li rdf:resource="http://googolyenfx.blog18.fc2.com/blog-entry-431.html" />
<rdf:li rdf:resource="http://googolyenfx.blog18.fc2.com/blog-entry-442.html" />
<rdf:li rdf:resource="http://googolyenfx.blog18.fc2.com/blog-entry-430.html" />
<rdf:li rdf:resource="http://googolyenfx.blog18.fc2.com/blog-entry-437.html" />
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://googolyenfx.blog18.fc2.com/blog-entry-441.html">
<link>http://googolyenfx.blog18.fc2.com/blog-entry-441.html</link>
<title>HP移転のお知らせ</title>
<description> いつも大変お世話になっております。Googolyen FX Factoryのホームページを移転しましたのでご連絡致します。新しいアドレスはhttp://googolyenfx.com/です。こちら↓(新)Googolyen FX Factoryブックマーク等にご登録していらっしゃる場合は、お手数をお掛け致しますが、変更を宜しくお願い申し上げます。HPの内容等は基本的に前と変わっていませんが、ご依頼頂く際に、「納期はどのぐらいになるのか？」と聞かれることが多かったの
 </description>
<content:encoded>
<![CDATA[ いつも大変お世話になっております。<br /><br />Googolyen FX Factoryのホームページを移転しましたので<br />ご連絡致します。<br /><br />新しいアドレスは<br />http://googolyenfx.com/<br />です。<br /><br />こちら<br />↓<br /><a href="http://googolyenfx.com/" target="_blank" title="(新)Googolyen FX Factory">(新)Googolyen FX Factory</a><br /><br />ブックマーク等にご登録していらっしゃる場合は、<br />お手数をお掛け致しますが、変更を宜しくお願い申し上げます。<br /><br /><br />HPの内容等は<br />基本的に前と変わっていませんが、<br /><br />ご依頼頂く際に、<br />「納期はどのぐらいになるのか？」<br />と聞かれることが多かったので、<br />納期目安の項目を追加しました。<br /><br />あくまでも目安ですので、それよりも早い時もありますし<br />遅い時もありますが、ご参考にして下さいませ。<br /><br /><br />今後とも何卒宜しくお願い申し上げます。<br /><br /> ]]>
</content:encoded>
<dc:subject>インジケーター、EA製作サービス</dc:subject>
<dc:date>2009-07-31T20:50:00+09:00</dc:date>
<dc:creator>googolyen</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://googolyenfx.blog18.fc2.com/blog-entry-431.html">
<link>http://googolyenfx.blog18.fc2.com/blog-entry-431.html</link>
<title>staticを使って健康的に</title>
<description> MQL4では『static』を使用することができます。このstatic、実はとても便利なものなんです（便利、便利じゃないの基準は色々あると思いますが、私は便利と思ってます(笑)）。まずはstaticの使い方について少々。以下のコードを見てください。int start(){   int counter, counter_s;   counter   = RunningTimes();   counter_s = RunningTimes_s();   Comment(counter, &quot;, &quot;, counter_s);}int RunningTimes(){   int count = 0;  
 </description>
<content:encoded>
<![CDATA[ MQL4では『static』を使用することができます。<br />このstatic、実はとても便利なものなんです<br />（便利、便利じゃないの基準は色々あると思いますが、<br />私は便利と思ってます(笑)）。<br /><br /><br /><br />まずはstaticの使い方について少々。<br /><br />以下のコードを見てください。<br /><pre><br />int start()<br />{<br />   int counter, counter_s;<br />   counter   = RunningTimes();<br />   counter_s = RunningTimes_s();<br />   Comment(counter, ", ", counter_s);<br />}<br /><br />int RunningTimes()<br />{<br />   int count = 0;<br />   count++;<br />   return (count);<br />}<br /><br />int RunningTimes_s()<br />{<br />   static int count = 0;<br />   count++;<br />   return (count);<br />}<br /></pre><br /><br />このコードを実行すると、<br />・counterの値はずっと1のまま<br />・counter_sの値は1ずつ増加する<br /><br />となります。<br />前回この関数を呼び出した時のcount値を覚えておいて、その値に1を足している訳です。<br />static変数を使えば、その関数を抜けた後も、<span style="color:#ff0000">値を保持することができる</span>のです。<br /><br /><br />値を保持する為に『グローバル変数を使っていた場面』に使えるんです。<br /><br />よく見かける場面を見てみましょう。<br /><pre><br />int AllBars;<br />bool isNewBar()<br />  {<br />   bool res=false;<br />   if (AllBars!=Bars)<br />     {<br />      AllBars=Bars;<br />      res=true;<br />     }<br />   return(res);<br />  }<br /></pre><br />新足が登場するとtrueを返す関数です。<br /><br />この関数内で使われているAllBars変数の特徴は以下です。<br />・AllBars変数はグローバル領域で宣言された変数<br />・AllBars変数はプログラム全体の中でisNewBar()関数内でしか使われない<br />・AllBarsは値を保持する為に使われている<br /><br /><span style="color:#ff00ff"><span style="font-size:x-large;">ピコーン！</span></span><br /><br /><br />staticが使えます。<br />そしてstaticを使えば、グローバル変数の数を1個減らすことができますね。<br /><br />isNewBar()関数をstaticを使って書き換えたコードが以下になります。<br /><pre><br />bool isNewBar()<br />  {<br />   static int allBars = 0;<br />   bool res=false;<br />   if (allBars!=Bars)<br />     {<br />      allBars=Bars;<br />      res=true;<br />     }<br />   return(res);<br />  }<br /></pre><br /><br />たったこれだけですが、グローバル変数を減らすことに成功しました。<br />これで前回記事にした、グローバル変数乱用の弊害から一つ逃れることができますね。<br /><br /><br />健康的なソースファイル作りにお役立てください。 ]]>
</content:encoded>
<dc:subject>マニア寄り(？)</dc:subject>
<dc:date>2009-07-31T20:43:50+09:00</dc:date>
<dc:creator>googolyen</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://googolyenfx.blog18.fc2.com/blog-entry-442.html">
<link>http://googolyenfx.blog18.fc2.com/blog-entry-442.html</link>
<title>FXCM UK　口座開設方法(法人)</title>
<description> ちょっとこないだ、FXCM のUK (United Kingdom : 英国)の口座を開設したので、これから開設しようと思ってる人の参考になればと思って、開設方法を書いてみます。両建てが禁止になった関係でFXCM NY→UKに移ったらしい。円口座もあって、国内送金だけで入金OKの予定(？)ちなみに私が開設した時はまだ海外送金のみで、地方銀行から送金したら9千円も手数料取られた！ムカッ普通は多分4、5千円だと思う。OK、それではHere we go(私は
 </description>
<content:encoded>
<![CDATA[ ちょっとこないだ、FXCM のUK (United Kingdom : 英国)<br />の口座を開設したので、これから開設しようと思ってる人の<br />参考になればと思って、開設方法を書いてみます。<br /><br />両建てが禁止になった関係で<br />FXCM NY→UKに移ったらしい。<br /><br />円口座もあって、国内送金だけで入金OKの予定(？)<br />ちなみに私が開設した時はまだ海外送金のみで、<br />地方銀行から送金したら9千円も手数料取られた！ムカッ<br /><br />普通は多分4、5千円だと思う。<br /><br /><br /><br />OK、それではHere we go<br />(私は法人口座を開設したので、それに則って説明しますが<br />個人口座も基本的には同じじゃないかと思う。むしろ簡単かな？)<br /><br />まずはここへGo！<br />↓<br /><a href="http://www.fxcm.co.uk/metatrader-apply.jsp" target="_blank" title="http://www.fxcm.co.uk/metatrader-apply.jsp">http://www.fxcm.co.uk/metatrader-apply.jsp</a><br /><span style="font-size:x-small;">(noアフィリンク)</span><br /><br />アメリカに住んでいない人は、<br /><span style="color:#00FFFF">[NON-U.S.RESIDENT SIGN-UP PAGE]</span>へ<br /><br />口座の種類とかを選択<br /><a href="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM1.gif" target="_blank"><img src="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM1s.gif" alt="FXCM1.gif" border="0" width="300" height="85" /></a><br /><br />Choose Trading Account:(円建て口座ならJPY、ドル建て口座ならUSD)<br />Choose Account Registration Option:(法人ならCorporate、個人口座ならIndividual)<br /><br />Go→Open an Account<br /><hr size="1" /><br /><a href="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM2.gif" target="_blank"><img src="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM2s.gif" alt="FXCM2.gif" border="0" width="260" height="300" /></a><br /><br />会社名とか、住所とかはまぁいいとして<br />初めよくわからんかったのは<br />「Nature of Business」とかいうの。<br /><br />ハローって(日本デスクに)電話で聞いてみたら、<br />会社のメインとなる事業内容の事らしい。<br /><br />あと、Yes or Noで選択する<br />「Does your business structure meet the criteria of a financial institution?」<br />とかもよくわからんかったけどNoでいいとの事(？)<br /><br />銀行情報は後でもいいし、ここで記入しておいてもいい。<br /><br />Go→continue<br /><hr size="1" /><br /><a href="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM3.gif" target="_blank"><img src="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM3s.gif" alt="FXCM3.gif" border="0" width="219" height="300" /></a><br /><br />次は、個人の住所、国籍、性別、未婚既婚、<br />免許証の番号等を入れていく。<br /><br />住所の後に、<br /><span style="color:#FF6600">「Time at Current Address」</span><br />ってのがあって、今の住所に住んでどれぐらいになる？<br />てことを聞いてるけど、今の住所に住んで3年未満を選択すると<br />その前の住所も書けって下に入力欄が出てくる。<span style="font-size:x-small;">(メンドクサイ)</span><br /><br />一番最後の、<br />「Would you like to add an additional contact person to this account?」<br />ってのは 「他にも誰かcontact person追加したい？」<br />ていう意味。<br />特に必要がなければNoでOK<br /><br />Go→continue<br /><hr size="1" /><br /><a href="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM4.gif" target="_blank"><img src="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM4s.gif" alt="FXCM4.gif" border="0" width="199" height="300" /></a><br /><br />次は、まず<br /><span style="color:#FF6600">TRADING EXPERIENCE INFORMATION</span><br />でトレード経験を記入する。<br /><br />株、オプション、商品、先物、etc..<br />全てNOでもOK<br /><br />次は、<span style="color:#FF6600">FINANCIAL INFORMATION</span><br />で年収とかを記入する。<br /><br />Total Annual Income：年収<br />Net Worth (Assets minus Liabilities)：資産<br />Liquid Assets (Quickly Disposable)：流動資産<br /><br />ここには見栄を張って、最大を選択しま、、しないように(笑)<br /><br />私は法人口座にしたので、ここは<br />CORPORATE FINANCIAL INFORMATION<br />となっていて、てっきり会社の売上とかを書くのかと思ってたけど、<br />電話で聞いたら個人の収入を書いてくださいって言われた。<br /><br /><br />あと、これ→<span style="font-size:large;">￡</span><br />初め何じゃ？と思ったけど<br />ポンドの事らしい。<br />だから年収とかはポンド換算にしましょう。<br /><br />Have you declared bankruptcy within the past 10 years?<br />10年以内に自己破産した？<br /><br />Do you have or have you ever had any other account with us?<br />FXCMに口座をすでに持ってる、もしくは、過去に口座作ってた事ある？<br /><br />1. A member of any commodity exchange?<br />commodity exchangeのメンバー？<br />(commodity exchangeって何？？多分商品先物とかの取引関係のメンバーかって事かな？）<br /><br />2. An employee of a regulatory agency?<br />調整機関に勤務してる？<br /><br />Do you have a personal assets portfolio, including cash and/or other financial instruments, of at least &#8364;500,000?<br />少なくとも、50万ユーロ相当の、現金を含む、金融商品等の個人資産ポートフォリオある？<br /><br /><br />って感じかな。<br /><br />Go→continue<br /><hr size="1" /><br />ここで以下のようなメッセージが出てくる。<br /><a href="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM5.gif" target="_blank"><img src="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM5s.gif" alt="FXCM5.gif" border="0" width="300" height="109" /></a><br /><br />内容としては、<br />「続けるには、ここに書いてあるProduct Noticeを読んで、同意する必要があります。<br />同意できなければ続けないでね～」<br />って感じ。<br /><br />Go→Proceed(続ける)<br /><hr size="1" /><br /><a href="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM6.gif" target="_blank"><img src="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM6s.gif" alt="FXCM6.gif" border="0" width="151" height="300" /></a><br /><br /><br />次は、<span style="color:#FF6600">Corporate Resolution</span>(取締役会決議)と<span style="color:#FF6600">Personal Guarantee</span>(個人保証)<br />を記入する必要があるけど、多分これは<br />法人口座だけで、個人口座にはない項目だと思う。<br /><br /><br />うわ～訳すのめんどくせー<br />と思ったけど、FXDDに、<br />ほぼ同じ文章でしかも日本語訳付きのPDFがあった。<br /><br />ラッキー<br /><br /><a href="http://www.fxdd.com/jp/forex-trading-services/corporate-account.html" target="_blank" title="このページ">このページ</a><br />の「法人口座決議書」ってやつ。<br /><br />これでOK<br /><br />各項目で「I Accept」を選択して、<br /><br />Go→continue<br /><hr size="1" /><br /><a href="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM7.gif" target="_blank"><img src="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM7s.gif" alt="FXCM7.gif" border="0" width="166" height="300" /></a><br /><br />さてさてあと少し<br /><br />ここでは、パスワードとかを設定して<br />約款とかに同意する。<br /><br />パスワードは<br />大文字、数字を含む8文字以上にしてくだされ。<br /><br />後は秘密の質問&その答え、<br /><br />どこでFXCMを知りましたか？みたいなのに答える<br /><br />その下では、<br />約款等を見て、同意したら"Yes"を選択。<br /><br /><span style="font-size:x-small;">Yes We Can</span><br /><br />Go→continue<br /><hr size="1" /><br />とここでまた前みたいなメッセージが出る<br /><a href="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM8.gif" target="_blank"><img src="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM8s.gif" alt="FXCM8.gif" border="0" width="300" height="127" /></a><br /><br />内容としては、<br />「続けるには、ここに書いてあるHIGH RISK INVESTMENT NOTICEを読んで、同意する必要があります。<br />同意できなければ続けないでね～」<br />って感じ。<br /><br />問題なければ<br /><br />Go→Proceed<br /><hr size="1" /><br />後は、内容確認画面が出るので<br />確認、プリント等をして<br /><br />SUBMITで完了！<br /><hr size="1" /><br /><br />後は本人書類を送ったり、<br />こまごました事を残すのみ。<br /><br />まず、初めに行ったページ<br />↓<br /><a href="http://www.fxcm.co.uk/metatrader-apply.jsp" target="_blank" title="http://www.fxcm.co.uk/metatrader-apply.jsp">http://www.fxcm.co.uk/metatrader-apply.jsp</a><br /><br />ここで<br />STEP2をクリックしてフォームを開く<br /><a href="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM9.gif" target="_blank"><img src="http://blog-imgs-31-origin.fc2.com/g/o/o/googolyenfx/FXCM9s.gif" alt="FXCM9.gif" border="0" width="300" height="240" /></a><br /><br />名前、メールアドレスを記入して<br />"By clicking "Submit" you～"のチェックボックスにチェックして<br /><br />内容をよく読み<br /><br />下のSUBMITを押す。<br /><hr size="1" /><br />後は免許証等のコピーを送るけど、<br />たぶんメールで、IDファックスカバーシートが添付して送られてきているはず。<br /><br />これを使ってもいいけど、<br />私はめんどくさかったから、スキャンした画像ファイルを<br />メールに添付して送りました。<br /><br />法人口座開設に必要な書類としては<br />1.会社の登記簿<br />2.会社住所証明書（会社名義のもの）<br />3.会社役員のID<br />4.会社役員の住所証明書*3<br /><br />*2.4　住民票または公共料金請求書、銀行口座ステイトメント、携帯電話の請求書(6ヶ月以内の発行日付があるもの)<br /><br />*3　運転免許証、パスポート、保険証の内一通　（有効期限内のもの）<br /><br /><br />個人口座の場合、上の3、4にあたる<br />・免許証等のID<br />・住所証明書<br /><br />の2つで良い。<br /><br /><br />受理されれば、まず<br />仮IDが送られてくるので、そのIDを記載して入金して<br />その後本IDとパスワードが送られてくる。<br /><br /><br />以上！<br /><hr size="1" /><br />お疲れ様～<br /><img src="http://blog-imgs-1-origin.fc2.com/image/e/65.gif"  class="emoji" style="border:none;" /><br /><br /><br />追伸<br /><br />最近聞いた話で、<br />FXCM UKではオーダーを出す時に、ストップ、テイクプロフィットを指定できない、<br />というよりも指定していたらオーダーが通らないとか。<br /><br /><span style="font-size:large;">なにぃぃ!?</span><br /> ]]>
</content:encoded>
<dc:subject>ブローカー</dc:subject>
<dc:date>2009-06-25T19:02:31+09:00</dc:date>
<dc:creator>googolyen</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://googolyenfx.blog18.fc2.com/blog-entry-430.html">
<link>http://googolyenfx.blog18.fc2.com/blog-entry-430.html</link>
<title>Order関数使ってますか？</title>
<description> EAやScriptを自作される方は、Order関数群を使っておられるはずです。for文内でポジションのクローズ処理を書くのが、一般的ではないでしょうか。以下の2コードを見てください。コードAint start(){   int i, magic;   magic = 111;   for (i = 0; i &lt; OrdersTotal() - 1; i++) {      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false)         continue;      if (OrderSymbol() != Symbol() || OrderMagicNumber() != 
 </description>
<content:encoded>
<![CDATA[ EAやScriptを自作される方は、Order関数群を使っておられるはずです。<br />for文内でポジションのクローズ処理を書くのが、一般的ではないでしょうか。<br /><br />以下の2コードを見てください。<br /><br /><br />コードA<br /><pre><br />int start()<br />{<br />   int i, magic;<br />   magic = 111;<br />   for (i = 0; i < OrdersTotal() - 1; i++) {<br />      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false)<br />         continue;<br />      if (OrderSymbol() != Symbol() || OrderMagicNumber() != magic)<br />         continue;<br />      <br />      if (OrderType() == OP_BUY)<br />         OrderClose(OrderTicket(), OrderLots(), Bid, 3);<br />      else if (OrderType() == OP_SELL)<br />         OrderClose(OrderTicket(), OrderLots(), Ask, 3);<br />   }<br />}<br /></pre><br /><br />コードB<br /><pre><br />int start()<br />{<br />   int i, magic;<br />   magic = 111;<br />   for (i = OrdersTotal() - 1; i >= 0; i--) {<br />      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false)<br />         continue;<br />      if (OrderSymbol() != Symbol() || OrderMagicNumber() != magic)<br />         continue;<br />      <br />      if (OrderType() == OP_BUY)<br />         OrderClose(OrderTicket(), OrderLots(), Bid, 3);<br />      else if (OrderType() == OP_SELL)<br />         OrderClose(OrderTicket(), OrderLots(), Ask, 3);<br />   }<br />}<br /></pre><br />2つのコードではfor (...)部分が違うだけです。<br />Aではiの値が1ずつ増加（インクリメント）しています。<br />Bではiの値が1ずつ減少（デクリメント）しています。<br /><br />このコードは、<br />『複数ポジションを持っていた場合に、全てのポジションをクローズする』<br />という処理を行っているように見えます。<br /><br />しかし、<br /><br /><span style="font-size:large;"><span style="color:#ff00ff">実はコードAでは全てのポジションをクローズすることはできません</span></span>。<br /><br /><br />iがインクリメントしているか、デクリメントしているか<br />たったこれだけの違いで現われてくる問題なんです。<br /><br /><br /><br /><br />具体的に解説します。<br />今、3つのポジションを持っていると仮定しましょう。<br />3つのポジションにおける情報は以下の通りとします。<br /><table border="1"><br /><tr align="center" bgcolor="#DDDDDD"><td>呼び名</td><td>ポジション番号(iの値によって選択)</td><td>チケット番号</td><td>タイプ</td></tr><br /><tr align="center"><td>ポジションa</td><td>0</td><td>100</td><td>BUY</td></tr><br /><tr align="center"><td>ポジションb</td><td>1</td><td>101</td><td>SELL</td></tr><br /><tr align="center"><td>ポジションc</td><td>2</td><td>102</td><td>BUY</td></tr><br /></table><br /><br /><br />○コードB<br />まずi = 2(OrdersTotal() - 1)によってポジションcが選択され、ポジションcが決済されました。<br />決済された後のポジションの状態は以下になります。<br /><table border="1"><br /><tr align="center" bgcolor="#DDDDDD"><td>呼び名</td><td>ポジション番号(iの値によって選択)</td><td>チケット番号</td><td>タイプ</td></tr><br /><tr align="center"><td>ポジションa</td><td>0</td><td>100</td><td>BUY</td></tr><br /><tr align="center"><td>ポジションb</td><td>1</td><td>101</td><td>SELL</td></tr><br /></table><br />その後iはデクリメントされi = 1となります。<br /><br />i = 1によってポジションbが選択され、…以下略<br /><br /><br />と、i = -1になるまで以上の操作が繰り返され、めでたく全クローズが完了します。<br /><br /><br />○続いてA<br />i = 0によってポジションaが選択され、ポジションaが決済されました。<br />決済された後のポジションの状態は以下になります。<br /><table border="1"><br /><tr align="center" bgcolor="#DDDDDD"><td>呼び名</td><td>ポジション番号(iの値によって選択)</td><td>チケット番号</td><td>タイプ</td></tr><br /><tr align="center"><td>ポジションb</td><td>0</td><td>101</td><td>SELL</td></tr><br /><tr align="center"><td>ポジションc</td><td>1</td><td>102</td><td>BUY</td></tr><br /></table><br />その後iはインクリメントされi = 1となります。<br /><br />i = 1によってポジションbが<span style="color:#ff0000"><span style="font-size:large;">…あれれ？</span></span><br />i = 1によって選択されるのはポジションcですね。<br />これでは最終的にポジションbが残ってしまうことになりますね。<br /><br /><br />ポジションが決済される度に、ポジション番号は再割り振りされるみたいで、<br />その影響でコードAでは全クローズが完了しないのです。<br /><br /><br /><br /><br /><br />クローズ処理をしないのであれば、コードAでも問題ありませんが、<br />クローズ処理をする、しないに関わらず、コードBのように書いた方がいいと思います。<br /><br /><br /> ]]>
</content:encoded>
<dc:subject>マニア寄り(？)</dc:subject>
<dc:date>2009-05-15T21:00:09+09:00</dc:date>
<dc:creator>googolyen</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
<item rdf:about="http://googolyenfx.blog18.fc2.com/blog-entry-437.html">
<link>http://googolyenfx.blog18.fc2.com/blog-entry-437.html</link>
<title>参照渡しに関するご質問</title>
<description> 参照渡しは、とても便利かも！記事内で記載したコードについてご質問がありましたので、今回の記事をもって回答という形にさせていただきます。【ご質問内容】例えば(1)void func(int &amp;arg0){処理} と(2)int func(int arg0){処理～return(arg0)} この2つ結果は同じと思うのですが、どう使い分ければよいのでしょうか？int func1(int arg0) {	arg0++;	return (arg0);}void func2(int &amp;arg0) {	arg0++;}int start(){	int hoge = 1;	i
 </description>
<content:encoded>
<![CDATA[ <a href="http://googolyenfx.blog18.fc2.com/blog-entry-433.html">参照渡しは、とても便利かも！</a>記事内で<br />記載したコードについてご質問がありましたので、<br />今回の記事をもって回答という形にさせていただきます。<br /><br />【ご質問内容】<br />例えば(1)void func(int &arg0){処理} <br />と(2)int func(int arg0){処理～return(arg0)} <br />この2つ結果は同じと思うのですが、どう使い分ければよいのでしょうか？<br /><br /><pre><br />int func1(int arg0) {<br />	arg0++;<br />	return (arg0);<br />}<br /><br />void func2(int &arg0) {<br />	arg0++;<br />}<br /><br />int start()<br />{<br />	int hoge = 1;<br />	int hogehoge = 1;<br />	<br />	hoge = func1(hoge);<br />	<br />	func2(hogehoge);<br />	<br />	Comment("hoge = ", hoge, "\n",<br />		"hogehoge = ", hogehoge);<br />	<br />	//結果<br />	//hoge = 2<br />	//hogehoge = 2<br />}<br /><br /></pre><br />結果を見て分かるように、使い方は異なるにしろ、二つの関数(func1とfunc2)は同じ動作をします。<br />違う点は<br /><ul><br /><li />変更した結果を返しているか<br /><li />参照渡しをして引数の値自体を変更しているか<br /></ul><br />の違いだけです。<br /><br />今回のご質問は『<span style="color:#ff00ff">返り値を返す関数と、参照渡しを使った関数の使い分け</span>』ということでしたので<br />そこに主眼を置いてご説明したいと思います。<br />つまり、<a href="http://googolyenfx.blog18.fc2.com/blog-entry-435.html">この記事</a>にある『便利な使い方』を除いた場合の、参照渡しの有用性を主観的にご説明します(笑)。<br /><br /><br />まず結論から言うと<br /><br /><span style="color:#ff0000"><strong>値を得ることが目的であれば、返り値を使い<br />値の変更が目的であれば、参照渡しを使う</strong></span><br /><br />だと思います。<br /><br />例えば、『MACDとRSIの状態からシグナルを発生させる関数』を作るとしましょう。<br /><br />そこで二つの関数を書いてみました。<br />一方はシグナルを返り値として返す関数（<strong>MacdRsiSignal関数</strong>）、<br />もう一方はシグナルを参照渡しによって変更させる関数（<strong><i>MacdRsiSignal2関数</i></strong>）<br /><br /><pre><br />#define SELL_SIGNAL -1<br />#define BUY_SIGNAL   1<br />#define NO_SIGNAL    0<br /><br />int MacdRsiSignal(double macd, double rsi)<br />{<br />	//ふにゃふにゃ処理<br />	//<br />	<br />	if (BUY条件)<br />		return (BUY_SIGNAL);<br />	else if (SELL条件)<br />		return (SELL_SIGNAL);<br />	else<br />		return (NO_SIGNAL);<br />}<br /><br />void MacdRsiSignal2(int &signal, double macd, double rsi)<br />{<br />	//ふにゃふにゃ処理<br />	//<br />	<br />	if (BUY条件)<br />		signal = BUY_SIGNAL;<br />	else if (SELL条件)<br />		signal = SELL_SIGNAL;<br />	else<br />		signal = NO_SIGNAL;<br />}<br /><br />int start()<br />{<br />	double macd = iMACD(/*省略*/);<br />	double rsi  = iRSI(/*省略*/);<br />	int signal1, signal2;<br />	<br />	// 返り値によってシグナルを得る<br />	signal = MacdRsiSignal(macd, rsi);<br />	<br />	// 参照渡しによってシグナルを変更する<br />	MacdRsiSignal2(signal2, macd, rsi);<br />}<br /><br /></pre><br /><br />この二つの関数を見て<br />『MACDとRSIの状態からシグナルを発生させる関数』<br />を作ろうとした場合、どちらが感覚的にしっくり来るでしょうか？<br /><br />私としましては、<strong>MacdRsiSignal</strong>関数の方がしっくりします。<br />それは<br />『<span style="color:#ff00ff">今回作ろうとしている関数を、参照渡しによって値を変更するという方法によって実装してしまうと、シグナル発生という目的に合わない</span>』<br />からです。<br /><br /><br />では次の例を。<br />『シグナルを逆方向に変更する関数』を作るとします。<br />つまりBUYシグナル→SELLシグナル、SELLシグナル→BUYシグナルに変更するような関数です。<br />もうこの時点で、どちらを使うか分かっちゃいますね(笑)<br />結果は分かっていても、コードを見てみましょう！<br /><br /><strong>ConvertIntoOpposite1関数</strong>は、逆シグナルを返す関数。<br /><strong><i>ConvertIntoOpposite2関数</i></strong>は、参照渡しによって、逆シグナルに変更する関数。<br /><br /><br /><pre><br />#define SELL_SIGNAL -1<br />#define BUY_SIGNAL   1<br />#define NO_SIGNAL    0<br /><br />int MacdRsiSignal(double macd, double rsi)<br />{<br />	//ふにゃふにゃ処理<br />	//<br />	<br />	if (BUY条件)<br />		return (BUY_SIGNAL);<br />	else if (SELL条件)<br />		return (SELL_SIGNAL);<br />	else<br />		return (NO_SIGNAL);<br />}<br /><br />int ConvertIntoOpposite1(int signal)<br />{<br />	if (signal == BUY_SIGNAL)<br />		return (SELL_SIGNAL);<br />	else if (signal == SELL_SIGNAL)<br />		return (BUY_SIGNAL);<br />	else<br />		return (NO_SIGNAL);<br />}<br /><br />void ConvertIntoOpposite2(int &signal)<br />{<br />	if (signal == BUY_SIGNAL)<br />		signal = SELL_SIGNAL;<br />	else if (signal == SELL_SIGNAL)<br />		signal = BUY_SIGNAL;<br />	else<br />		signal = NO_SIGNAL;<br />}<br /><br />int start()<br />{<br />	double macd = iMACD(/*省略*/);<br />	double rsi  = iRSI(/*省略*/);<br />	int signal1, signal2;<br />	<br />	// 返り値によってシグナルを得る<br />	signal  = MacdRsiSignal(macd, rsi);<br />	signal2 = MacdRsiSignal(macd, rsi);<br />	<br />	// 参照渡しによってシグナルを逆転させる<br />	ConvertIntoOpposite2(signal);<br />	<br />	// シグナル逆転させた結果を返す<br />	signal2 = ConvertIntoOpposite1(signal2);<br />}<br /></pre><br /><br />この例だと『値の変更が目的』ですので参照渡しを行っている<strong><i>ConvertIntoOpposite2関数</i></strong>がしっくりきます。<br /><br /><br />今回示した例は私の主観的な意見です。<br /><br />「この場合は参照渡しの方がしっくりする」<br />という考えがございましたら、ご自身のフィーリングを大切にして頂きたいと思います。<br /><br />開発するのは他でもなく、あなたなのでっす。 ]]>
</content:encoded>
<dc:subject>マニア寄り(？)</dc:subject>
<dc:date>2009-04-14T17:26:02+09:00</dc:date>
<dc:creator>googolyen</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
</rdf:RDF>