مرحبا
لدي مشكلة في هذا الرمز
يمكن لأي شخص أن ينظر في هذا.
// ----------------------------------------------- -------------------
//| يتم إنشاء هذا MQL بواسطة Expert Advisor Builder |
//|
http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/|
//| |
//| لن يكون المؤلف مسؤولاً بأي حال من الأحوال عن أي أضرار على الإطلاق. |
//| استخدام على مسؤوليتك الخاصة. |
//| |
// ------------------- لا تقم بإزالة هذا العنوان --------------------
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property copyright Expert Advisor Builder
#property link http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/
extern int MagicNumber = 0؛
extern bool SignalMail = False؛
extern bool EachTickMode = False؛
extern double Lots = 1.0؛
extern int Slippage = 3؛
extern bool UseStopLoss = True؛
extern Int StopLoss = 300؛
extern bool UseTakeProfit = True؛
ex Int Int TakeProfit = 600؛
extern bool UseTrailingStop = True؛
extern Int TrailingStop = 300؛
الباحثين
الحالي
bool TickCheck = خطأ ؛
// ----------------------------------------------- -------------------
//| وظيفة التهيئة الخبير |
// ----------------------------------------------- -------------------
int init () {
BarCount = البارات
if (EachTickMode) Current = 0؛ آخر الحالي = 1؛
عودة (0)؛
}
// ----------------------------------------------- -------------------
//| وظيفة انحياز خبير
// ----------------------------------------------- -------------------
int deinit () {
عودة (0)؛
}
// ----------------------------------------------- -------------------
//| وظيفة بداية الخبراء
// ----------------------------------------------- -------------------
بداية int () {
int order = SIGNAL_NONE؛
مجموع التذاكر ، التذاكر ؛
double StopLossLevel، TakeProfitLevel؛
if (EachTickMode Bars! = BarCount) TickCheck = False؛
المجموع = OrdersTotal ()؛
Order = SIGNAL_NONE؛
// ----------------------------------------------- -------------------
//| بداية المتغير |
// ----------------------------------------------- -------------------
double Var1 = iIchimoku (NULL، 0، 9، 26، 52، MODE_CHIKOUSPAN، Current 0)؛
double Var2 = iIchimoku (NULL، 0، 9، 26، 52، MODE_TENKANSEN، Current 0)؛
double Var3 = iIchimoku (NULL، 0، 9، 26، 52، MODE_KIJUNSEN، Current 0)؛
double Buy1_1 = Var1؛
double Buy1_2 = iClose (NULL، 0، Current 21)؛
double Buy2_1 = Var2؛
double Buy2_2 = Var3؛
double Sell1_1 = Var1؛
double Sell1_2 = iClose (NULL، 0، Current 21)؛
double Sell2_1 = Var3؛
double Sell2_2 = Var2؛
// ----------------------------------------------- -------------------
//| نهاية متغير |
// ----------------------------------------------- -------------------
//التحقق من الموقف
bool IsTrade = خطأ؛
ل (int i = 0؛ i lt؛ Total؛ i ) {
OrderSelect (i، SELECT_BY_POS، MODE_TRADES)؛
if (OrderType () lt؛ = OP_SELL OrderSymbol () == Symbol ()) {
IsTrade = صحيح.
if (OrderType () == OP_BUY) {
//قريب
// ----------------------------------------------- -------------------
//| إشارة تبدأ (خروج الشراء) |
// ----------------------------------------------- -------------------
// ----------------------------------------------- -------------------
//| إشارة نهاية (خروج الشراء) |
// ----------------------------------------------- -------------------
if (Order == SIGNAL_CLOSEBUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
OrderClose (OrderTicket ()، OrderLots ()، Bid، Slippage، MediumSeaGreen)؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (مزايدة ، أرقام) إغلاق الشراء) ؛
إذا (! EachTickMode) BarCount = Bars؛
IsTrade = خطأ ؛
استمر؛
}
//وقف المتابعة
if (UseTrailingStop TrailingStop gt؛ 0) {
if (Bid - OrderOpenPrice () gt؛ Point * TrailingStop) {
if (OrderStopLoss () lt؛ Bid - Point * TrailingStop) {
OrderModify (OrderTicket ()، OrderOpenPrice ()، Bid-Point * TrailingStop، OrderTakeProfit ()، 0، MediumSeaGreen؛
إذا (! EachTickMode) BarCount = Bars؛
استمر؛
}
}
}
} آخر {
//قريب
// ----------------------------------------------- -------------------
//| إشارة تبدأ (خروج بيع) |
// ----------------------------------------------- -------------------
// ----------------------------------------------- -------------------
//| نهاية الإشارة (بيع الخروج) |
// ----------------------------------------------- -------------------
if (Order == SIGNAL_CLOSESELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
OrderClose (OrderTicket ()، OrderLots ()، Ask، Slippage، DarkOrange)؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (اسأل ، أرقام) إغلاق البيع) ؛
إذا (! EachTickMode) BarCount = Bars؛
IsTrade = خطأ ؛
استمر؛
}
//وقف المتابعة
if (UseTrailingStop TrailingStop gt؛ 0) {
if ((OrderOpenPrice () - Ask) gt؛ (Point * TrailingStop)) {
if ((OrderStopLoss () gt؛ (Ask Point * TrailingStop)) || (OrderStopLoss () == 0)) {
OrderModify (OrderTicket ()، OrderOpenPrice ()، Ask Point * TrailingStop، OrderTakeProfit ()، 0، DarkOrange)؛
إذا (! EachTickMode) BarCount = Bars؛
استمر؛
}
}
}
}
}
}
// ----------------------------------------------- -------------------
//| إشارة تبدأ (دخول) |
// ----------------------------------------------- -------------------
if (Buy1_1 gt؛ Buy1_2 Buy2_1 == Buy2_2) Order = SIGNAL_BUY؛
if (Sell1_1 lt؛ Sell1_2 Sell2_1 gt؛ Sell2_2) Order = SIGNAL_SELL؛
// ----------------------------------------------- -------------------
//| نهاية الإشارة |
// ----------------------------------------------- -------------------
//يشترى
if (Order == SIGNAL_BUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
إذا (!! IsTrade) {
//تحقق من الهامش الحر
إذا كانت (AccountFreeMargin () lt؛ (1000 * Lots)) {
طباعة (ليس لدينا المال. الهامش المجاني = ، AccountFreeMargin ()) ؛
عودة (0)؛
}
إذا كانت (UseStopLoss) StopLossLevel = اسأل - StopLoss * Point؛ آخر StopLossLevel = 0.0؛
if (UseTakeProfit) TakeProfitLevel = Ask TakeProfit * Point؛ else TakeProfitLevel = 0.0؛
Ticket = OrderSend (Symbol ()، OP_BUY، Lots، Ask، Slippage، StopLossLevel، TakeProfitLevel، Buy (# MagicNumber )، MagicNumber، 0، DodgerBlue)؛
if (Ticket gt؛ 0) {
if (OrderSelect (Ticket، SELECT_BY_TICKET، MODE_TRADES)) {
طباعة (أمر شراء مفتوح: ، OrderOpenPrice ())؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (اسأل ، أرقام) فتح الشراء) ؛
} آخر {
طباعة (خطأ في فتح أمر الشراء: ، GetLastError ())؛
}
}
if (EachTickMode) TickCheck = True؛
إذا (! EachTickMode) BarCount = Bars؛
عودة (0)؛
}
}
//يبيع
if (Order == SIGNAL_SELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
إذا (!! IsTrade) {
//تحقق من الهامش الحر
إذا كانت (AccountFreeMargin () lt؛ (1000 * Lots)) {
طباعة (ليس لدينا المال. الهامش المجاني = ، AccountFreeMargin ()) ؛
عودة (0)؛
}
if (UseStopLoss) StopLossLevel = Bid StopLoss * Point؛ آخر StopLossLevel = 0.0؛
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point؛ else TakeProfitLevel = 0.0؛
Ticket = OrderSend (Symbol ()، OP_SELL، Lots، Bid، Slippage، StopLossLevel، TakeProfitLevel، Sell (# MagicNumber )، MagicNumber، 0، DeepPink)؛
if (Ticket gt؛ 0) {
if (OrderSelect (Ticket، SELECT_BY_TICKET، MODE_TRADES)) {
طباعة (تم فتح أمر بيع:: OrderOpenPrice ())؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (مزايدة ، أرقام) Open Sell) ؛
} آخر {
طباعة (خطأ في فتح طلب SELL: ، GetLastError ())؛
}
}
if (EachTickMode) TickCheck = True؛
إذا (! EachTickMode) BarCount = Bars؛
عودة (0)؛
}
}
إذا (! EachTickMode) BarCount = Bars؛
عودة (0)؛
}
// ----------------------------------------------- -------------------