• Welcome back! Thank you for being a part of this Traders Community. Let's discuss and share :)
    Selamat datang kembali! Trimakasih telah menjadi bagian dari Komunitas Trader ini. Mari berdiskusi dan berbagi :)

Cara Coding EA AutoLock(Mengunci Posisi Buy-sell)

k2traders

New Member
Credits
0
Selamat Pagi Master ...

Berikut Skema Ea:
Jika Ea Martingale Floating Diharga Tertentu Misal 300 Dollar, Maka Ea Akan Melakukan Hedging Full , Artinya Ea akan Membuka Posisi Yang Berlawanan Dengan Jumlah Lot Yang Sama Buy Dan Sell, Tanpa Membuka Op Lagi.
------>Pemahaman Saya Seorang Pemula Yang Lagi Belajar, Mungkin Dibuatkan Dahulu Logic Menghitung Jumlahn Lot Buy Dan Sell Yang Misalnya Saya Ibaratkan TlotBuy Dan TlotSell, Jadi Saya Coba Tuangkan Konsep Tersebut Menjadi Logic Sebagai Berikut:

"Jika Total Floating Minus = 300 Dan OpBuy Atau OpSell Maka Ea Lakukan hedging Dengan TlotBuy Dan TLotsell sama Dan Ea Tidak Melakukan Op Lagi"

Pertanyaan Saya :

1. Apakah Logicnya Sudah benar Atau Ada Solusi lainnya
2.Bagaimana Membuat Perintah Hedging Di Mql4 Sesuai Dengan Logic Diatas


Terima Kasih Atas Perhatiannya


wassalam
#maubelajarmql4
 
Logikanya.
1. buat parameter input jumlah loss yg diinginkan.
2. buat parameter bool untuk trade. isikan true.
3. buat pengenal order buy & sell, total lots masing2 order, total profit masing2 order. dengan apa?
coba lihat di manual mql4. loop operator
4. jika profitbuy < jumlah loss maka kirim order berlawanan dengan total lots yg sdh ada
vice versa
5. jika total lots buy sama dengan sell.. maka parameter pada nomor 2, diisi false
 
Logikanya.
1. buat parameter input jumlah loss yg diinginkan.
2. buat parameter bool untuk trade. isikan true.
3. buat pengenal order buy & sell, total lots masing2 order, total profit masing2 order. dengan apa?
coba lihat di manual mql4. loop operator
4. jika profitbuy < jumlah loss maka kirim order berlawanan dengan total lots yg sdh ada
vice versa
5. jika total lots buy sama dengan sell.. maka parameter pada nomor 2, diisi false

==================================================
berikut coding yang saya lakukan sesuai petujuk diatas:

extern int maxlosshedging=300;
extern bool trade=true;


//==== menghitung total lot buy dan sell
double CalculateLotsBuy1()
{
totalBuyLots = 0;


for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
{
//if(OrderSymbol() == Symbol())
{
if(OrderType() == OP_BUY)
totalBuyLots += OrderLots();

}
}
} return(0);}


double CalculateLotsSell1()
{
totalSellLots = 0;

for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
{
//if(OrderSymbol() == Symbol())
{
if(OrderType() == OP_SELL)
totalSellLots += OrderLots();

}
} return(0);}
//==== menghitung total lot buy dan sell

//=============================== meghitung total profit masing buy dan sell

int BuyProfit ()
{
int TotalBuyProfit = 0;
for(int iPos= OrdersTotal()-1; iPos >= 0; iPos--)
if(OrderSelect(iPos, SELECT_BY_POS)
&& OrderMagicNumber() == Magic
&& OrderSymbol() == Symbol()
&& OrderType() == OP_BUY )
TotalBuyProfit += OrderProfit()+OrderSwap()+OrderCommission();
return (TotalBuyProfit);
}
//==========menghitung total profit buy dan sell
int SellProfit ()
{
int TotalSellProfit = 0;
for(int iPos= OrdersTotal()-1; iPos >= 0; iPos--)
if(OrderSelect(iPos, SELECT_BY_POS)
&& OrderMagicNumber() == Magic
&& OrderSymbol() == Symbol()
&& OrderType() == OP_SELL )
TotalSellProfit += OrderProfit()+OrderSwap()+OrderCommission();
return (TotalSellProfit);
}
//=============================== meghitung total profit masing buy dan sell



//==========================sending order berlawanan

if(BuyProfit() < maxlosshedging && trade==true){



tiketbuy=OrderSend(Symbol(),OP_SELL,totalBuyLots,Bid,slippage,0,0,Comment_,Magic,0,Blue);
}
else

if(SellProfit() < maxlosshedging && trade==true){

tiketsell=OrderSend(Symbol(),OP_BUY,totalSellLots,Ask,slippage,0,0,Comment_,Magic,0,Red);
//ExpertRemove()
;return;}

if(totalSellLots==totalBuyLots)
{trade=false;}
//==========================sending order berlawanan

Pertanyaan saya ,masih ada pesan error :
invalid lots amount for OrderSend function
OrderSend error 4051
dan ea tidak bisa memasang posisi kuncian .
saya lihat berarti masih ada kesalahan di cara memasukkan lot kuncian


Mohon Bantuan Pencerahannya
 
//==== menghitung total lot buy dan sell
double CalculateLotsBuy1()
{
totalBuyLots = 0;


for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
{
//if(OrderSymbol() == Symbol())
{
if(OrderType() == OP_BUY)
totalBuyLots += OrderLots();

}
}
} return(0);}


double CalculateLotsSell1()
{
totalSellLots = 0;

for(int i=0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
{
//if(OrderSymbol() == Symbol())
{
if(OrderType() == OP_SELL)
totalSellLots += OrderLots();

}
} return(0);}
//==== menghitung total lot buy dan sell

Pertanyaan saya ,masih ada pesan error :
invalid lots amount for OrderSend function
OrderSend error 4051
dan ea tidak bisa memasang posisi kuncian .
saya lihat berarti masih ada kesalahan di cara memasukkan lot kuncian


Mohon Bantuan Pencerahannya
mestinya untuk jumlah lots pake ini kan?
CalculateLotsSell1() dan CalculateLotsBuy1
kenapa jadi totalBuyLots dan totalSellLots
 
int BuyProfit ()
{
int TotalBuyProfit = 0;
for(int iPos= OrdersTotal()-1; iPos >= 0; iPos--)
if(OrderSelect(iPos, SELECT_BY_POS)
&& OrderMagicNumber() == Magic
&& OrderSymbol() == Symbol()
&& OrderType() == OP_BUY )
TotalBuyProfit += OrderProfit()+OrderSwap()+OrderCommission();
return (TotalBuyProfit);
}
ini kan bisa digabung..
contoh
Code:
int CheckProfit(int op)
{
int TotalProfit= 0;
for(int iPos= OrdersTotal()-1; iPos >= 0; iPos--)
if(OrderSelect(iPos, SELECT_BY_POS)
&& OrderMagicNumber() == Magic
&& OrderSymbol() == Symbol()
&& OrderType() == op)
TotalProfit+= OrderProfit()+OrderSwap()+OrderCommission();
return (TotalProfit);
}
jika kita mau cek profit sell tinggal panggil
CheckProfit(OP_SELL)
begitu pula sebaliknya
CheckProfit(OP_BUY)
 
Back
Top