MetaTraderを使ってFXの完全自動売買をしています。FX業者はBroco。
<< ぜひお読みください、このブログの方針 | main | 米国債を担保にカネを貸す日銀 >>
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - | pookmark |
[EA Tip 4] 携帯からMT4取引を閲覧する

5/4の記事にも書きましたが、携帯電話のブラウザからMetaTraderの取引経過を見たいとき、Publisherで出力するstatement.htmだと重すぎて、全体像が分からなかったりすることがあります。私の場合、statementDetailed.htmの名前を書き換えてstatement.htmにしていますから、特に重くなります(だって、たまにはあのstatementDetailed.htmのグラフを見たいじゃないですか。「あれ」だと分かりませんか?(笑))。

そこで、必要な取引情報だけを一定時間毎に更新させ、ブラウザーで閲覧するためのEAを作りましたので公開します。アイデアはガマウシさんのブログから頂きました。

/*
  NL0 Sample.mq4

  Writes an HTML file that describes daily closed and open positions to browse via cell phones

*/

#property copyright "nonki"
#property link      "http://nonki777.jugem.jp/"

extern bool showDetailedHeader = true;
extern string filename = "now.html";

datetime bartime=0;

int init() { return(0); }
int deinit() { return(0); }

int start()
{
  int i, total;
  double sum;

  // Calls only when bars are updated

  if (bartime==Time[0])
  {
    return(0);
  }
  bartime=Time[0];

  int fp;

  fp=FileOpen(filename, FILE_CSV|FILE_WRITE);
  if (fp<=0)
  {
    Print("cannot open"+filename);
    return(0);
  }

  FileWrite(fp,"<HTML>");
  FileWrite(fp,"<HEAD>");
  FileWrite(fp,"<META http-equiv=¥"Content-Type¥" content=¥"text/html; charset=SHIFT_JIS¥">");
  FileWrite(fp,"<title>MT4 Update</title>");
  FileWrite(fp,"</HEAD>");
  FileWrite(fp,"<BODY>");
  FileWrite(fp,"<font size=1>");  // as small font size as possible

  datetime now = TimeCurrent();

  FileWrite(fp,TimeToStr(now));
  FileWrite(fp,"<BR>");

  FileWrite(fp,"Num of Open Orders: "+DoubleToStr(OrdersTotal(),0));
  FileWrite(fp,"<BR>");
  FileWrite(fp,"Floating P/L: "+DoubleToStr(AccountProfit(),2));

  if (showDetailedHeader == true)
  {
    FileWrite(fp,"<BR>");
    FileWrite(fp,"Account Equity: "+DoubleToStr(AccountEquity(),2));

    double spread = MarketInfo("EURGBP", MODE_SPREAD);

    FileWrite(fp,"<BR>");
    FileWrite(fp,"EURGBP Spread: "+DoubleToStr(spread,0));

  }
  FileWrite(fp,"<BR><BR>");
  FileWrite(fp,"Closed Transactions:<BR>");

  string s,sy,c,bs,z,ba,st;
  string op,cp;
  double co,sw,pr;
  datetime oct;
  int t,m,dg;

  total=HistoryTotal();
  for (i=0; i<total; i++)
  {
    if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
    {
      oct = OrderCloseTime();
      if (TimeYear(oct)  != TimeYear(now) ||
          TimeMonth(oct) != TimeMonth(now) ||
          TimeDay(oct)   != TimeDay(now))
        continue;

      co = OrderCommission();
      sw = OrderSwap();
      pr = OrderProfit();
      if (co == 0.0 && sw == 0.0 && pr == 0.0)
      {
        continue;
      }

      t = OrderTicket();
      m = OrderMagicNumber();
      z = StringSubstr(DoubleToStr(m,0),2,2);

      sy = OrderSymbol();
      s = StringSubstr(sy,0,1)+StringSubstr(sy,3,1);
      dg = MarketInfo(sy,MODE_DIGITS);
      op = DoubleToStr(OrderOpenPrice(),dg);
      cp = DoubleToStr(OrderClosePrice(),dg);

      c = StringSubstr(TimeToStr(oct,TIME_DATE|TIME_MINUTES),11,5);

      if (OrderType()==OP_BUY) bs="B"; else if (OrderType()==OP_SELL) bs="S"; else bs=".";
     
      st = StringConcatenate(bs," ",DoubleToStr(OrderLots(),2)," ",s," ",z," ",c," ",op," ",cp," ",DoubleToStr(co+sw+pr,2));
      FileWrite(fp, st);
      FileWrite(fp,"<BR>");
    }
  }

  FileWrite(fp,"<BR>");
  FileWrite(fp,"Open Trades:<BR>");

  total=OrdersTotal();
  for (i=0; i<total; i++)
  {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
    {
      co = OrderCommission();
      sw = OrderSwap();
      pr = OrderProfit();
      if (co == 0.0 && sw == 0.0 && pr == 0.0)
      {
        continue;
      }

      t = OrderTicket();
      m = OrderMagicNumber();
      z = StringSubstr(DoubleToStr(m,0),2,2);

      sy = OrderSymbol();
      s = StringSubstr(sy,0,1)+StringSubstr(sy,3,1);
      dg = MarketInfo(sy,MODE_DIGITS);
      op = DoubleToStr(OrderOpenPrice(),dg);

      if (OrderType()==OP_BUY) { bs="B"; ba=DoubleToStr(MarketInfo(sy,MODE_BID),dg); }
      else if (OrderType()==OP_SELL) { bs="S"; ba=DoubleToStr(MarketInfo(sy,MODE_ASK),dg); }
      else { bs="."; ba="N/A"; }
     
      st = StringConcatenate(bs," ",DoubleToStr(OrderLots(),2)," ",s," ",z," ",op," ",ba," ",DoubleToStr(co+sw+pr,2));
      FileWrite(fp, st);
      FileWrite(fp,"<BR>");
    }
  }

  FileWrite(fp,"</font>");
  FileWrite(fp,"</BODY>");
  FileWrite(fp,"</HTML>");

  FileClose(fp);

  if (!SendFTP(filename))
  {
    int lasterror=GetLastError();
  }
}


