Kenapa fungsi ordersend terkena warning pada metaeditor

KASKUS

//s.kaskus.id/e3.1/images/layout/home-logo-n.png

51

244

//www.kaskus.co.id/thread/000000000000000003311468/share-mau-buat-expert-advisor-atau-indicator-sendiri

05-02-2010 23:27

List tips & trick - Update 31 Mei 2010
Halo para kaskuser, Mungkin ada yg pernah nyoba EA (expert advisor) / robot trading milik org lain dan merasa bisa disempurnakan. Atau punya gaya trading sendiri yg ingin diotomatisasi biar meniadakan faktor emosi atau tdk disiplin. Pernah berpikir utk buat EA / robot sendiri? Kalo di platform metatrader ada tombol yg akan menjalankan editor yg bisa meng-compile script yg kita buat jadi ex4 sehingga bisa dijalankan di broker manapun yg memakai platform metatrader.


editor dari platform metatrader bernama metaeditor juga dilengkapi online help lengkap agar kita bisa membuat EA yg canggih. Secara berkala gw akan share tips & trick membuat EA, harapan gw agar para kaskuser bisa membuat EA sendiri jadi bebas menerapkan & menyempurnakan teknik trading, juga agar kita bisa belajar bareng2.

Kalo ada yg mau nanya atau ikutan sharing, monggo gan

05-02-2010 23:27

tata604 memberi reputasi

2010-02-05T23:27:38+07:00

Tampilkan isi Thread

24-03-2010 21:55

Original Posted By r3dlabel► suhu misalkan tp nya dh kena trus eanya biar ga lngsung op lg dia nyari sinyal dlu itu pake fungsi apa y suhu?

thanks


gw rapihin sedikit codingnya, utk memperlancar pembuatan EA nggak ada salahnya kalo dibiasakan code-nya "diperindah" sedikit
sehingga kita bisa men-track flow EA dgn sekilas pandang.
if(OrdersTotal() == 0) { if(signal==1) { ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Ask+TP*Point,"buy",magic,0,Blue); if(ticket==-1) { Alert("OrderSend error #",GetLastError()); } [COLOR="Red"][B]signal = 0[/B][/COLOR] } }

}

jadi kl ada signal, selain op, EA mereset signal sehingga tidak op berulang2

semoga membantu

24-03-2010 21:55

Kaskus Maniac Posts: 6,066

Original Posted By sridwan►shift-nya yg merah gan

coba arahkan text cursor-nya ke tengah2 tulisan iStochastic atau iRSI terus tekan F1, voila..

online help

semoga membantu

25-03-2010 07:54

25-03-2010 09:47

Original Posted By PadiSloof►layak dicendolin ni trit, tapi nunggu mateng

nyimak dulu gan


silahkan gan, ditunggu pertanyaannya
25-03-2010 09:47

25-03-2010 22:13

Kaskus Addict Posts: 1,736

Teruskan Gan! thank you

btw thread untuk buat custom indicator juga ok lho
25-03-2010 22:13

26-03-2010 16:49

thx berat utk cendolnya bro padisloof

sebetulnya ada 2 yg nyendolin tp yg satunya anonim alias ngga ada namanya, bro or sis whoever you are, thx

Original Posted By draphios►Teruskan Gan! thank you


btw thread untuk buat custom indicator juga ok lho


ok gan
26-03-2010 16:49

01-04-2010 21:24

Pengganti OrderSend yg lebih sehat :)

agan2 sekalian mungkin pernah merasa "capek" dgn OrderSend yg memang vital tapi mungkin sedikit manja

  • kita harus berhati2 terhadap beda buy limit, buy stop, sell limit, sell stop
  • kl kita ingin ambil running price, harus pilih bid / ask, TP & SL hitung manual
  • kl coding kita lupa gunakan NormalizedDouble, order kita bisa ditolak ketika digit dibelakang koma yg dikembalikan platform tidak sama dgn market yg kita tuju.
  • kita juga harus menambahkan logika OP ulang bila terjadi requote

