Halo semuanya,
jadi adakah yang bisa memberitahu saya bagian mana yang harus saya modifikasi?
Terima kasih
Kode yang dimasukkan #import stdlib.ex4 string ErrorDescription (int e); #import #include lt; stdlib.mqhgt; #include lt; WinUser32.mqhgt;/- Pesanan akan dibuka #define PendingOrders 1/Jumlah pesanan tertunda yang akan ditambahkan/- Manajemen uang #define MoneyManagement 1/Gunakan Manajemen Uang #define LotSize 0.1/Jika tidak, gunakan lotsize ini #define RiskPercent 0,5/Risiko untuk perdagangan awal #define RiskDecrease 0,25/Penurunan risiko untuk perdagangan berikutnya/- ATR dan pengganda #define ATRPeriode 30/Periode ATR untuk menggunakan #define ATRStopMultiplier 2/Pengganda untuk stop-loss awal #define ATROrderMultiplier 0,5/Pengganda untuk pending order selanjutnya/- Jangan ubah saya #define ShortName Buy Stop #define MagicNumber 5001 #define Slippage 6 #define Shift 1/- Internal ganda LastOrderLots = EMPTY_VALUE; gandakan LastOrderHarga; DecimalPip ganda;/ ----------------------------------------------- ------------------- /| Fungsi mulai Script Khusus/ ------------------------------------------- ----------------------- int start () {//Konfirmasikan jika (MessageBox (ShortName - Apakah Anda benar-benar ingin menempatkan (PendingOrders 1 ) Pesanan BUYSTOP ?, Skrip, MB_YESNO | MB_ICONQUESTION)! = IDYES) return (1);/Nilai pip DecimalPip = GetDecimalPip ();/Bar double TUTUP = iClose (Symbol (), 0, Shift); gandakan TINGGI = iHigh (Simbol (), 0, Shift); double RENDAH = iLow (Simbol (), 0, Shift);/-/- Tempatkan urutan pertama/- if (Bid gt; HIGH) {PlaceOrder (OP_BUY, GetLotSize ()); } else {PlaceOrder (OP_BUYSTOP, GetLotSize (), HIGH); }/-/- Tempatkan pending order/- untuk (int it = 0; it lt; PendingOrders; it ) PlaceOrder (OP_BUYSTOP, GetLotSize (), LastOrderPrice iATR (Simbol (), 0, ATRPeriod, Shift) * ATROrderMultiplier);/Hai yang disana! Komentar (Hak Cipta http://www.pointzero-trading.com);/Selamat tinggal kembali (0); }/ ---------------------------------------------- -------------------- /| Fungsi saya/ --------------------------------------------- --------------------- ** * Menghitung ukuran lot sesuai dengan risiko * @ kembali ganda *ganda GetLotSize () {//Banyak ganda l_lotz = LotSize ;/Lotsize dan pembatasan gandakan l_minlot = MarketInfo (Symbol (), MODE_MINLOT); double l_maxlot = MarketInfo (Symbol (), MODE_MAXLOT); double l_lotstep = MarketInfo (Symbol (), MODE_LOTSTEP); int vp = 0; if (l_lotstep == 0,01) vp = 2; selain itu vp = 1;/Terapkan manajemen uang jika (MoneyManagement == true) l_lotz = MathFloor (AccountBalance () * RiskPercent100.0)1000.0;/Tunggu! Periksa apakah kami melakukan piramida jika (LastOrderLots! = EMPTY_VALUELastOrderLots gt; 0) l_lotz = LastOrderLots * RiskDecrease;/Normalisasi ke lotstep l_lotz = NormalisasiDouble (l_lotz, vp);/Periksa maxminlot di sini jika (l_lotz lt; l_minlot) l_lotz = l_minlot; if (l_lotz gt; l_maxlot) l_lotz = l_maxlot;/Sampai jumpa! return (l_lotz); }** * Melakukan pemesanan * @param int Type * @param double Lotz * @param double PendingHarga *batal PlaceOrder (int Type, Lotz ganda, PendingPrice ganda = 0) {//Local int err; warna l_color; gandakan l_stoploss, l_harga, l_sprice = 0; double stoplevel = getStopLevelInPips (); RefreshRates ();/Harga dan warna untuk jenis perdagangan if (Type == OP_BUY) {l_price = Ask; l_color = Biru; } if (Ketik == OP_SELL) {l_price = Tawaran; l_color = Merah; } if (Ketik == OP_BUYSTOP) {l_price = PendingPrice; if (l_price lt; = Ask stoplevel * DecimalPip) l_price = Ask stoplevel * DecimalPip; l_color = LightBlue; } if (Ketik == OP_SELLSTOP) {l_price = PendingPrice; if (l_price gt; = Bid-stoplevel * DecimalPip) l_price = Tawaran - stoplevel * DecimalPip; l_color = Salmon; }/Hindari kolusi saat (IsTradeContextBusy ()) Tidur (1000); int l_datetime = TimeCurrent ();/Kirim pesanan int l_ticket = OrderSend (Simbol (), Jenis, Lotz, MyNormalizeDouble (l_price), Slippage, 0, 0,, MagicNumber, 0, l_color);/Rety if failure if (l_ticket == -1) {while (l_ticket == -1 TimeCurrent () - l_datetime lt; 5! IsTesting ()) {err = GetLastError (); jika (err == 148) kembali; Tidur (1000); while (IsTradeContextBusy ()) Sleep (1000); RefreshRates (); l_ticket = OrderSend (Symbol (), Type, Lotz, MyNormalizeDouble (l_price), Slippage, 0, 0,, MagicNumber, 0, l_color); } if (l_ticket == -1) Print (ShortName (OrderSend Error) ErrorDescription (GetLastError ())); } if (l_ticket! = -1) {LastOrderLots = Lotz; LastOrderPrice = l_price; if (OrderSelect (l_ticket, SELECT_BY_TICKET, MODE_TRADES)) {l_stoploss = MyNormalizeDouble (GetStopLoss (Type, PendingPrice)); if (! OrderModify (l_ticket, OrderOpenPrice (), l_stoploss, 0, 0, Green)) Cetak (ShortName (Kesalahan OrderModify) ErrorDescription (GetLastError ()))); }}}** * Mengembalikan stoploss awal * @param int Type * @param double ForcedPrice * @return double *double GetStopLoss (int Type, double ForcedPrice = 0) {double l_sl = 0; if (Ketik == OP_BUY) l_sl = Tanyakan - iATR (Simbol (), 0, ATRPeriod, Shift) * ATRStopMultiplier - (Ask - Bid); if (Ketik == OP_SELL) l_sl = Tawaran iATR (Simbol (), 0, ATRPeriod, Shift) * ATRStopMultiplier (Ask-Bid); if (Type == OP_BUYSTOP) l_sl = ForcedPrice - iATR (Symbol (), 0, ATRPeriod, Shift) * ATRStopMultiplier - (Ask - Bid); if (Type == OP_SELLSTOP) l_sl = ForcedPrice iATR (Symbol (), 0, ATRPeriod, Shift) * ATRStopMultiplier (Ask - Bid); return (l_sl); }** * Mengembalikan nilai pip desimal * @return ganda*double GetDecimalPip () {switch (Digit) {case 5: return (0,0001); kasus 4: kembali (0,0001); kasus 3: return (0,001); default: return (0,01); }}** * Menormalkan harga * @param harga ganda * @return ganda *dobel MyNormalizeDouble (harga ganda) {return (NormalizeDouble (harga, Digit)); }** * Dapatkan baseline plus deviasi * @return double *double getStopLevelInPips () {double s = MarketInfo (Symbol (), MODE_STOPLEVEL) 1.0; if (Digit == 5) s = s10; pengembalian; }