PDA

View Full Version : مساعدة في تصحيح EA بلدي أشعر أن الحل بسيط جدا.



gotmetinho96
09-18-2007 05:45, 05:45 AM
فيما يلي نسخة من رمز EA الخاص بي. كلما أرفقه على الرسم البياني ، فإنه يجلس هناك ، لا يفتح أو يغلق أي صفقات. من المقرر أن يعيش التداول دون تأكيد يدوي.

أي أفكار؟








#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
# حقوق الطبع والنشر رائعة أنت
extern int MagicNumber = 0؛
extern bool SignalMail = False؛
extern bool EachTickMode = True؛
extern double Lots = 5.0؛
extern int Slippage = 0؛
extern bool StopLossMode = False؛
extern Int StopLoss = 0؛
extern bool TakeProfitMode = False؛
ex Int Int TakeProfit = 0؛
extern bool TrailingStopMode = False؛
extern Int TrailingStop = 0؛
الباحثين
الحالي
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 = iMACD (NULL، 0، 8، 17، 9، PRICE_CLOSE، MODE_SIGNAL، Current 0)؛
double Var2 = iMACD (NULL، 0، 8، 17، 9، PRICE_CLOSE، MODE_MAIN، Current 0)؛
double Var3 = iMACD (NULL، 0، 8، 17، 9، PRICE_CLOSE، MODE_SIGNAL، Current 1)؛
double Var4 = iMACD (NULL، 0، 8، 17، 9، PRICE_CLOSE، MODE_MAIN، Current 1)؛
double Buy1_1 = Var1 lt؛ فار 2
double Buy2_1 = Var3 gt؛ Var4
double Sell1_1 = Var1 gt؛ Var2.
double Sell2_1 = Var3 lt؛ Var4
double CloseBuy1_1 = Var1 gt؛ Var2.
double CloseBuy2_1 = Var3 lt؛ Var4
double CloseSell1_1 = Var1 lt؛ فار 2
double CloseSell2_1 = Var3 gt؛ Var4

// ----------------------------------------------- -------------------
//| نهاية متغير |
// ----------------------------------------------- -------------------
//التحقق من الموقف
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) {
//قريب
// ----------------------------------------------- -------------------
//| إشارة تبدأ (خروج الشراء) |
// ----------------------------------------------- -------------------
إذا كان الأمر (False False) = SIGNAL_CLOSEBUY؛

// ----------------------------------------------- -------------------
//| إشارة نهاية (خروج الشراء) |
// ----------------------------------------------- -------------------
if (Order == SIGNAL_CLOSEBUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
OrderClose (OrderTicket ()، OrderLots ()، Bid، Slippage، MediumSeaGreen)؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (مزايدة ، أرقام) إغلاق الشراء) ؛
إذا (! EachTickMode) BarCount = Bars؛
IsTrade = خطأ ؛
استمر؛
}
//وقف المتابعة
if (TrailingStopMode 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؛
استمر؛
}
}
}
} آخر {
//قريب
// ----------------------------------------------- -------------------
//| إشارة تبدأ (خروج بيع) |
// ----------------------------------------------- -------------------
إذا كان الأمر (False False) = SIGNAL_CLOSESELL ؛

// ----------------------------------------------- -------------------
//| نهاية الإشارة (بيع الخروج) |
// ----------------------------------------------- -------------------
if (Order == SIGNAL_CLOSESELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
OrderClose (OrderTicket ()، OrderLots ()، Ask، Slippage، DarkOrange)؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (اسأل ، أرقام) إغلاق البيع) ؛
إذا (! EachTickMode) BarCount = Bars؛
IsTrade = خطأ ؛
استمر؛
}
//وقف المتابعة
if (TrailingStopMode 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؛
استمر؛
}
}
}
}
}
}
// ----------------------------------------------- -------------------
//| إشارة تبدأ (دخول) |
// ----------------------------------------------- -------------------
إذا كان الأمر (False False) = SIGNAL_BUY؛
إذا كان الطلب (False False) = SIGNAL_SELL ؛

