Terlampir adalah bagian dari Penasihat Ahli yang telah saya kerjakan untuk mempelajari egi perdagangan, tetapi saya mengalami kesulitan dengan keterbatasan MQL4 ketika berhadapan dengan array. Yang saya inginkan adalah menggunakan array untuk menyimpan informasi mengenai situasi yang saya buka dan tambahan untuk mendefinisikan kembali nilai-nilai elemen. Yang ingin saya terapkan adalah serangkaian 3 fungsi yang merekonstruksi koleksi pesanan terbuka. Ini bisa dilakukan setelah penutupan atau setiap pembukaan posisi. Fungsi selanjutnya adalah mengurutkan pesanan terbuka sesuai dengan harga pembukaan masing-masing. Fungsi sekuensial akan mengevaluasi kembali nilai stop loss dan take profit. Nilai-nilai untuk mencegah kerugian dan membuat nilai keuntungan harus didasarkan pada harga pengantar pesanan. Saya menginginkan EA untuk mengeksekusi stop loss dan mengambil nilai profit. Saya sadar ada risiko untuk membentuk EA dengan cara ini dan dengan melakukannya, saya ingin melanjutkan.
Double OrderStack [7] [9];/Arahkan susunan informasi
if ((OrderStack [TotalOrders 1] [1] lt; Bid) (TotalOrders lt; 2))/Membuka posisi Jual baru dengan harga yang lebih menguntungkan
//3
TicketNum = OrderSend (Simbol (), OP_SELL, LotSize2, Bid, 3,0,0, CommentString, 0,0, Red);/Buka pesanan ini.
Jika (TicketNumlt; 0)
//4
Print (Error Opening Trade: Kode Kesalahan =, GetLastError () ,, Lotsize:, Lots);
//3
lain
//4
if (OrderSelect (TicketNum, SELECT_BY_TICKET))
//5
Print (Pesanan Jual Dibuka pada Harga:, OrderOpenPrice ());
OrderFlagS = 1;/Digunakan oleh fungsi EA utama untuk komentar
Terminal();/Panggilan ke fungsi yang menghasilkan susunan data urutan terbuka
//4
//3
//2
}/1
}/0
//------------------------------------------------ --------------------
//Terminal.mqh
//------------------------------------------------ ------------------------------ 1 -
//Memesan fungsi akuntansi
//Variabel global:
//OrderStack [7] [9]
//Array pesanan terbaru yang diketahui
//Indeks pertama = nomor urut
//[] [0] tidak didefinisikan
//[] [1] memesan harga terbuka (abs. Nilai harga)
//[] [2] StopLoss dari pesanan ini (perut) Nilai harga)
//[] [3] TakeProfit dari pesanan ini (perut) Nilai harga)
//[] [4] nomor urut
//[] [5] volume pesanan dalam lot (abs. Nilai harga)
//[] [6] formulir pemesanan 0 = B, 1 = S, 2 = BL, 3 = SL, 4 = BS, 5 = SS
//[] [7] memesan angka ajaib
//[] [8] 0/1 aksesibilitas komentar
//Mas_Tip [6]
//Array jumlah pesanan dari segala macam
//[] formulir pemesanan: 0 = B, 1 = S, 2 = BL, 3 = SL, 4 = BS, 5 = SS
//------------------------------------------------ ------------------------------ 2 -
Deck ganda ()
//1
int Mas_Tip [6];
int Qnt = 0;
int I;
//Counter pesanan
//------------------------------------------------ ------------------------------ 3 -
ArrayInitialize (OrderStack, 0,0);/Nilkan pilihan
ArrayInitialize (Mas_Tip, 0);/Zeroize the array
//------------------------------------------------ ------------------------------ 4 -
untuk (I = 0; I lt; OrdersTotal (); I )/Untuk market dan pending orders
//2
if ((OrderSelect (I, SELECT_BY_POS) == true) (OrderSymbol () == Symbol ()))
//Saat ada yang berikutnya. . Dan pasangan mata uang kami
//3
//------------------------------------------------ --------------------- 5 -
Qnt ;/Jumlah pesanan
OrderStack [Qnt] [1] = OrderOpenPrice ();/Pesan harga terbuka
OrderStack [Qnt] [2] = OrderStopLoss ();/harga SL
OrderStack [Qnt] [3] = OrderTakeProfit ();/harga TP
OrderStack [Qnt] [4] = OrderTicket ();/Jumlah order
OrderStack [Qnt] [5] = OrderLots ();/Jumlah lot
Mas_Tip [OrderType ()] ;/Jumlah pesanan dari tipe
OrderStack [Qnt] [6] = OrderType ();/Jenis pesanan
OrderStack [Qnt] [7] = OrderMagicNumber ();/Nomor ajaib
if (OrderComment () ==)
//4
OrderStack [Qnt] [8] = 0;/Jika sama sekali tidak ada komentar
//3
lain
//4
OrderStack [Qnt] [8] = 1;/Jika ada komentar
//3
//2
//------------------------------------------------ --------------------- 6 -
OrderStack [0] [0] = Qnt;/Jumlah pesanan
//------------------------------------------------ ------------------------------ 7 -
FillStack (OrderStack, Trend_Up);/Call to function yang mengurutkan data perdagangan terbuka berdasarkan arah tren dan harga perdagangan awal
kembali (0);
//1
//0
//------------------------------------------------ ------------------------------ 8 -
//
//Perintah yang Ada Menyortir Fungsi
//
double SortStack (double OrderStack [7] [9], bool Trend_Up)/Fungsi untuk mengurutkan susunan pesanan yang direkonstruksi di
//pesanan berdasarkan harga pembukaan pesanan awal
//1
int I, TotalOrders;
TotalOrders = OrderStack [0] [0];
if (Trend_Up == true)
//2
ArraySort (OrderStack [TotalOrders] [1], TotalOrders, 1, MODE_DECEND);
//1
if (Trend_Up == false)
//2
ArraySort (OrderStack [TotalOrders] [1], TotalOrders, 1, MODE_ASCEND);
//1
FillStack (OrderStack, Trend_Up);/Panggilan ke fungsi yang menentukan parameter perdagangan untuk merugikan
//perdagangan pasar ke dalam susunan pesanan
kembali (0);
//0
//
//Catat Fungsi Parameter Perdagangan Pasar Negatif
//
FillStack ganda (double OrderStack [7] [9], bool Trend_Up)/Menentukan Parameter Perdagangan Pasar Negatif
//berdasarkan pesanan awal dari Bollinger band piercing
//1
Harga ganda;
PriceIn = OrderStack [1] [1];
//2
if (Trend_Up == true)
//3
OrderStack [1] [2] = Harga Di - StopLossVal;/Kolom 2, Kolom Stop Loss Entry
OrderStack [1] [3] = Harga Dalam 0,0030;/Kolom 3, Ambil Kolom Masuk Profit
OrderStack [2] [1] = PriceIn - 0,0010;/Kolom 1, Harga Beli Pesanan Pasar Bawah Rata-Rata
OrderStack [2] [3] = Harga Di - 0,0005;/Kolom 3, Ambil Untung untuk Entri Pasar Turun Rata
//2
if (Trend_Up == false)
//3
OrderStack [1] [2] = Harga Di StopLossVal;/Kolom 2, Kolom Stop Loss Entry
OrderStack [1] [3] = Harga Di - 0,0030;/Kolom 3, Ambil Kolom Masuk Profit
OrderStack [2] [1] = Harga 0,0010;/Kolom 1, Harga Beli Pesanan Pasar Bawah Rata-Rata
OrderStack [2] [3] = Harga Di 0,0005;/Kolom 3, Ambil Untung untuk Entri Pasar Turun Rata
//2
//1
kembali (0);
//0
Masalah yang saya hadapi dengan mengimplementasikan EA ini adalah bahwa kompiler memberi saya pesan kesalahan tentang ”item array tidak dapat ditugaskan” untuk kode dalam fungsi FillStack () saya. Apa yang membingungkan adalah bahwa hal itu terlihat seperti apa yang sedang dilakukan dari fungsi Terminal () di atas fungsi FillStack () saya. Saya berharap salah satu programmer yang berpengalaman dapat memberi saya obat untuk bug ini.
Sulit untuk percaya bahwa dengan semua persamaan yang MQL4 memiliki C bahwa kemampuan untuk menetapkan nilai ke elemen array seperti C tidak akan ada di MQL4 juga. Terima kasih.