Salam sejahtera!

Saya fikir saya mengikuti kisah biasa di sini. Baru kepada MQL4, sejarah pengaturcaraan beberapa (BASIC dan HTML), blah, blah, blah, sekarang saya cuba tangan saya menulis EA saya sendiri.

Ia tidak istimewa. Saya bekerja di EA pelarian EMA. Saya percaya bahawa saya akan tetap mudah, kerana ia adalah salah satu yang pertama saya. Supaya EA berfungsi berdasarkan pub yang menutup talian dan membuka di bawah 20 EMA. Bar itu membuka pesanan 3 pips di atas bar. Kerana ia EA perintah itu tertutup apabila memukul pada titik TP atau SL, ia tidak mempunyai pengaturcaraan lain untuk pesanan akhir.

Inilah masalahnya. Versi saya telah membuka pesanan. Baik sekali anda mempunyai perdagangan yang menguntungkan, menghisap jika anda tidak. Dalam versi 2 saya mendapati bahawa apa-apa urus niaga tidak terbuka dan cuba menambah kod kaunter dari EA yang lain.

Berikut ialah cadangan versi 1 (maaf saya tidak faham cara menetapkannya dalam kotak kecil yang kemas):

int start ()

//-

int cnt, lengkap, tiket;


double emaT = iMA (NULL, 0,20,0, MODE_EMA, PRICE_CLOSE, 0);
double MacdCurrent = iMACD (NULL, 0,12,26,9, PRICE_CLOSE, MODE_MAIN, 0);

lengkap = OrdersTotal ();
jika (totallt; 1)


bool buy = false;
bool market = false;

jika ((Tanya == Tinggi [1] gt; 3 * Tahap) (Terbuka [1] lt; emaT) (Tutup [1] gt; emaT) (MacdCurrent gt;
jika ((Rendah [1] == Bid ??????gt; 3 * Tahap) (emaT gt; Tutup [1]) (Buka [1] gt; emaT) (MacdCurrent lt;



jika (beli)


tiket = OrderSend (Symbol (), OP_BUY, Banyak, Ask, 0, Ask-StopLoss * Peringkat, Tanya TakeProfit * Point, Momo Trade, magicnumber, 0, Hijau);
jika (ticketgt; 0)

jika (OrderSelect (tiket, SELECT_BY_TICKET, MODE_TRADES))


pulangan (0);



jika (pasaran)


Tiket = OrderSend (Simbol (), OP_SELL, Banyak, Tawaran, 0, Tawaran StopLoss * Titik, Bid-TakeProfit * Point, Perdagangan Momo, sumber sulap, 0, Merah);
jika (ticketgt; 0)

jika (OrderSelect (tiket, SELECT_BY_TICKET, MODE_TRADES))

pulangan (0);



pulangan (0);

//-

Versi 2 adalah sama, tetapi menggunakan kod ini ditambahkan untuk mendapatkan kaunter:

pesanan = OrdersTotal ();
untuk (cnt = 0; cntlt; OrdersTotal (); cnt )

{
jika (OrderSelect (cnt, SELECT_BY_POS))
OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
jika (OrderSymbol () == Simbol ())
{
jika (OrderType () == OP_BUY)



Selain itu, walaupun saya mempunyai tumpuan semua orang adalah kod saya yang betul untuk meletakkan pesanan berdasarkan sebelumnya tinggirendah dengan kod (Ask == High [1] gt; 3 * Tahap)?

Dengan Hutang!