Gw juga merasa kayak gitu, makanya gw buat fungsi pengganti OrderSend yg menurut gw lebih memudahkan (paling nggak buat gw
) utk membedakan dgn OrderSend bawaan metatrader, fungsi ini gw namakan SR.OrderSend, lengkapnya:int SR.OrderSend(string symbol, int type, double volume, double reqPrice, double stoploss, double takeprofit, string comment="", int magic=0,

datetime expires=0, color arrow_color = CLR_NONE)

fitur2nya:
  1. "behavior"-nya sama dgn OrderSend biasa, jumlah & urutan parameternya persis sama, & bila symbol diisi NULL, maka SR.OrderSend akan OP ke market dimana EA di-attach
  2. type cukup pilih salah satu: OR_TYPE_BUY atau OR_TYPE_SELL, SR.OrderSend otomatis akan memilih limit atau stop berdasarkan harga yg diinginkan
  3. bila kita ingin OP di running price maka isi reqPrice dgn -1, maka otomatis akan diambil harga sesuai buy/sell dan stoploss & takeprofit akan berfungsi sbg pips (brp pips dari running price utk TP / SL) dan menyesuaikan apakah ordernya buy /sell, tidak perlu bingung kurang & tambah

  4. semua harga sudah otomatis di NormalizeDouble
  5. otomatis retry bila terjadi requote (max 10x)
contoh pemakaian:

misal ingin ambil pending buy di AUDUSD di harga 0.9250, SL=0.9200, TP=0.9300 sebesar 0.1 lot


ticket = SR.OrderSend("AUDUSD", OR_TYPE_BUY, 0.1, 0.9250, 0.9200, 0.9250);
misal ingin op sell running price di GBPJPY SL=50 pips, TP=75 pips sebesar 1 lot
ticket = SR.OrderSend("GBPJPY", OR_TYPE_SELL, 1, -1, 50, 75);
sebelum gw kasih codenya, disclaimer dulu ya

semua code di bawah ini diberikan "as is", walau sudah di test & gw gunakan di hampir semua EA gw, tidak ada garansi bahwa code ini akan berfungsi di EA agan2 sekalian.
gw tidak bertanggung jawab atas kerugian apapun yg terjadi akibat penggunaan code ini. USE IT AT YOUR OWN RISK.

nah

kl yg mau coba, tinggal copas code berikut, taruh di sebuah file (misal: sr.mqh), save di folder experts\include


//+------------------------------------------------------------------+ //| sr.mqh | //| Stephanus Ridwan | //| sridwan981 at gmail dot com | //| Deskripsi: | //| Fungsi pengganti OrderSend yg lebih sehat /:)/ | //| | //| Fitur: | //| - otomatis memilih limit atau stop utk pending order | //| - otomatis normalisasi harga | //| - bila ingin langsung op, set harga=-1, stoploss & takeprofit | //| berubah menjadi pips | //| - otomatis akan order ulang bila requote | //+------------------------------------------------------------------+ #include <stderror.mqh> // tipe order #define OR_TYPE_BUY 1 #define OR_TYPE_SELL 2 //+------------------------------------------------------------------+ //| OrderSend yg lebih sehat /:)/ | //+------------------------------------------------------------------+ int SR.OrderSend(string symbol, int type, double volume, double reqPrice, double stoploss, double takeprofit, string comment="", int magic=0, datetime expires=0, color arrow_color = CLR_NONE) { int ticket = -1; for(int i=0; (i < 10) && (ticket == -1); i++) { // if no symbol supplied, use current MarketInfo if (MarketInfo(symbol, MODE_DIGITS) < 1) { symbol = Symbol(); } // if price is 0, use current Bid / Ask if (reqPrice <= 0) { if (type == OR_TYPE_BUY) { reqPrice = NormalizeDouble(MarketInfo(symbol, MODE_ASK), MarketInfo(symbol, MODE_DIGITS)); stoploss = reqPrice - (stoploss * MarketInfo(symbol, MODE_POINT)); takeprofit = reqPrice + (takeprofit * MarketInfo(symbol, MODE_POINT)); } else if (type == OR_TYPE_SELL) { reqPrice = NormalizeDouble(MarketInfo(symbol, MODE_BID), MarketInfo(symbol, MODE_DIGITS)); stoploss = reqPrice + (stoploss * MarketInfo(symbol, MODE_POINT)); takeprofit = reqPrice - (takeprofit * MarketInfo(symbol, MODE_POINT)); } } else { reqPrice = NormalizeDouble(reqPrice, MarketInfo(symbol, MODE_DIGITS)); } int cmd = SR.bestOperationType(symbol, type, reqPrice); ticket = OrderSend(symbol, cmd, volume, reqPrice, 5, stoploss, takeprofit, comment, magic, expires, arrow_color); if ((ticket == -1) && (GetLastError() == ERR_INVALID_STOPS)) { break; } RefreshRates(); } return(ticket); } //+------------------------------------------------------------------+ //| menentukan operation type terbaik utk OrderSend | //+------------------------------------------------------------------+ int SR.bestOperationType(string symbol, int type, double reqPrice) { double runningPrice; if (type == OR_TYPE_BUY) { runningPrice = MarketInfo(symbol, MODE_ASK); if (reqPrice > runningPrice) { return(OP_BUYSTOP); } if (reqPrice < runningPrice) { return(OP_BUYLIMIT); } return(OP_BUY); } if (type == OR_TYPE_SELL) { runningPrice = MarketInfo(symbol, MODE_BID); if (reqPrice > runningPrice) { return(OP_SELLLIMIT); } if (reqPrice < runningPrice) { return(OP_SELLSTOP); } return(OP_SELL); } } //+------------------------------------------------------------------+

