Halo salam kenal para penggila EA forex. pada kesempatan ini saya akan membahas tentang coding khususnya pada saat compile EA jadul yang sudah kita modif. pada saat akan coding EA (expert Advisor) atau lebih dikenal dengan robot forex sering kita jumpai warning saat di compile ulang, meski sebenarnya EA tetep jalan dan dapat digunakan.
Hal tersebut terjadi seiring dengan perkembangan mt4 sehingga program mql4 juga perlu ada penyesuaian.
Contoh Kasus fungsi berikut ini:
fungsinya:
int j( int tipe){
int total=0;for(int i=0; i<OrdersTotal(); i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderType()!=tipe) continue;total++; }
return(total);}
Cara menghilangkan dengan memperhatikan bagian OrderSelect
int j( int tipe){
int total=0;for(int i=0; i<OrdersTotal(); i++) {
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
if(OrderSymbol()!=Symbol() || OrderType()!=tipe) continue;total++; }
return(total);}
Contoh lain pada bagian perintah order
if(j(1)==1 ) {OrderSend(Symbol(),4,NR(Lots),as,3,0,0,"",0,0,Blue);}
if(j(0)==1 ) {OrderSend(Symbol(),5,NR(Lots),bi,3,0,0,"",0,0,Red);}
Perbaikannya dengan menambahkan nilai integer (contoh int res), pada coding dibawah ini
if(j(1)==1 ) {res=OrderSend(Symbol(),4,NR(Lots),as,3,0,0,"",0,0,Blue);}
if(j(0)==1 ) {res=OrderSend(Symbol(),5,NR(Lots),bi,3,0,0,"",0,0,Red);}
Pada kasus lain sebenarnya seperti OrderClose dan OrderDelete sama bisa ditambah kan integer !
Semoga bermanfaat
Hal tersebut terjadi seiring dengan perkembangan mt4 sehingga program mql4 juga perlu ada penyesuaian.
Contoh Kasus fungsi berikut ini:
fungsinya:
int j( int tipe){
int total=0;for(int i=0; i<OrdersTotal(); i++) {
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()!=Symbol() || OrderType()!=tipe) continue;total++; }
return(total);}
Cara menghilangkan dengan memperhatikan bagian OrderSelect
int j( int tipe){
int total=0;for(int i=0; i<OrdersTotal(); i++) {
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
if(OrderSymbol()!=Symbol() || OrderType()!=tipe) continue;total++; }
return(total);}
Contoh lain pada bagian perintah order
if(j(1)==1 ) {OrderSend(Symbol(),4,NR(Lots),as,3,0,0,"",0,0,Blue);}
if(j(0)==1 ) {OrderSend(Symbol(),5,NR(Lots),bi,3,0,0,"",0,0,Red);}
Perbaikannya dengan menambahkan nilai integer (contoh int res), pada coding dibawah ini
if(j(1)==1 ) {res=OrderSend(Symbol(),4,NR(Lots),as,3,0,0,"",0,0,Blue);}
if(j(0)==1 ) {res=OrderSend(Symbol(),5,NR(Lots),bi,3,0,0,"",0,0,Red);}
Pada kasus lain sebenarnya seperti OrderClose dan OrderDelete sama bisa ditambah kan integer !
Semoga bermanfaat
Mengatasi warning pada coding script jadul forex expert advisor
Reviewed by Ifta
on
November 27, 2015
Rating:
OrderSend(Symbol(), OP_BUY, g_lots_276, g_ask_252, slippage, g_price_236, g_price_244, "ARM 1" + MagicNumber, MagicNumber, 0, Blue);
ReplyDeleteklo order send ky gitu jadi gmn gan..?
OrderClose(g_ticket_316, g_ord_lots_332, g_price_324, slippage, Yellow);
ReplyDeleteada order close juga itu gmn gan..?
OrderSelect(g_pos_232, SELECT_BY_POS, MODE_TRADES);
ReplyDeletejadi dibawah ini bukan..?
if (!OrderSelect(g_pos_232, SELECT_BY_POS, MODE_TRADES))continue;
itu bener gan..?
coba aja di compile, klo bener semua warning hilang gan,..
DeleteOrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderClosePrice() + TakeProfit * Point + TrailingStop * Point, 800, Yellow);
ReplyDeleteorder modify jd gmn gan..?
double profitCheck()
ReplyDelete{
double profit=0
Warning nya:declaration of'profit'hides global variable
Ini gmna gan??
harusnya tidak di deklarasi di bagian global gan,.. coba di declare di bawah Ontick() sebelum script penutup return;
Delete#resource "EURUSD.txt" as string EURUSD
ReplyDelete#include
void OnTick(){
int bars = iBars(_Symbol,PERIOD_H1);
static int totalBars = bars;
if(totalBars !=bars){
totalBars = bars;
Ctrade trade;
trade.PositionClose(_Symbol);
string time = TimeToString(iTime(_Symbol,PERIOD_H1,0));
StringReplace(time," ",",");
int start = StringFind(EURUSD,time);
int startOpen = StringFind(EURUSD,",",StringFind(EURUSD,",",start)+1)+1;
int startHigh = StringFind(EURUSD,",",startOpen)+1;
int startLow = StringFind(EURUSD,",",startHigh)+1;
int startClose = StringFind(EURUSD,",",startLow)+1;
int andClose = StringFind(EURUSD,",",startClose)+1;
double open = StringToDouble(StringSubstr(EURUSD,startOpen,startHigh-startOpen-1));
double high = StringToDouble(StringSubstr(EURUSD,startHigh,startLow-startHigh-1));
double low = StringToDouble(StringSubstr(EURUSD,startLow,startClose-startLow-1));
double close = StringToDouble(StringSubstr(EURUSD,startClose,startClose-startClose-1));
if(open close){
trade.Sell(1);
}
}
ini salahnya dimana ya?mohon pencerahan
'}' - unexpected end of program hhop.mq5 36 1
ReplyDelete'{' - unbalanced parentheses hhop.mq5 4 14
errornya disini