اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex

اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex (https://fx-arabia.com/vb/index.php)
-   منتدى المؤشرات و الاكسبيرتات (https://fx-arabia.com/vb/forumdisplay.php?f=6)
-   -   لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟ (https://fx-arabia.com/vb/showthread.php?t=27964)

nesma 16-12-2012 11:58 PM

رد: لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟
 
دي الدالة المسؤلة عن أختبار الشروط إذا كان العقد المفتوح شراءاً فيتم إلغاء أمر البيع المعلق


ده الكود قبل التعديل

[PHP]
void IfOrderExists12()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 33)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}

if (exists)
{
DeletePendingOrder10();

}
}

[/PHP] وده بعد التعديل
[PHP]

void IfOrderExists12()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 33 && OrderProfit() > 0)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}

if (exists)
{
DeletePendingOrder10();

}
}

[/PHP]



انا غيرت MODE_TRADES إلى MODE_HISTORY
وضيفت الشرط ده
OrderProfit() > 0
أي أن الربح يكون أكبر من صفر

وهعمل نفس الكلام بالنسبة للدالة الخاصة بأختبار الشروط إذا كان العقد المفتوح بيعاً

تمام كده ولا إيه؟؟؟

jmeel 17-12-2012 12:41 AM

رد: لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟
 
تمام وبعد انتهاء التعديلات جربي وشوفي النتيجة

nesma 17-12-2012 01:19 AM

رد: لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟
 
اقتباس:

المشاركة الأصلية كتبت بواسطة jmeel (المشاركة 437485)
تمام وبعد انتهاء التعديلات جربي وشوفي النتيجة

تم التعديل والتجربه ووصلت الصفقة للهدف لكن للأسف لم يتم إلغاء الامر المعلق

ماذا ينقص الكود؟؟

nesma 17-12-2012 02:49 AM

رد: لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟
 
هذا هو الكود بالكامل بعد التعديل


[PHP]


#property copyright " - jmeel24@yahoo.com "

#include <stdlib.mqh>
#include <WinUser32.mqh>

// exported variables

extern string A0=" ------- General Setting --------- ";
extern int Hour41 = 0;

extern double Volume_Lots = 0.1;
extern int MagicNo=4141;


extern string A2=" ------- B U Y Setting ------------ ";
extern int PriceOffset30 = 12;
extern int BuyTakeprofit30 = 10;
extern int BuyStoploss30 = 20;
int Expiration30 = 1440;


extern string A1=" ------- S E L L Setting ---------- ";
extern int PriceOffset31 = 10;
extern int SellTakeprofit31 = 10;
extern int SellStoploss31 = 20;
int Expiration31 = 1440;



// local variables
double PipValue=1; // this variable is here to support 5-digit brokers
bool Terminated = false;
string LF = "\n"; // use this in custom or utility blocks where you need line feeds
int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names
int current = 0;


int Today41 = -1;
datetime BarTime25 = 0;
datetime BarTime29 = 0;


int init()
{
NDigits = Digits;

if (false) ObjectsDeleteAll(); // clear the chart




Comment(""); // clear the chart
}

// Expert start
int start()
{
if (Bars < 10)
{
Comment("Not enough bars");
return (0);
}
if (Terminated == true)
{
Comment("EA Terminated.");
return (0);
}

OnEveryTick43();

}

void OnEveryTick43()
{
if (true == false && false) PipValue = 10;
if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;

CustomCode45();
AtCertainTime41();
IfOrderExists12();
IfOrderExists5();

}

void CustomCode45()
{


}

void AtCertainTime41()
{
int datetime800 = TimeCurrent();
int hour0 = TimeHour(datetime800);
int minute0 = TimeMinute(datetime800);
if (DayOfWeek() != Today41 && hour0 == Hour41 )
{
Today41 = DayOfWeek();
IfOrderDoesNotExist24();
IfOrderDoesNotExist28();

}
}

void IfOrderDoesNotExist24()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 33)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}

if (exists == false)
{
OncePerBar25();

}
}

void OncePerBar25()
{

if (BarTime25 < Time[0])
{
// we have a new bar opened
BarTime25 = Time[0]; // keep the new bar open time
SellPendingOrder31();

}
}

void SellPendingOrder31()
{
int expire = TimeCurrent() + 60 * Expiration31;
double price = NormalizeDouble(Open[0], NDigits) - PriceOffset31*PipValue*Point;
double SL = price + SellStoploss31*PipValue*Point;
if (SellStoploss31 == 0) SL = 0;
double TP = price - SellTakeprofit31*PipValue*Point;
if (SellTakeprofit31 == 0) TP = 0;
if (Expiration31 == 0) expire = 0;
int ticket = OrderSend(Symbol(), OP_SELLSTOP, Volume_Lots, price, 4, SL, TP, "My Expert", 33, expire, Red);
if (ticket == -1)
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}

}