Publisherでftpの設定をしてからこのEAを実行すると、下のようなページが出てきます。EAを張り付けたチャートが更新されるたびにこの画面の情報も変わりますので、便利です。グラフは見えませんけれど、なんか工夫すれば見れそうな気がしますね。今回はそこまでしませんでした。

なお、携帯で見たいので、文字はわざと小さくしていますし、最低限の情報しか表示しません。

あ、これはバナーではありませんので。now.htmlという名のhtmlファイルです。←ん、バナーのバージョンも作りたい気分になってきた(笑)。
NL 0 画面サンプル


 ↓よろしければ是非クリックをお願いします
にほんブログ村 為替ブログ FX システムトレード派へ にほんブログ村 為替ブログ FX初心者本人へ
にほんブログ村 トラコミュ FXブログへ

FXランキング

人気ブログランキングへ

| ☆のんき☆ | EA作成Tips | 06:28 | comments(1) | trackbacks(0) | pookmark |
スポンサーサイト
| スポンサードリンク | - | 06:28 | - | - | pookmark |
☆のんき☆さん

こんばんは&はじめまして
今回はEA作成のお願いのためにコメントさせていただきました。
携帯でチャートが見れたらいいなと思っていろいろ探していたらこのサイトに来ました。

お願いしたい内容としては、最新のチャート画像が見れる。あるいは、直近3個の4本値+データウィンドウの値が見れる。
というものの作成をお願いしたいのです。
プログラミングもEA作成もしたことがないため、作成を依頼することしかできません。

ちなみにですが、自分がこれだと思った内容のEAはあったのですが、使用期限付きで使用できませんでした。
参考までにリンクを張っておきます。
http://yaruomania.blog23.fc2.com/blog-entry-54.html

何卒よろしくお願いいたします。
| jyun | 2010/06/09 12:58 AM |









http://nonki777.jugem.jp/trackback/27
CATEGORIES
CALENDAR
SMTWTFS
1234567
891011121314
15161718192021
22232425262728
293031    
<< October 2017 >>
おすすめリンク
PROFILE
SELECTED ENTRIES
ARCHIVES
RECENT COMMENTS
RECENT TRACKBACK
クリックお願いします
カウンター
SPONSORED LINKS
MOBILE
qrcode
RECOMMEND
このページの先頭へ