トレードデータをデータベースに入れるコードのみ

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

シェアする

  • このエントリーをはてなブックマークに追加

フォローする