void IfOrderDoesNotExist28()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 33)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}

if (exists == false)
{
OncePerBar29();

}
}

void OncePerBar29()
{

if (BarTime29 < Time[0])
{
// we have a new bar opened
BarTime29 = Time[0]; // keep the new bar open time
BuyPendingOrder30();

}
}

void BuyPendingOrder30()
{
int expire = TimeCurrent() + 60 * Expiration30;
double price = NormalizeDouble(Open[0], NDigits) + PriceOffset30*PipValue*Point;
double SL = price - BuyStoploss30*PipValue*Point;
if (BuyStoploss30 == 0) SL = 0;
double TP = price + BuyTakeprofit30*PipValue*Point;
if (BuyTakeprofit30 == 0) TP = 0;
if (Expiration30 == 0) expire = 0;
int ticket = OrderSend(Symbol(), OP_BUYSTOP, Volume_Lots, price, 4, SL, TP, "My Expert", 33, expire, Blue);
if (ticket == -1)
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}

}

void IfOrderExists12()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 33 && OrderProfit() > 0)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}

if (exists)
{
DeletePendingOrder10();

}
}

void DeletePendingOrder10()
{

for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 33)
{
bool ret = OrderDelete(OrderTicket(), Red);

if (ret == false)
{
Print("OrderDelete() error - ", ErrorDescription(GetLastError()));
}
}
}

}

void IfOrderExists5()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 33 && OrderProfit() > 0)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}

if (exists)
{
DeletePendingOrder9();

}
}

void DeletePendingOrder9()
{

for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 33)
{
bool ret = OrderDelete(OrderTicket(), Red);

if (ret == false)
{
Print("OrderDelete() error - ", ErrorDescription(GetLastError()));
}
}
}

}



int deinit()
{
if (false) ObjectsDeleteAll();




}


[/PHP]

jmeel 17-12-2012 03:43 PM

رد: لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟
 
تفضلي الكود بعد التصحيح
[PHP]
#property copyright " jmeel24@yahoo.com "

#include <stdlib.mqh>
#include <WinUser32.mqh>

// exported variables


extern int MagicNo=4141;
extern string A1=" Time Order Setting ";
extern int Hour16 = 22;
extern int Minute16 = 2;

extern string A2=" Sell Order Setting ";
extern double SellLots8 = 0.1;
extern int SellStoploss8 = 20;
extern int SellTakeprofit8 = 10;
extern int PriceOffset8 = 10;

extern string A3=" Buy Order Setting ";
extern double BuyLots17 = 0.1;
extern int BuyStoploss17 = 20;
extern int BuyTakeprofit17 = 10;
extern int PriceOffset17 = 12;


// local variables
double PipValue=1; // this variable is here to support 5-digit brokers
bool Terminated = false;
string LF = "\n"; // use this in custom or utility blocks where you need line feeds
int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names
int current = 0;

int Expiration17 = 1380;
int Expiration8 = 1380;
int Today16 = -1;
datetime BarTime7 = 0;
datetime BarTime9 = 0;


int deinit()
{
if (false) ObjectsDeleteAll();




}

int init()
{
NDigits = Digits;

if (false) ObjectsDeleteAll(); // clear the chart




Comment(""); // clear the chart
}

// Expert start
int start()
{
if (Bars < 10)
{
Comment("Not enough bars");
return (0);
}
if (Terminated == true)
{
Comment("EA Terminated.");
return (0);
}

OnEveryTick20();

}

void OnEveryTick20()
{
if (true == false && false) PipValue = 10;
if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;

CheckLastOrderResult23();

AtCertainTime16();


}



void AtCertainTime16()
{
int datetime800 = TimeLocal();
int hour0 = TimeHour(datetime800);
int minute0 = TimeMinute(datetime800);
if (DayOfWeek() != Today16 && hour0 == Hour16 && minute0 == Minute16)
{
Today16 = DayOfWeek();
IfOrderDoesNotExist15();
IfOrderDoesNotExist14();

}
}

void IfOrderDoesNotExist15()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNo)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}

if (exists == false)
{
OncePerBar7();

}
}

void OncePerBar7()
{

if (BarTime7 < Time[0])
{
// we have a new bar opened
BarTime7 = Time[0]; // keep the new bar open time
SellPendingOrder8();

}
}

