DDEの憂鬱

906 名前:Trader@Live![sage] 投稿日:2013/01/23(水) 09:19:28.31
MT4を起動してから
DDE-Sample.xlsを開いてもリアルタイムレートがエクセルに表示されません。
どうしたらエクセルにレートを表示できますでしょうか?


DDEサーバーを有効にするにチェックをいれてます。
エクセルは2007です。
エクセルの リンクの編集ー値の更新を押してもだめでした・・

この問題は・・・難しいですね。
MT4のDDE経由でExcelに情報を渡せません」でも解決策は無いですし、マイクロソフトの「DDE links crash Excel 2010 on Windows 7 64bits」のいくつかの回避案も万能ではないようです。
私の環境でも、Excelが固まる現象を確認できたのですが、固まるようになると、何をやっても直らず、逆に動くようになると常に動く・・・ようで、原因追求も対策もままらない状況です。


調べて集まった情報をまとめると、、

新しいExcel では、 MT4 を 'MT4' と囲む必要がある。
=MT4|BID!EURUSD

='MT4'|BID!EURUSD


銘柄に # が含まれる場合は、銘柄も囲む。
='MT4'|BID!'#CH3'

Google Chrome や soffice.exe を動かしているとダメ。
アンインストールするか、soffice.exeを管理者権限で実行すると治った。

↑私の環境では、DDEが動作するときは、Chrome動作中でも問題無く動きました。

Excel をアンインストールし、再インストールすると治る。

↑私の環境では、治らなかったこともあります。

以下のVBAマクロをExcel上で動かすと治る(?)。
Sub KillDDE()
Dim i, ChannelNumber As Integer
For i = 1 To 1000
Application.DDETerminate (i) ' Closes all DDE links whose channels might be open
Next i
End Sub

↑※私の環境では、治ったことは無いです。。

MT4の代わりにDDEの送信テスト用に使えるツール。
http://www.codematic.net/excel-development/excel-dev-general/excel-dde-links.htm ただのテストツール
https://www.prorealtime.com/en/help-manual/dde-data-export ProRealTime DDE(有料)
DDESPYは動作のモニタ用。


今のところ、私の環境では下記の手順で2回、復旧に成功していますので、お困りの人は試してみてください。

1.ウィンドウズを再起動します。

2.MT4 を1つだけ起動します。
他のアプリは起動してはいけません。絶対に・・・

3.Excel を起動します。

4. ='MT4'|BID!EURUSD と数式を入れてみます。 MT4 の前後を ' で囲んでください。
Add StarkotsukotsuKASEGUkotsukotsuKASEGUkotsukotsuKASEGUkotsukotsuKASEGUFX-dame-ningen
  • carcass

    何時もありがとうございます。faiさんに質問があります。
    MT4をチャート表示ソフトとして使用する事は可能でしょうか?
    例えばexcelやcvsなどで1分足4本値+時間のデータがあるとしてそれを
    オフライン上でMT4にインポートして表示する事は可能ですか?
    何かやり方があればご教授下さい。ではでは

  • xcf

    はじめましてm(__)m
    xcf言います。

    管理人様にお願いがあります。
    インジケーターの作成なのですが
    1つのウィンドウの中に
    3期間のストキャスを表示できるインジケーターをお願いしたいのです。

    以前、MACDで同じようなインジケーターを作成しておられましたので
    プログラムをみて勉強しようとしたのですが・・・挫折

    期間、MAの種類、線の種類、色をそれぞれ設定できるようにしたいのですが
    どうか、お願い出来ないでしょうか。
    よろしくお願いします。

  • kaiho

    faiさん。こんにちわ^^今EAを自作していてf5macdインディケーターのOSMAが入っているバージョンのトレンドラインやシグナルでエントリーや利益確定をしたいと思っているのですが、そのインディケータのトレンドラインは精度が高い気がしてるんです..ちょっと組み込み方がわからないんです。もしできましたら右肩上がりではないんですが自作EAと使ってるインディーケーターなど添付しますので一緒にいじっていただけないですか?5、6年前にHageさんのところでfaiさんにちょっと教えてもらったナンピンのコードも入ってます。もしよろしければメールください☆

  • もっと読む

バックテスト結果チャートのラインの色を一括変更する。

923 名前:Trader@Live![sage] 投稿日:2013/01/24(木) 10:02:46.52
バックテストした時に新規と決済のところを結ぶTrendLineが表示されます。
この色を全部変更するにはどうしたらいいでしょう。


