#property show_inputs
#include lt; WinUser32.mqhgt;
#include lt; stdlib.mqhgt;
#define NL \ n
#define highline Nomor putaran tinggi berikutnya
#define highlinetradetrigger Berikutnya beli pemicu perdagangan
#define lowline Nomor putaran rendah berikutnya
#define lowlinetradetrigger Berikutnya menjual pemicu perdagangan
/*
membatalkan DisplayUserFeedback ()
mulai()
---- Fungsi perdagangan ----
membatalkan LookForTradingOpportunity ()
bool SendSingleTrade (tipe int, komentar string, lotsize ganda, harga ganda, pemberhentian ganda, TP ganda, sihir int)
bool DoesTradeExist ()
---- Matt's Order Kode perpustakaan yang andal
bool O_R_CheckForHistory (int ticket) Cheers Matt, Anda seorang bintang.
membatalkan O_R_Sleep (double mean_time, double max_time)
*
extern string bs = ---- Hal-hal dasar ----;
extern Lot ganda = 0,01;
extern int MagicNumber = 615046;
extern string TradeComment = Angka bulat;
extern bool CriminalIsECN = false;
extern int TradeTriggerPips = 15;
extern bool ReverseTradeDirection = false;
extern bool TakeFirstTrade = true;
extern string tpsl = ---- Stop loss ----;
extern int StopLoss = 100;
extern string TSL = ---- Trailing stop loss ----;
extern int TrailingStopPips = 15;
extern int BreakEvenProfitPips = 1;
extern string trs = ---- Peluang dan tujuan ----;
extern int DisplayGapSize = 30;
extern bool DeleteLinesOnExit = true;
extern double bprice = 1.3480;
extern double sprice = 1.3460;
double sl = 20;
TP ganda = 20;
//Barang-barang O-R Matt
int O_R_Setting_max_retries = 10;
double O_R_Setting_sleep_time = 4.0;* detik *
double O_R_Setting_sleep_max = 15.0;* detik *
//Angka bulat
ganda RoundNumberHigh, RoundNumberHighTrigger;
ganda RoundNumberLow, RoundNumberLowTrigger;
//Barang lainnya
string ScreenMessage, Gap;
bool RobotDisabled;
string Pesan Dinonaktifkan;
int Spread;
membatalkan DisplayUserFeedback ()
{
ScreenMessage =;
ScreenMessage = StringConenate (ScreenMessage, Gap, NL);
ScreenMessage = StringConenate (ScreenMessage, Gap, Lot size =, Lot, NL);
ScreenMessage = StringConenate (ScreenMessage, Gap, Stop loss =, StopLoss, NL);
ScreenMessage = StringConenate (ScreenMessage, Gap, Magic number =, MagicNumber, NL);
spread ganda = MarketInfo (Symbol (), MODE_SPREAD);
ScreenMessage = StringConenate (ScreenMessage, Gap, Spread =, spread, NL);
ScreenMessage = StringConenate (ScreenMessage, NL);
Komentar (ScreenMessage);
}/membatalkan DisplayUserFeedback ()
// ----------------------------------------------- -------------------
//| fungsi inisialisasi pakar |
// ----------------------------------------------- -------------------
int init ()
{
pengganda int;
if (Digit == 2 || Digit == 4) multiplier = 1;
if (Digit == 3 || Digit == 5) multiplier = 10;
if(Digits == 6) multiplier = 100;
if(Digits == 7) multiplier = 1000;
TradeTriggerPips * = pengganda;
StopLoss * = pengganda;
BreakEvenProfitPips * = pengganda;
Gap =;
if (DisplayGapSize gt;0)
{
untuk (int cc = 0; cc; Ukuran Layar; c )
{
Gap = StringConenate (Gap,);
}
}
Komentar (......... Menunggu tanda centang);
mulai();
}
// ----------------------------------------------- -------------------
//| fungsi deinitialisasi pakar |
// ----------------------------------------------- -------------------
int deinit ()
{
Komentar();
}
bool DoesTradeExist ()
{
//Pencarian untuk perdagangan terbuka
if (OrdersTotal () == 0) return (false);/tidak ada hubungannya
bool found = false;
untuk (int cc = OrdersTotal () - 1; cc gt; = 0; cc--)
{
if (! OrderSelect (cc, SELECT_BY_POS)) melanjutkan;
if (OrderMagicNumber () == MagicNumber OrderSymbol () == Symbol ())
{
ditemukan = benar;
if (OrderProfit () gt; 0) TrailingStopLoss ();
}
}
kembali (ditemukan);
}/Akhiri bool DoesTradeExist ()
bool SendSingleTrade (tipe int, komentar string, lotsize ganda, harga ganda, sl ganda, TP ganda, sihir int
{
int slippage = 10;
if (Digits == 3 || Digits == 5) slippage = 100;
warna col = Merah;
if (type == OP_BUY || type == OP_BUYSTOP) col = Green;
int expiry = 0;
//if (SendPendingTrades) kedaluwarsa = TimeCurrent () (PendingExpiryMinutes * 60);
if (! CriminalIsECN) int ticket = OrderSend (Symbol (), ketik, lotsize, harga, slippage, sl, TP, komentar, sihir, kedaluwarsa, col);
//Adalah penjahat 2 tahap
if (CriminalIsECN)
{
ticket = OrderSend (Symbol (), type, lotsize, price, slippage, 0, 0, comment, magic, expiry, col);
if (sl! = 0)
{
jika (tiket gt; 0)
hasil kotor = OrderModify (tiket, OrderOpenPrice (), sl, TP, 0, CLR_NONE);
jika (! hasil)
{
int err = GetLastError ();
Cetak (Simbol (),, jenis, modifikasi pesanan SL gagal dengan kesalahan (, err,):, ErrorDescription (err));
}//if (!result)
}/jika (Sl! = 0)
}/jika (CriminalIsECN)
//Terjebak kesalahan untuk keduanya
if (ticket lt; 0)
{
tipe string;
if (type == OP_BUY) stype = OP_BUY;
if (type == OP_BUYSTOP) stype = OP_BUYSTOP;
if (type == OP_SELL) stype = OP_SELL;
if (type == OP_SELLSTOP) stype = OP_SELLSTOP;
err = GetLastError ();
Peringatan (Simbol (),, stype, Pengiriman pesanan EA manual gagal karena kesalahan (, err,):, ErrorDescription (err));
Cetak (Simbol (),, stype, Pengiriman pesanan EA manual gagal karena kesalahan (, err,):, ErrorDescription (err));
return (false);
}/jika (tiket lt; 0)
//Pastikan perdagangan telah muncul dalam sejarah platform untuk menghindari perdagangan duplie
O_R_CheckForHistory (tiket);
//Sudah sejauh ini, jadi pengiriman dagang berhasil
return (true);
}/End bool SendSingleTrade (tipe int, komentar string, lotsize ganda, harga ganda, pemberhentian ganda, TP ganda)
//MULAI LOGIK PERDAGANGAN/
membatalkan LookForTradingOpportunity ()
{
if (IsTradeContextBusy() ) return;
double sl, TP;
RefreshRates ();
hasil bool;
dobel MinStop = MarketInfo (Symbol (), MODE_STOPLEVEL) * Titik;
if (! ReverseTradeDirection)
{
//Panjang
if (Bid gt; = price)
{
if (TakeFirstTrade)
{
//Perdagangan pertama dengan tp
hasil = salah;
sementara (hasil == salah)
{
if (StopLoss gt; 0) sl = NormalalizeDouble (Ask - (StopLoss * Point), Digit);
hasil = SendSingleTrade (OP_BUY, TradeComment, Lot, Ask, sl, TP, MagicNumber);
}/while (result = false)
}/jika (TakeFirstTrade)
}/
//Pendek
//if (Bid lt; = lo Buka [0] gt; lo lo gt; 0)
if (Bid lt; = price)
{
if (TakeFirstTrade)
{
//Perdagangan pertama dengan tp
hasil = salah;
sementara (! hasil)
{
if (StopLoss gt; 0) sl = NormalalizeDouble (Bid (StopLoss * Point), Digit);
hasil = SendSingleTrade (OP_SELL, TradeComment, Lot, Bid, sl, TP, MagicNumber);
}/Sementara (! Hasil)
}/jika (TakeFirstTrade)
}/if (Bid lt; = lo Buka [1] gt; lo lo gt; 0)
}/if (! ReverseTradeDirection)
}/batal LookForTradingOpportunity ()
//AKHIR LOGIK PERDAGANGAN/
Saya mendapatkan kesalahan 130 Berhenti tidak valid, di mana saya bisa salah ??
ketika saya mengatur extern int StopLoss = 0; semuanya baik-baik saja dalam hal pesanan dipe kecuali bahwa tidak ada nilai tp atau sl dimasukkan bersama dengan pesanan.