※後々コメント解説を入れる予定(とりあえずアップしてます。。。)
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