// ----------------------------------------------- -------------------
//| نهاية الإشارة |
// ----------------------------------------------- -------------------
//يشترى
if (Order == SIGNAL_BUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
إذا (!! IsTrade) {
//تحقق من الهامش الحر
if (AccountFreeMargin () lt؛ (1)) {
طباعة (ليس لدينا المال. الهامش المجاني = ، AccountFreeMargin ()) ؛
عودة (0)؛
}
إذا كان (StopLossMode) StopLossLevel = Ask - StopLoss * Point؛ آخر StopLossLevel = 0.0؛
إذا كانت (TakeProfitMode) 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 ())؛
SetIndexStyle (3، DRAW_ARROW، EMPTY، 2، Green)؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (اسأل ، أرقام) فتح الشراء) ؛
} آخر {
طباعة (خطأ في فتح أمر الشراء: ، GetLastError ())؛
}
}
if (EachTickMode) TickCheck = True؛
إذا (! EachTickMode) BarCount = Bars؛
عودة (0)؛
}
}
//يبيع
if (Order == SIGNAL_SELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
إذا (!! IsTrade) {
//تحقق من الهامش الحر
if (AccountFreeMargin () lt؛ (1)) {
طباعة (ليس لدينا المال. الهامش المجاني = ، AccountFreeMargin ()) ؛
عودة (0)؛
}
if (StopLossMode) StopLossLevel = Bid ​​ StopLoss * Point؛ آخر StopLossLevel = 0.0؛
if (TakeProfitMode) 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 ())؛
SetIndexStyle (3، DRAW_ARROW، EMPTY، 2، Red)؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (مزايدة ، أرقام) Open Sell) ؛
} آخر {
طباعة (خطأ في فتح طلب SELL: ، GetLastError ())؛
}
}
if (EachTickMode) TickCheck = True؛
إذا (! EachTickMode) BarCount = Bars؛
عودة (0)؛
}
}
إذا (! EachTickMode) BarCount = Bars؛
عودة (0)؛
}
// ----------------------------------------------- -------------------


#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
# حقوق الطبع والنشر رائعة أنت
extern int MagicNumber = 0؛
extern bool SignalMail = False؛
extern bool EachTickMode = True؛
extern double Lots = 5.0؛
extern int Slippage = 0؛
extern bool StopLossMode = False؛
extern Int StopLoss = 0؛
extern bool TakeProfitMode = False؛
ex Int Int TakeProfit = 0؛
extern bool TrailingStopMode = False؛
extern Int TrailingStop = 0؛
الباحثين
الحالي
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 = iMACD (NULL، 0، 8، 17، 9، PRICE_CLOSE، MODE_SIGNAL، Current 0)؛
double Var2 = iMACD (NULL، 0، 8، 17، 9، PRICE_CLOSE، MODE_MAIN، Current 0)؛
double Var3 = iMACD (NULL، 0، 8، 17، 9، PRICE_CLOSE، MODE_SIGNAL، Current 1)؛
double Var4 = iMACD (NULL، 0، 8، 17، 9، PRICE_CLOSE، MODE_MAIN، Current 1)؛
double Buy1_1 = Var1 lt؛ فار 2
double Buy2_1 = Var3 gt؛ Var4
double Sell1_1 = Var1 gt؛ Var2.
double Sell2_1 = Var3 lt؛ Var4
double CloseBuy1_1 = Var1 gt؛ Var2.
double CloseBuy2_1 = Var3 lt؛ Var4
double CloseSell1_1 = Var1 lt؛ فار 2
double CloseSell2_1 = Var3 gt؛ Var4