void SellPendingOrder8()
{
int expire = TimeCurrent() + 60 * Expiration8;
double price = NormalizeDouble(Open[0], NDigits) - PriceOffset8*PipValue*Point;
double SL = price + SellStoploss8*PipValue*Point;
if (SellStoploss8 == 0) SL = 0;
double TP = price - SellTakeprofit8*PipValue*Point;
if (SellTakeprofit8 == 0) TP = 0;
if (Expiration8 == 0) expire = 0;
int ticket = OrderSend(Symbol(), OP_SELLSTOP, SellLots8, price, 4, SL, TP, "My Expert", MagicNo, expire, Red);
if (ticket == -1)
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}

}

void IfOrderDoesNotExist14()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNo)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}

if (exists == false)
{
OncePerBar9();

}
}

void OncePerBar9()
{

if (BarTime9 < Time[0])
{
// we have a new bar opened
BarTime9 = Time[0]; // keep the new bar open time
BuyPendingOrder17();

}
}

void BuyPendingOrder17()
{
int expire = TimeCurrent() + 60 * Expiration17;
double price = NormalizeDouble(Open[0], NDigits) + PriceOffset17*PipValue*Point;
double SL = price - BuyStoploss17*PipValue*Point;
if (BuyStoploss17 == 0) SL = 0;
double TP = price + BuyTakeprofit17*PipValue*Point;
if (BuyTakeprofit17 == 0) TP = 0;
if (Expiration17 == 0) expire = 0;
int ticket = OrderSend(Symbol(), OP_BUYSTOP, BuyLots17, price, 4, SL, TP, "My Expert", MagicNo, expire, Blue);
if (ticket == -1)
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}

}

void CheckLastOrderResult23()
{
double profit = 0;
datetime lastCloseTime = 0;
int cnt = OrdersHistoryTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderSymbol() == Symbol() && lastCloseTime < OrderCloseTime())
{
lastCloseTime = OrderCloseTime();
profit = OrderProfit();
}
}
if (profit > 0)

{
DeletePendingOrder19();
DeletePendingOrder18();

}

}

void DeletePendingOrder19()
{

for (int i=OrdersTotal()-1; i <= 0; i++)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNo)
{
bool ret = OrderDelete(OrderTicket(), Red);

if (ret == false)
{
Print("OrderDelete() error - ", ErrorDescription(GetLastError()));
}
}
}

}

void DeletePendingOrder18()
{

for (int i=OrdersTotal()-1; i <= 0; i++)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNo)
{
bool ret = OrderDelete(OrderTicket(), Red);

if (ret == false)
{
Print("OrderDelete() error - ", ErrorDescription(GetLastError()));
}
}
}

}




[/PHP]

nesma 17-12-2012 08:27 PM

رد: لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟
 
كل الشكر لك أستاذ جميل وجاري التجربه وبصراحه اتعلمت منك كتير عن طريق الاكسبريت ده وكنت اتمنى اعرف من حضرتك التعديل بتاعي مش شغال ليه ؟
وجاري تجربة التعديل الجديد

jmeel 18-12-2012 12:28 AM

رد: لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟
 
انتي غيرتي فقط Trade الى History وهذا لايكفي ولابد من تحديد أن يكون هو العقد الأخير وأن يكون اغلق على ربح . راجعي الدالة وقارنيها ، ثم اختصرت أن يكون الأغلاق بيع أو شراء وكذلك المعلق بيع أو شراء ، لأن الأكسبيرت ينتهي عند هذا الحد وينتظر الموعد الجديد .

nesma 18-12-2012 04:33 PM

رد: لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟
 
اقتباس:

المشاركة الأصلية كتبت بواسطة jmeel (المشاركة 438035)
انتي غيرتي فقط Trade الى History وهذا لايكفي ولابد من تحديد أن يكون هو العقد الأخير وأن يكون اغلق على ربح . راجعي الدالة وقارنيها ، ثم اختصرت أن يكون الأغلاق بيع أو شراء وكذلك المعلق بيع أو شراء ، لأن الأكسبيرت ينتهي عند هذا الحد وينتظر الموعد الجديد .

ما شاء الله عليك أستاذ جميل شكراً لك على هذا الوقت والمجهود وفقك الله دائماً إلى الخير
وفعلا والله استفدت منك كثيرا

uosef 06-01-2013 06:51 PM

رد: لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟
 
السلام عليكم ورحمة الله وبركاتة
ممكن الاكسبرت بعد اخر تعديل لو سمحتى
شكرااااااااا جزيلاااااااااااا لحضرتك وللاستاذ جميل

mcgill 21-01-2013 07:29 AM

رد: لو سمحت اول مره اطلب اكسبريت ممكن حد يساعدني؟
 
السلام عليكم

ممكن الاكسبرت بعد اخر تعديل

شكرااااااااا جزيلاااااااااااا


الساعة الآن 04:00 AM

Powered by vBulletin® Copyright ©2000 - 2025

جميع الحقوق محفوظة الى اف اكس ارابيا www.fx-arabia.com