buyの時の線が背景にまぎれてみずらいので、もっと明るい色に変えたいのですが

こちらに作ってみました。(大昔にも作った記憶があるような無いような・・・

↑バックテスト後に、Visual Mode や Open chart で見るチャートは、確かに、青の点線は見づらいです。


↓LineColorChanger[sc].mq4をチャートにドロップして色を変えてみると・・・




↓たぶん、ローソク足の色も変えたほうが良いと思います・・。

ローソク足の配色は、detault.tpl や、tester.tpl、offline.tpl という名称でテンプレートとして保存しておくのが便利です。

Add Star
  • ひろ2

    こんにちは。
    現在MT4のLive口座を使っています。
    取引結果から詳細レポートを見ることができますが、曜日別、時間帯別に集計できるアプリなどはご存知ないでしょうか?

  • gaplus

    通りすがりですが、損益を区別した方がよいと思います。
    その気になれば決済のArrowも名前に数値があるのですが、
    それはEA内で色付けしてるから困らなかったりします。
    そう、困っているとしたらラインだけだった。
    というわけで関数部分はこうすればどうでしょう。
    void ChangeColor()
    {
    int obj_total = ObjectsTotal();
    string name;
    double dPrice1,dPrice2;
    for( int i = obj_total - 1; i >= 0; i-- ) {
    name = ObjectName( i );

    if( ObjectType( name ) != OBJ_TREND ) continue;
    if( StringFind( name, "->" ) == -1 ) continue;

    color oldColor = ObjectGet( name, OBJPROP_COLOR );
    dPrice1 = ObjectGet( name, OBJPROP_PRICE1 );
    dPrice2 = ObjectGet( name, OBJPROP_PRICE2 );

    if( oldColor == Blue ) { //買建
    if( dPrice1 <= dPrice2 ) {
    ObjectSet( name, OBJPROP_COLOR, cBuyLine );
    ObjectSet( name, OBJPROP_STYLE, LineType );
    ObjectSet( name, OBJPROP_WIDTH, LineWidth );
    } else {
    ObjectSet( name, OBJPROP_COLOR, cSellLine );
    ObjectSet( name, OBJPROP_STYLE, LineType );
    ObjectSet( name, OBJPROP_WIDTH, LineWidth );
    }
    } else if( oldColor == Red ) { //売建
    if( dPrice1 >= dPrice2 ) {
    ObjectSet( name, OBJPROP_COLOR, cBuyLine );
    ObjectSet( name, OBJPROP_STYLE, LineType );
    ObjectSet( name, OBJPROP_WIDTH, LineWidth );
    } else {
    ObjectSet( name, OBJPROP_COLOR, cSellLine );
    ObjectSet( name, OBJPROP_STYLE, LineType );
    ObjectSet( name, OBJPROP_WIDTH, LineWidth );
    }
    }
    }
    }

FxProの限月変更を簡単にする(?)

FxProの先物CFDは、銘柄名が定期的に変わります。
http://www.fxpro.com/trading/cfd/mt4/futures/13

銘柄が1つだけであれば、チャートの変更も大した手間ではないのですが、複数あるとちょっと面倒です。。


そこで、前回の一括変更ツールを元に限月変更ツールを作ってみました。

限月が代わり、Bidが提供されなくなった銘柄は、Waiting for update のままになります。
FutureUpdateスクリプトを適当なチャートにドロップすると・・・


↓それっぽい銘柄に自動的に変わります。

変更ルールは

1. チャートを列挙し、銘柄名を取得する。
2. その銘柄の Bid がゼロならば、変更対象とする。
3. その銘柄の末尾2文字を削除して、先頭部分が一致する銘柄を探す。
4. 一致した銘柄が見つかれば、その銘柄に変更する。

といった感じです。


次の銘柄をどのように探すか、一括で変えるべきか、指定したチャートのみ変えるべきか、悩みどころはありますが、不都合を感じたらその都度改良すれば良いかなと思ってます。

Add Star
  • carcass

    これは素晴らしいですね。感動もんです。
    でも自分が未熟な為上手くいきません・・
    場所はScriptsに入れればよいんですよね?
    ドロップすると下のメッセージが出てしまうんですが。。
    ERROR:【Allow DLL imports】Not Checked
    もし良かったらご教授下さいませ

  • toy

    「ぅわゎゎゎゎああ。ぽゎゎゎゎああん。」しか思いつかなかったので即座のコメントを控えました。
    とはいえ、なうとなっても反復して押し寄せる感銘以外ありません。
    毎日々々、ku-chart 泣かせ?の特殊ペア名を手動で変更しながら、
    地球上のペア名はfai さんが全部決めることになればいいのにと祈っています。

    はぐれmt4 フリークスとして次なる課題は、
    希望するAccela2e の拡張内容を正しくお伝えすることです。
    時期が来ましたらまたよろしくお願い申し上げます。おやすみなさい。

  • carcass

    何度もすみません。事故解決しました。
    CLがなくなったんですな・・ご迷惑おかけしました

複数のチャートの通貨ペアを一括変更する。

VPS上のEAを不正コピーされる事案が起きたそうです。詳しくは、「ずさんな管理のレンタルVPSサーバー(実話)」をどうぞ。





さて、表題のツールは、例えば、下図のように USDCHF の時間足の異なる複数のチャートを開いている状態から、全てのチャートをGBPUSDに変更したい場合に役立つスクリプトです。ある人のためだけに作ったものですが、欲しい人のためにこちらに置いておきます。


使い方は、まず、気配値ウィンドウから GBPUSDをドロップして1枚のチャードだけ GBPUSD に変更します。

その後、GBPUSD のチャートにスクリプトをドロップすると・・・


↓全てのチャートが GBPUSD に変わります。

仕組みは・・・

1. チャートウィンドウを列挙して、順にアクティブ化
2. キーナビゲーションで、シンボル名をキー入力
3. 稀に失敗するので、何度か繰り返す

みたいなことをしているだけです。
スクリプト内の Sleep(1) を Sleep(5000) などに変えると動作をゆっくり確認できます。
シンボル名に特殊な文字が入っていて動かない場合は、カスタマイズが必要です。(面倒なので、、不完全)

Add Star
  • Catherine

    VPS不正コピーの事件、ご紹介いただき、ありがとうございます。コンソール共用のVPSの場合はせめてフォルダのセキュリティだけは確認しておかないと、ですね。
    反面教師となって、これで少しでもVPS利用者の注意喚起になれば幸いです(>_<)。

  • toy

    CG変形みたいにすべてが片づいていくお手並み。見ほれてしまいます。
    大きくなったら、目の前の#FDXH3を片端からDoitsに変換できるくらいになりたいです。

  • ひろ2

    こんにちは。
    MT4の時間パラメータについてお聞きしたいのですが、
    MTFのインジに10080で週ベースになります。
    これを12倍して月足チャートに年ベースの表示は可能なのでしょうか?
    パラメータの数値上限は決まっているのでしょうか?

  • もっと読む

OANDAのHeatmap を真似てみた。

OANDAのCurrency Strength Heatmap Tableに似せたインジケータ(HeatMapModoki)を作ってみました。
Exoticsや、Commoditiesは無しで8通貨のみを縦に一列に並べるだけのものです。
計算式は、USDを基準として、デフォルトで現在から60分前(BeforeMin = 60)の価格からの変化率%で並べ替えているだけです。
色分けは、白が中央となるイメージです。

↑それぞれ5,60,1440分前に設定して、横に3つ並べています。
位置調整は、ShiftX,ShiftY で行えます。




↑文字が黄色の時は、その通貨のデータが足りない可能性があります。
通常は、1分足のデータを元に計算しますが、長期の変化率を見る時は長い時間足のデータを参照しますので、ログ等確認してください。

Add Starfreezemusic
  • yam

    また色々と面白いものをありがとうございます。
    Trader@Live!さんの文で思い出しました。
    FOREX.comを使っているのですが、チャート上のBid/Ask線の間隔が妙に広いです。プライスの上下動幅に対してスプレッドがどの位の幅か感覚的に掴みたいと思っています。スプレッドにたいし十分な値幅を獲れそうかどうかの判断の参考にしたいのです。
    チャート上に気配値のBid/Ask水平線を描くことは出来ないでしょうか。

  • ぴょんすけ

    はじめまして。全然違う内容でお伺いしたいのですが、
    15sec で15秒足を作ると、しばらくするとカクカクと動作が鈍くなります。これを解消するにはどうしたらよいのでしょうか?なにかいい方法があれば教えてくださいっまし、、、

  • 佐々木愛

    15秒チャートメーカーですが、FOREX.COMでLIVE口座を開いたのですが、どうやっても表示されません。DEMO口座でも同じです。Pepperstoneなど、他メーカーのデモ口座で試したら表示されました。ただ、DEMO口座なので不安定で使えません。これは何故なのか、さっぱり分かりません。対応方法を教えて頂けませんでしょうか。

  • もっと読む

ステータスバーの価格を拡大表示する。

謹みて 新年を賀し 申し上げます。<(_ _)>


735 :Trader@Live!:2013/01/12(土) 17:54:40.57 id:YhLpHkcT
チャートの各ローソク足マウスポインタ当てると
始値終値高値安値
が表示されると思うんですけど
この数値をチャートの四隅あたりに表示できるインジってありませんか?
何かシンプルなインジ程全然見つからなくて

・・・という訳で、早速作ってみました。

http://ux.getuploader.com/fai_fx/download/338/MT4StatusView.zip
AutoHotkeyによるGUIアプリで、ステータスバーの内容を200ミリ秒間隔で読み取って表示させているだけです。



ウィンドウ枠も邪魔かなと、消してみたモノが下記です。

http://ux.getuploader.com/fai_fx/download/339/MT4StatusView1.1.zip
タイトルバー用のウィンドウと、枠なしの表示ウィンドウを2つ並べています。

Add Star
  • kiyotaki

    はじめまして
    FAI様

    先日DLマーケットにて
    BOの商材を購入したのですが、
    なぜか不具合、販売者も
    PC遠隔操作で対応するとのことで
    ちょっと???
    しかしよく見ると
    よく、参考にさせていただいている
    fai様の文字が・・・。
    fai software とありましたので
    一応連絡してみました。

    fai様、ご本人?
    もしくは、きちっと製作した外注品??

    まったく、関係のないことでしたら
    申し訳ございません。

  • fai&gt;kiyotaki

    私がサイトで配布しているソースコードは、営利・非営利を問わず、一部または全部の複製・改変・再配布・販売などを承諾無しに自由に行うことが可能です。
    残念ながら、BOの商材作者の人とは面識が無い・・気がします。^^;
    (ご商売で配布される人には、fai software の文字等は削除をお願いしていますし。。)

  • 寺谷

    fai様
    初めまして!
    いつも尊敬の眼差しで拝読していたのですが
    そちらに登場してくださるとは驚きです(^_^;)
    私は622に書き込みした者です。
    faiさんのローソク足インジケーターを元に
    陽線を塗りつぶさないようにできないか試行錯誤しています。
    そして横幅の調整(左辺と右辺)はできたのですが
    縦幅の調整(上辺と下辺の調整)のほうがイマイチうまく行きません。

    ExtMapBuffer5[pos]=Open[pos]*0.9+Close[pos]*0.1;
    ExtMapBuffer6[pos]=Close[pos]*0.9+Open[pos]*0.1;
    というヒストグラムを書くことでそれらしくはなりましたが・・・
    足の実体部の長短によって下辺と上辺の太さがマチマチになってしまいます。
    なんとか「ライン1本分」を表現することはできないでしょうか?

    最後にファイ様のブログにまでお尋ねしてしまい申し訳ございません。

  • もっと読む

拡大したローソクを描く。

fesbix 2012/11/30 16:10
直近何本かを指定してローソク足の幅を広くすることは可能でしょうか。


幅を小さくして広い範囲での趨勢を見、直近は幅を大きくして
タイミングを計る、というふうに使いたいのですが。


う〜ん、こんな感じ?

Add Star
  • L

    す、、、、、すばらしい!!
    ありがたく、使わせて頂きます。

  • ナナシ

    横から失礼します。
    インジごと拡大して確認したいなら
    windowsのアクセサリにある拡大鏡の固定モードでも可能ですよん

  • Tiger

    こんにちは(^^) いつも楽しく見させて頂いています。
     以前、スケール固定(Scale fix )で、Bidラインをほぼ中央にするインジケータや、
     FixIt.exe 等を紹介していただいていましたが、
     画面のスケールを指定した幅で自動スクロールしていくことは、できないでしょうか?
     あと、スケールを切りの良い数字にすることは、できないでしょうか?
     Grid Builder.mq4と言うのがあるのですが、指定したpipsでラインをひいてくれます。
     これで、指定したスケール(例えば、50pipsとか)で、スクロールしてくれると
     良いなぁと思っているのですが、お時間有りましたら、作成していただけると嬉しいのですが
     ご検討、宜しくお願い致します。

  • もっと読む