nanti kl mau digunakan dalam sebuah EA, pasang baris berikut di paling atas#include <sr.mqh>

semoga membantu

01-04-2010 21:24

05-04-2010 00:36

Gan klo indicator ini bs ditambahin alert ga ya? tlg bantu tambahin alert sound dunk.. thx
//+------------------------------------------------------------------+ //| Envelopes.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| //www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "//www.metaquotes.net" //---- indicator settings #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red //---- indicator parameters extern int MA_Period=14; extern int MA_Shift=0; extern int MA_Method=0; extern int Applied_Price=0; extern double Deviation=0.1; //---- indicator buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; //---- int ExtCountedBars=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { int draw_begin; string short_name; //---- drawing settings SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexShift(0,MA_Shift); SetIndexShift(1,MA_Shift); IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)); if(MA_Period<2) MA_Period=14; draw_begin=MA_Period-1; //---- indicator short name IndicatorShortName("Env("+MA_Period+")"); SetIndexLabel(0,"Env("+MA_Period+")Upper"); SetIndexLabel(1,"Env("+MA_Period+")Lower"); SetIndexDrawBegin(0,draw_begin); SetIndexDrawBegin(1,draw_begin); //---- indicator buffers mapping SetIndexBuffer(0,ExtMapBuffer1); SetIndexBuffer(1,ExtMapBuffer2); if(Deviation<0.1) Deviation=0.1; if(Deviation>100.0) Deviation=100.0; //---- initialization done return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit; if(Bars<=MA_Period) return(0); ExtCountedBars=IndicatorCounted(); //---- check for possible errors if (ExtCountedBars<0) return(-1); //---- last counted bar will be recounted if (ExtCountedBars>0) ExtCountedBars--; limit=Bars-ExtCountedBars; //---- EnvelopesM counted in the buffers for(int i=0; i<limit; i++) { ExtMapBuffer1[i] = (1+Deviation/100)*iMA(NULL,0,MA_Period,0,MA_Method,Applied_Price,i); ExtMapBuffer2[i] = (1-Deviation/100)*iMA(NULL,0,MA_Period,0,MA_Method,Applied_Price,i); } //---- done return(0); }

//+------------------------------------------------------------------+

05-04-2010 00:36

05-04-2010 16:48

Original Posted By CapresIsDead►Gan klo indicator ini bs ditambahin alert ga ya? tlg bantu tambahin alert sound dunk.. thx

