HTMLファイルを作成してアップする

ここでは、「HTMLファイルを作成してアップする」 に関する記事を紹介しています。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
HTMLファイルを作成してアップする

a href="http://fxsk.blog105.fc2.com/blog-entry-130.html">前回無事にFTPサーバーに画像をアップすることに成功しましたが画像ファイルのみでは、不便なのでTOPページになるHTMLファイルも一緒にアップしたいと思います。
また、売買シグナルが出たらアップするように変更します。

シグナルを出すインディケーター


まず、売買シグナルですが第5章プログラムを書くのカテゴリーを参考にシグナルを出すインディケーターを作成します。
今回は、第5章プログラムを書くで作成した「期間の異なる移動平均線ので売買シグナルを表示するプログラム」を使用します。


期間の異なる移動平均線ので売買シグナルを表示するプログラム

#property indicator_chart_window
#property indicator_buffers 4

//---- バッファー
double Fa_Buf[];
double Sl_Buf[];
double Buy_Buf[];
double Sell_Buf[];

//---- 期間の変数
extern int Fa_Period=10;
extern int Sl_Period=20;

//初期化
int init()
{
//---- バッファのインディケーターへの割り当て
SetIndexBuffer(0,Fa_Buf);
SetIndexBuffer(1,Sl_Buf);
SetIndexBuffer(2,Buy_Buf);
SetIndexBuffer(3,Sell_Buf);

//---- インディケーターの種類の設定
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1, Red);
SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1, Blue);
SetIndexStyle(2, DRAW_ARROW, STYLE_SOLID, 1, Blue);
SetIndexArrow(2,233);
SetIndexEmptyValue(2,0);
SetIndexStyle(3, DRAW_ARROW, STYLE_SOLID, 1, Red);
SetIndexArrow(3,234);
SetIndexEmptyValue(3,0);
return(0);
}

//処理
int start()
{
int i, limit = Bars-IndicatorCounted();

for(i=limit-1; i>=0; i--)
{
Fa_Buf[i] = iMA(NULL,0,Fa_Period,0,MODE_SMA,PRICE_CLOSE,i);
Sl_Buf[i] = iMA(NULL,0,Sl_Period,0,MODE_SMA,PRICE_CLOSE,i);

if(Fa_Buf[i+1] <= Sl_Buf[i+1] && Fa_Buf[i] > Sl_Buf[i]) Buy_Buf[i] = Low[i];
if(Fa_Buf[i+1] >= Sl_Buf[i+1] && Fa_Buf[i] < Sl_Buf[i]) Sell_Buf[i] = High[i];
}

return(0);
}


このプログラムを「MAcross.mq4」で保存します。

iCustom()を使ってシグナルを取得する


iCustom()でMAcrossの売買シグナルを取得します。
MAcross.mq4の売買シグナルは、

double Buy_Buf[];
double Sell_Buf[];

に値が入っている時です。これをiCustom()で取得します。

期間の異なる移動平均線のクロスで売買シグナルを取得するプログラム

double BuySignal=iCustom(NULL, 0, "MAcross",2,0); /買いシグナル
double SellSignal=iCustom(NULL, 0, "MAcross",3,0); /売りシグナル


これで、シグナルの取得が出来ました。

準備完了、HTMLファイルを作成しよう


準備が整いましたので、最後にHTMLファイルを作成します。
第六章ファイル操作を参考にフィルを作成していきます。

HTMLファイルの作成

int FileName=FileOpen("index.html", FILE_CSV|FILE_READ|FILE_WRITE,';');

if(FileName<0) return(0);

FileWrite(FileName,"<HTML>");
FileWrite(FileName,"<HEAD>");
FileWrite(FileName,"<TITLE>FXシグナル</TITLE>");
FileWrite(FileName,"</HEAD>");
FileWrite(FileName,"<BODY>");
FileWrite(FileName,"<H1>シグナル配信</H1><BR>");
  FileWrite(FileName,"<img alt=\"\" src=\"<font color="red">アップした画像のURL</font>\" /><BR><BR>");
FileWrite(FileName,"</BODY>");
FileWrite(FileName,"</HTML>");


