Jumat, 01 Juni 2012

Contoh Program Menampilkan Nama Broker di Amibroker

Setelah browsing kemana kemari, akhirnya bisa juga saya buat program kecil untuk menampilkan broker ke amibroker.
Adapun Data Broker yang ditampilkan, data broker yang masih mempunyai saldo di suatu saham 5 terbanyak.
Langkah-langkah yang harus dipersiapkan
1. buatkan database rekapitulasi broker (bisa pakai MYSQL ataupun PostgreSQL silakan pilih aja), data bisa diambil dari flatform trading securities atau dari website www.duniainvestasi.com. atau kalau anda malas mengambilkan bisa minta ke saya datanya, free of charge.
2. Buatkan webservice, webservice ini digunakan untuk download data broker data database. karena di internet banyak yang pakai php, makai webservicenya saya menggunakan php, sedangkan untuk webservernya dapat menggunakan apache, script webservice :

$host = 'localhost';
$user = 'mtrading';
$pass = 'mtrading';
$db = 'mtrading';

if( $_GET["stock"] && $_GET["dt1"] && $_GET["dt2"]  && $_GET["rec"] ) {
 $link = pg_connect("host=localhost port=5432 dbname=mtrading user=mtrading password=mtrading") or die("Can not connect." .pg_error());
 //pg_select_db($db) or die("Can not connect.");

$stock =$_GET["stock"];
$dt1 =$_GET["dt1"];
$dt2 =$_GET["dt2"];
$rec =$_GET["rec"];
//$stock ="AALI";
//$dt1 ="20120501";
//$dt2 ="20120515";
//$rec =5;
$query = "select broker,sum(tvol) as saldo,sum(tval)/sum(tvol) as modal from market_broker where datet>='" .$dt1. "' and datet<='" .$dt2. "'";
$query = $query . " and stock='" .$stock. "' group by broker";
$query = $query . " having sum(tvol)>0 order by sum(tvol) desc " ;

$values = pg_query($link,$query);
flush();
echo("");
echo("");
$j = 0;

while ($rowr = pg_fetch_array($values, NULL, PGSQL_ASSOC)) {
    if ($j==$rec){
      break;
    }
      $broker = $rowr['broker'];
      $modal = $rowr['modal'];
      $saldo = $rowr['saldo'];
      echo "";
      echo "      echo " BROKER='$broker'";
      echo " MODAL='$modal'";
      echo " SALDO='$saldo'";
      echo "/>
";     
    $j++;
}

if ($j==0) {
  for ($i=1;$i<=$rec;$i++) {
     echo "     echo "     echo " BROKER='-'";
     echo " MODAL='0'";
     echo " SALDO='0'";
     echo "/>
";       
  }
} else
  if ($j<$rec) {
    for ($i=$j;$i<=$rec;$i++) {
     echo " BROKER='-'";
     echo " MODAL='0'";
     echo " SALDO='0'";
     echo "/>"; 
    }
  }

echo "
";
pg_free_result($values);
pg_close($link);
}
?>

setelah membuat webservicenya, langkah berikutnya program amibrokernya untuk mendownload data broker. program tersebut, gabungan antara script AFL dan vbscript, hal ini karena AFL tidak dapat membuat array dengan dimensi yang disesuaikan dengan kebutuhan. dan tidak bisa menyimpan array dengan tipe data striing, berikut scriptnya :
EnableScript("vbscript");

_SECTION_BEGIN("Dana Asing");
SetChartOptions(0,0,chartGrid20|chartGrid80);
//if (Interval() == inDaily) { 
 
 // Plot(gr5hari ,"Dana Asing",IIf( gr5hari>-1, colorGreen,colorRed) , styleHistogram);
  //odbcOpenDatabase("DSN=mtrading;UID=mtrading;PWD=mtrading"); 
  //Graph0=odbcGetArraySQL("SELECT fore_buy-fore_sell,DATET FROM saham_asing WHERE SYMBOL='"+Name()+"' ORDER BY DATET ASC");
  //Graph0=Ref(Graph0,1);
  //i=Lookup(DateTime(),_DT("2011-01-04"),1);
  //myobj = CreateObject("mbroker.Class1");
  //gr = myobj.GetBr("M","DSN=mtrading;UID=mtrading;PWD=mtrading","AALI","20120501","20120520");
  //Title = WriteVal(gr[1],1.0);
   broker = "";
   stock ="AALI";
   dt1="20120501"; //YYYYMMDD
   dt2="20120510"; //YYYYMMDD
   recbr=5;
 <%
   Dim objDOMDocument
   Dim root
   Dim child
   Dim j
   Dim i
   Dim isi
   Dim br(4)
   dim modal(4)
   dim saldo(4)
   dim stock
   dim dt1
   dim dt2
   dim url
   dim recbr
   stock = AFL("stock")
   dt1   = AFL("dt1")
   dt2   = AFL("dt2")
   recbr = AFL("recbr")


   Set objDOMDocument = CreateObject("MSXML2.DOMDocument")
   objDOMDocument.async = False
   url ="http://192.168.1.20/misterstock/broker.php?" + "stock=" + stock
   url =url + "&dt1=" + dt1 + "&dt2=" & dt2 & "&rec=" & recbr
  ' msgbox(url)
   'objDOMDocument.Load ("http://192.168.1.20/misterstock/broker.php?stock=AALI&dt1=20120303&dt2=20120312&rec=5")
   objDOMDocument.Load (url)

   Set root = objDOMDocument.selectNodes("//record")
     for j = 0 to root.length - 1
         for Each child In root(j).childNodes
          if child.Attributes.length > 0 Then
             for i = 0 To child.Attributes.length - 1
               if child.Attributes(i).NodeName="BROKER" then
                 br(j) = child.Attributes(i).nodeValue
               else
                 if child.Attributes(i).NodeName="MODAL" then
                   modal(j) = child.Attributes(i).nodeValue
                 else
                  saldo(j) = child.Attributes(i).nodeValue 
                 end if
               end if                  
             Next
             'MsgBox br(j)
          End if
       Next
     Next
     ' Mengambil Nilai dari Broker,Modal,Saldo
     for i = 0 to 4
      AFL("broker") =  AFL("broker") +  br(i) + ","
     next 
 %>


 
  Title=broker ;

_SECTION_END();

adapun hasilnya yang ditampilkan sebagai berikut :

 
script tersebut dapat dikembangkan seperti untuk menampilkan modal dasar dan saldo dari setiap broker, sehingga dapat membantu dalam memutuskan trading kita apalah buy, hold atau sell.

Demikian script sederhana ini, mudah-mudahan dapat membantu rekan yang baca blog ini.


0 komentar:

Posting Komentar