// ----------------------------------------------- -------------------
//| نهاية متغير |
// ----------------------------------------------- -------------------
//التحقق من الموقف
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) {
//قريب
// ----------------------------------------------- -------------------
//| إشارة تبدأ (خروج الشراء) |
// ----------------------------------------------- -------------------
إذا كان الأمر (False False) = SIGNAL_CLOSEBUY؛

// ----------------------------------------------- -------------------
//| إشارة نهاية (خروج الشراء) |
// ----------------------------------------------- -------------------
if (Order == SIGNAL_CLOSEBUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
OrderClose (OrderTicket ()، OrderLots ()، Bid، Slippage، MediumSeaGreen)؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (مزايدة ، أرقام) إغلاق الشراء) ؛
إذا (! EachTickMode) BarCount = Bars؛
IsTrade = خطأ ؛
استمر؛
}
//وقف المتابعة
if (TrailingStopMode 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؛
استمر؛
}
}
}
} آخر {
//قريب
// ----------------------------------------------- -------------------
//| إشارة تبدأ (خروج بيع) |
// ----------------------------------------------- -------------------
إذا كان الأمر (False False) = SIGNAL_CLOSESELL ؛

// ----------------------------------------------- -------------------
//| نهاية الإشارة (بيع الخروج) |
// ----------------------------------------------- -------------------
if (Order == SIGNAL_CLOSESELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
OrderClose (OrderTicket ()، OrderLots ()، Ask، Slippage، DarkOrange)؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (اسأل ، أرقام) إغلاق البيع) ؛
إذا (! EachTickMode) BarCount = Bars؛
IsTrade = خطأ ؛
استمر؛
}
//وقف المتابعة
if (TrailingStopMode 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؛
استمر؛
}
}
}
}
}
}
// ----------------------------------------------- -------------------
//| إشارة تبدأ (دخول) |
// ----------------------------------------------- -------------------
إذا كان الأمر (False False) = SIGNAL_BUY؛
إذا كان الطلب (False False) = SIGNAL_SELL ؛

// ----------------------------------------------- -------------------
//| نهاية الإشارة |
// ----------------------------------------------- -------------------
//يشترى
if (Order == SIGNAL_BUY ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
إذا (!! IsTrade) {
//تحقق من الهامش الحر
if (AccountFreeMargin () lt؛ (1)) {
طباعة (ليس لدينا المال. الهامش المجاني = ، AccountFreeMargin ()) ؛
عودة (0)؛
}
إذا كان (StopLossMode) StopLossLevel = Ask - StopLoss * Point؛ آخر StopLossLevel = 0.0؛
إذا كانت (TakeProfitMode) 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 ())؛
SetIndexStyle (3، DRAW_ARROW، EMPTY، 2، Green)؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (اسأل ، أرقام) فتح الشراء) ؛
} آخر {
طباعة (خطأ في فتح أمر الشراء: ، GetLastError ())؛
}
}
if (EachTickMode) TickCheck = True؛
إذا (! EachTickMode) BarCount = Bars؛
عودة (0)؛
}
}
//يبيع
if (Order == SIGNAL_SELL ((EachTickMode! TickCheck) || (! EachTickMode (Bars! = BarCount)))) {
إذا (!! IsTrade) {
//تحقق من الهامش الحر
if (AccountFreeMargin () lt؛ (1)) {
طباعة (ليس لدينا المال. الهامش المجاني = ، AccountFreeMargin ()) ؛
عودة (0)؛
}
if (StopLossMode) StopLossLevel = Bid ​​ StopLoss * Point؛ آخر StopLossLevel = 0.0؛
if (TakeProfitMode) 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 ())؛
SetIndexStyle (3، DRAW_ARROW، EMPTY، 2، Red)؛
إذا كان (SignalMail) SendMail ([إشارة التنبيه] ، [ Symbol () ] DoubleToStr (مزايدة ، أرقام) Open Sell) ؛
} آخر {
طباعة (خطأ في فتح طلب SELL: ، GetLastError ())؛
}
}
if (EachTickMode) TickCheck = True؛
إذا (! EachTickMode) BarCount = Bars؛
عودة (0)؛
}
}
إذا (! EachTickMode) BarCount = Bars؛
عودة (0)؛
}
// ----------------------------------------------- -------------------

أكرم سمير
12-12-2021 15:17, 03:17 PM
ما الذي تريد قوله مع عبارة (False False)؟ أنا لم أر ذلك المستخدمة من قبل.