HTMLの記述の方法はここでは割愛させて頂きます。
リンクを貼る場合などは「””」ダブルクォーテーションでURLをくくります。
メタトレーダーでも文字列をあらわす場合「””」ダブルクォーテーションでくくります。
このため、思わぬところでエラーが起こる事があります。
そこで、「””」ダブルクォーテーションを文字としてあらわしたいときはダブルクォーテーションの前に「」を入力します。
これで、ファイルが作成されました。

最後に作成したファイルを全てアップします


FTPサーバーへのアップのやり方はこちらを参照してください。
では、コードです。


期間の異なる移動平均線のクロスで画像をアップするプログラム

string BuySell;

static string last_BuySell="";
int start()
{
double BuySignal=iCustom(NULL, 0, "MAcross",2,0); /買いシグナル
double SellSignal=iCustom(NULL, 0, "MAcross",3,0); /売りシグナル

if(BuySignal!= EmptyValue)
{
BuySell="LONG";
}
if(SellSignal!= EmptyValue)
{
BuySell="SHORT";
}

if(BuySignal!= EmptyValue || SellSignal!= EmptyValue){

double PR=Ask;
double AT=iATR(NULL,0,14,0);
string SY=Symbol();
int PE=Period();
int y=TimeYear(TimeLocal());
int mt=TimeMonth(TimeLocal());
int d=TimeDay(TimeLocal());
int h=TimeHour(TimeLocal());
int m=TimeMinute(TimeLocal());


bool GA=WindowScreenShot("Signal.gif",240,400);
if(!GA) return(0);

bool GAL=WindowScreenShot("SignalL.gif",1240,800);
if(!GAL) return(0);

int FileName=FileOpen("index.html", FILE_CSV|FILE_READ|FILE_WRITE,';');

if(FileName<0) return(0);

FileWrite(FileName,"<HTML>");
FileWrite(FileName,"<HEAD>");
FileWrite(FileName,"<TITLE>FXシグナル</TITLE>");
FileWrite(FileName,"</HEAD>");
FileWrite(FileName,"<BODY>");
FileWrite(FileName,"<H1>シグナル配信</H1><BR>");

FileWrite(FileName,StringConcatenate("Signal [",BuySell,"]<BR><BR>"));
FileWrite(FileName,StringConcatenate("Symbol[",SY,"]<BR><BR>"));
FileWrite(FileName,StringConcatenate("Time[",PE,"分足]<BR><BR>"));
FileWrite(FileName,StringConcatenate("日時[",y,"年",mt,"月",d,"日"," ",h,"時",m,"分]<BR><BR>"));
FileWrite(FileName,StringConcatenate("PRICE[",PR,"]<BR><BR>"));
FileWrite(FileName,StringConcatenate("ATR[",AT,"]<BR><BR>"));

FileWrite(FileName,"<img alt=\"\" src=\"http://fxsk.web.fc2.com/Signal.gif\" /><BR><BR>");
FileWrite(FileName,"<A HREF=\"http://fxsk.web.fc2.com/SignalL.gif\" TARGET=\"_blank\">BIGIMAGE</a><BR><BR><BR>");
FileWrite(FileName,"提供:<A HREF=\"http://fxsk.blog105.fc2.com/\" TARGET=\"_blank\">メタトレーダー逆引きブログ</A><BR><BR>");
FileWrite(FileName,"掲載情報に基づいて取引を行い、被った損害について本ブログ・サイト及び管理人は一切の責任を負えませんのでご了承下さい。");
FileWrite(FileName,"</BODY>");
FileWrite(FileName,"</HTML>");

FileClose(FileName);

if(!SendFTP("index.html")){
int lasterror=GetLastError();
}
if(!SendFTP("Signal.gif")){
lasterror=GetLastError();
}
if(!SendFTP("SignalL.gif")){
lasterror=GetLastError();
}
last_BuySell = BuySell;
}

}


//----

//----
return(0);
}



せっかくなので、シグナル発生日時なども一緒に記述しています。
今回のコートでは、画像作成やアップするときにエラーが発生しても、再度行う処理は記述していません。
画像作成の時は、失敗したら何もしない。
アップ時は、エラーコードを取得させているだけです。

画像の作成は、多くのマシンパワーを使います。アップに関しても回線の状態やFTPサーバー側の問題などで、無限ループに陥る危険性がありますのであえて記述していません。


コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://fxsk.blog105.fc2.com/tb.php/131-8044ef32
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。