sekilas ini indi envelope standar metatrader khan ya ? sebaiknya utk alert sound di EA aja gan, lebih jelas & terkontrol, contoh:double i = iEnvelopes(NULL, 0, 14, MODE_SMA, 10, PRICE_CLOSE, 0.3, MODE_UPPER, 0); if (i < Ask - (LongThreshold * Point)) { // long signal PlaySound("alert.wav"); }
utk help tentang iEnvelopes coba lihat di bagian Trading Indicators
utk help PlaySound ada di bagian Common functions
File suara berformat WAV yg mau diputar, diletakkan di folder sounds dari instalasi metatrader.

semoga membantu

05-04-2010 16:48

07-04-2010 17:44

ada yg bertanya apakah SR.OrderSend dalam modus pips memperhitungkan spread, jawabannya adalah tidak karena spread bisa berubah2 dan infonya bisa didapatkan dengan mudah dgn:
MarketInfo(Symbol(), MODE_SPREAD)contoh pemakaian, misal ingin OP buy 0.1 lot dgn target profit 50 pips + spread:int targetProfit = 50 + MarketInfo(Symbol(), MODE_SPREAD); SR.OrderSend(Symbol(), OR_TYPE_BUY, 0.1, -1, 30, targetProfit);
semoga membantu
07-04-2010 17:44

07-04-2010 22:07

hi bro.. ikutan mau nanya dunk.. 1. gimana sih caranya mau ngambil angka titik zigzag yang baru saja terbentuk? misal setiap kali titik baru zigzag terbentuk, saya mau open posisi. tapi open posisi nya setiap kali ada titik baru saja.. jadi ngga berulang 2. trus bagaimana mendeteksi titik zigzag itu titik high apa titik low.. kan zigzag ada high low nya yah.. ttolong banget bantuannya yaaaa.... thanks banget yaa broo...

07-04-2010 22:07

12-04-2010 13:28

Kaskus Addict Posts: 2,031

Permisi Suhu, Nubie mau tanya... Gimana caranya untuk mengontrol MM di EA? Misalnya, jika equity awal $10,000 terus tinggal $5,000, atau bertambah jadi $15,000, maka EA akan berhenti beroperasi dan semua order akan di-close. Bingung saya.

Makasih Suhu...

12-04-2010 13:28

15-04-2010 22:59

Original Posted By iluvhape►hi bro.. ikutan mau nanya dunk.. 1. gimana sih caranya mau ngambil angka titik zigzag yang baru saja terbentuk? misal setiap kali titik baru zigzag terbentuk, saya mau open posisi. tapi open posisi nya setiap kali ada titik baru saja.. jadi ngga berulang 2. trus bagaimana mendeteksi titik zigzag itu titik high apa titik low.. kan zigzag ada high low nya yah.. ttolong banget bantuannya yaaaa.... thanks banget yaa broo...


waduh blm pernah pake zigzag bro
entar gw coba2 dulu ya
15-04-2010 22:59

15-04-2010 23:00

EA melakukan action berdasarkan Equity

Original Posted By etrijuni►Permisi Suhu, Nubie mau tanya... Gimana caranya untuk mengontrol MM di EA? Misalnya, jika equity awal $10,000 terus tinggal $5,000, atau bertambah jadi $15,000, maka EA akan berhenti beroperasi dan semua order akan di-close. Bingung saya.

Makasih Suhu...


kalo versi gw sih gini ya
cocok ngga?
#include <stderror.mqh> extern double EquityTreshUpper = 15000; extern double EquityTreshLower = 5000; void init() {} bool runEA = True; void start() { if (runEA) { // * * * * * * * * * * * * * * // main loop EA masuk di sini // * * * * * * * * * * * * * * // terakhir cek kondisi keuangan if (([B][COLOR="Blue"]AccountEquity()[/COLOR][/B] <= EquityTreshLower) || ([B][COLOR="Blue"]AccountEquity()[/COLOR][/B] >= EquityTreshUpper)) { closeAllOrder(); runEA = False; } } } void closeAllOrder() { for(int i = 0; i < OrdersTotal(); i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_BUY) { while (true) { bool done = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), 5); if (done) { break; } if (GetLastError() == ERR_INVALID_TICKET) { break; } RefreshRates(); // requote } } else if (OrderType() == OP_SELL) { while (true) { done = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), 5); if (done) { break; } if (GetLastError() == ERR_INVALID_TICKET) { break; } RefreshRates(); // requote } } else // pending order { OrderDelete(OrderTicket()); } } } void deinit() {}

//+------------------------------------------------------------------+


semoga membantu
15-04-2010 23:00

16-04-2010 08:55

Original Posted By sridwan►waduh blm pernah pake zigzag bro

entar gw coba2 dulu ya

thanks bro.. semoga sukses nyobanya n bagi2 ane EA nya hihihihi...

:maho :maho :maho

16-04-2010 08:55

23-04-2010 12:26

Aktivis Kaskus Posts: 688

Gan... Mohon bantuannya untuk agan programmer MQL... Untuk EA yang sedang gw edit.... Gini gan pertanyaannya : gw sedang ngatur money management untuk sebuah EA yang gw pingin open dengan lot yang besarnya 0.1lot untuk setiap balance kelipatan 5000. Setelah otak atik sana sini, gw dapet sintaxnya : LOTS=NormalizeDouble(AccountBalance()*0.1/5000,1); Dengan syntax ini, maka dengan modal awal 5000, dia akan buka 0.1 lot, dan naik 0.1 lot setiap kelopatan 0.1 lot.... yaitu 1000, 1500, 2000, dst...nya. Cuma masalahnya setelah gw backtest, ternyata saat modal awal sudah berkembang setengah dari kelipatan, maka dia langsung naik lotnya.... Contoh : balance 5000, open 0.1 lot... balance 7000, open 0.1 lot... balance 7500, open 0.1 lot... balance 7600, open 0.2 lot.... <----- ini masalahnya: di atas 7500 dia akan membulatkannya ke atas balance 10000, open 0.2 lot... jadi gan masalahnya, saat balance sudah di atas setengah dari kelipatan 5000, maka dia akan membulatkannya keatas, sehingga akan menaikkan lotnya 0.1 lot. Pertanyaannya, gimana menanggulanginya, supaya dia hanya menaikkannya tepat setiap kelipatan 5000... tanpa ada pembulatan ke atas? Jadi mau gw lotnya naik dari 0.1 ke 0.2 itu pada saaat balance sudah 10000, bukan pada saat di atas 7500.... Kepinginnya gw,.... pembulatan balance itu ke bawah bukan ke atas... Jadi sebelum dia mencapai 10000,... tetap dianggap 5000 ... jadi open lotnya berdasarkan balance 5000... ........ Tolong bantuannya gan ....

Soalnya gw bukan programmer... mungkin ada syntax yang gw nggak tau, yang seharusnya bisa digunakan untuk mengatasi masalah ini.....

23-04-2010 12:26

:
:
:
izin memantau gan...
23-04-2010 20:29

Aktivis Kaskus Posts: 499

bookmark dolo....plus ijin nyimak gan..
24-04-2010 13:17

26-04-2010 13:21

Original Posted By HeikkenAshi►gw sedang ngatur money management untuk sebuah EA yang gw pingin open dengan lot yang besarnya 0.1lot untuk setiap balance kelipatan 5000. Setelah otak atik sana sini, gw dapet sintaxnya : LOTS=NormalizeDouble(AccountBalance()*0.1/5000,1); Dengan syntax ini, maka dengan modal awal 5000, dia akan buka 0.1 lot, dan naik 0.1 lot setiap kelopatan 0.1 lot.... yaitu 1000, 1500, 2000, dst...nya. Cuma masalahnya setelah gw backtest, ternyata saat modal awal sudah berkembang setengah dari kelipatan, maka dia langsung naik lotnya.... Contoh : balance 5000, open 0.1 lot... balance 7000, open 0.1 lot... balance 7500, open 0.1 lot... balance 7600, open 0.2 lot.... <----- ini masalahnya: di atas 7500 dia akan membulatkannya ke atas balance 10000, open 0.2 lot... jadi gan masalahnya, saat balance sudah di atas setengah dari kelipatan 5000, maka dia akan membulatkannya keatas, sehingga akan menaikkan lotnya 0.1 lot. Pertanyaannya, gimana menanggulanginya, supaya dia hanya menaikkannya tepat setiap kelipatan 5000... tanpa ada pembulatan ke atas? Jadi mau gw lotnya naik dari 0.1 ke 0.2 itu pada saaat balance sudah 10000, bukan pada saat di atas 7500.... Kepinginnya gw,.... pembulatan balance itu ke bawah bukan ke atas...

Jadi sebelum dia mencapai 10000,... tetap dianggap 5000 ... jadi open lotnya berdasarkan balance 5000...


Coba bantu ya gan

pake MathFloor bisa:


double lots = MathFloor(AccountBalance()/5000)*0.1;

gw ngetesnya kaya gini


double lots1 = MathFloor(9999/5000)*0.1; // hasil 0.1 double lots2 = MathFloor(10000/5000)*0.1; // hasil 0.2 double lots3 = MathFloor(14999/5000)*0.1; // hasil 0.2 double lots4 = MathFloor(15000/5000)*0.1; // hasil 0.3 Comment("9999=",lots1," 10000=",lots2," 14999=",lots3,"

15000=",lots4);

MathFloor itu ngambil nilai integer / pembulatan ke bawah.

helpnya ada di bagian Math & Trig

semoga membantu

26-04-2010 13:21

26-04-2010 15:42

Kaskus Addict Posts: 2,031

Original Posted By sridwan►kalo versi gw sih gini ya

cocok ngga?
#include <stderror.mqh> extern double EquityTreshUpper = 15000; extern double EquityTreshLower = 5000; void init() {} bool runEA = True; void start() { if (runEA) { // * * * * * * * * * * * * * * // main loop EA masuk di sini // * * * * * * * * * * * * * * // terakhir cek kondisi keuangan if (([B][COLOR="Blue"]AccountEquity()[/COLOR][/B] <= EquityTreshLower) || ([B][COLOR="Blue"]AccountEquity()[/COLOR][/B] >= EquityTreshUpper)) { closeAllOrder(); runEA = False; } } } void closeAllOrder() { for(int i = 0; i < OrdersTotal(); i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_BUY) { while (true) { bool done = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), 5); if (done) { break; } if (GetLastError() == ERR_INVALID_TICKET) { break; } RefreshRates(); // requote } } else if (OrderType() == OP_SELL) { while (true) { done = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), 5); if (done) { break; } if (GetLastError() == ERR_INVALID_TICKET) { break; } RefreshRates(); // requote } } else // pending order { OrderDelete(OrderTicket()); } } } void deinit() {}

//+------------------------------------------------------------------+


semoga membantu

bingung mau ditaroh di mana gan... ntar ane PM aja ya EA abal2 ane... ntar ente modifin, gimana?

26-04-2010 15:42

26-04-2010 16:59

Aktivis Kaskus Posts: 688

Original Posted By sridwan►Coba bantu ya gan

pake MathFloor bisa:


double lots = MathFloor(AccountBalance()/5000)*0.1;

gw ngetesnya kaya gini


double lots1 = MathFloor(9999/5000)*0.1; // hasil 0.1 double lots2 = MathFloor(10000/5000)*0.1; // hasil 0.2 double lots3 = MathFloor(14999/5000)*0.1; // hasil 0.2 double lots4 = MathFloor(15000/5000)*0.1; // hasil 0.3 Comment("9999=",lots1," 10000=",lots2," 14999=",lots3,"

15000=",lots4);

MathFloor itu ngambil nilai integer / pembulatan ke bawah.

helpnya ada di bagian Math & Trig

semoga membantu

Wah... makasih banget gan....... Pelajarannya belom selesai di trid ini kan? O ya... kalo bisa pelajarannya agak lebih detil dengan contoh-contohnya gan.... Soalnya banyak non programmer kayak gw ini yang kepingin banget tau lebih banyak tentang MQL... dan daya tangkapnya gak sehebat para programmer....

gw do'a'in sukses forexnya buat orang seperti agan yang suka berbagi ilmu........

26-04-2010 16:59



Video yang berhubungan

Postingan terbaru

LIHAT SEMUA