※後々コメント解説を入れる予定(とりあえずアップしてます。。。)
MQL4のコード
bool flag = true;
int Ticket;
int OnInit(){
Ticket=0;
return(INIT_SUCCEEDED);
}
void OnTick(){
if(flag){
Ticket = OrderSend(Symbol(),OP_BUY,MarketInfo(Symbol(),MODE_MINLOT),MarketInfo(Symbol(),MODE_ASK),30,0,0,NULL,12345,0,clrNONE);
}
if(Ticket!=0){
OrderSelect(Ticket,SELECT_BY_TICKET);
OrderClose(Ticket,OrderLots(),MarketInfo(Symbol(),MODE_BID),30,clrNONE);
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);
string Order_str = "ticket="+OrderTicket()
+"&symbol="+OrderSymbol()
+"&type="+OrderType()
+"&lot="+OrderLots()
+"&open_price="+OrderOpenPrice()
+"&close_price="+OrderClosePrice()
+"&magic_number="+OrderMagicNumber()
+"&open_time="+OrderOpenTime()
+"&close_time="+OrderCloseTime()
+"&profit="+OrderProfit();
//Comment(OrderCloseTime(),OrderProfit());
string url="http://localhost/WebPostTEST/"; // URL
string post_str = Order_str;
Transmission(post_str,url);
flag = false;
Ticket = 0;
}
}
関連記事一覧:関数OrdersSend(),関数MarketInfo(),関数Comment()
void Transmission(string post_str,string url){
string method = "POST"; // HTTPメソッド
string cookie=NULL; // cookie
string referer=NULL; // リファラ
int timeout=5000; // タイムアウト
char data[]; // HTTPメッセージ本体の配列 ※参照渡し
int data_size=0; // data[]配列のサイズ(バイト単位)
char result[]; // サーバーの応答データを含む配列 ※参照渡し
string result_headers; // サーバー応答のヘッダ ※参照渡し
StringToCharArray( post_str, data ,0,-1,CP_UTF8);
int res = WebRequest(method,url,cookie,referer,timeout,
data,data_size,result,result_headers);
if(res==-1){
Print("WebRequest::",GetLastError());
}else{
CharArrayToString(result,0,-1,CP_UTF8);
//Comment(CharArrayToString(result,0,-1,CP_UTF8)); //デバッグ時に使用
}
}
関連記事一覧:関数WebRequest()
PHPのコード
クラスDBManager()を使用してDBへ値を挿入しています。
なのでPHPのコードはコピーでは動きません。
$ticket=setPostVal("ticket");
$symbol=setPostVal("symbol");
$type=setPostVal("type");
$lot=setPostVal("lot");
$open_price=setPostVal("open_price");
$close_price=setPostVal("close_price");
$magic_number=setPostVal("magic_number");
$open_time=setPostVal("open_time");
$close_time=setPostVal("close_time");
$profit=setPostVal("profit");
$db = new DBManager();
$sql = "SELECT * FROM data WHERE ticket = ?";
$order=$db->select( $sql , array($ticket) );
if($ticket>0 && empty($order)){
$array = array($ticket,$symbol,$type,$lot,$open_price,$close_price,$magic_number,$open_time,$close_time,$profit);
$sql = "insert into data ( ticket , symbol , type ,lot , open_price ,close_price,magic_number,open_time,close_time,profit )
values(?,?,?,?,?,?,?,?,?,?)";
$res = $db->insert($sql,$array);
}
function setPostVal($param){
if(!isset($_POST[$param])){
$data = 0;
}else{
$data = $_POST[$param];
}
return $data;
}
データベース作成&テーブル作成SQL
データベースを作成
CREATE DATABASE `trade` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
テーブルを作成
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; CREATE TABLE IF NOT EXISTS `data` ( `ticket` int(10) unsigned DEFAULT NULL, `symbol` varchar(16) NOT NULL, `type` int(8) NOT NULL, `lot` double NOT NULL, `open_price` double unsigned NOT NULL, `close_price` double unsigned NOT NULL, `magic_number` int(128) NOT NULL, `open_time` datetime NOT NULL, `close_time` datetime NOT NULL, `profit` double NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
動作環境一覧
PHP::Version 5.3.1
XAMPP::1.7.3
Apache::2.2.14
MySQL::クライアントのバージョン: 5.1.41
phpMyAdmin::バージョン情報: 3.1.3.1
