نعم هذه الخاصية إسمها optimization وهي تعمل كما شرحها لك الأخ wadi جزاه الله خير
راجع هذا الموضوع
https://forum.arabictrader.com/t137105.html
Printable View
نعم هذه الخاصية إسمها optimization وهي تعمل كما شرحها لك الأخ wadi جزاه الله خير
راجع هذا الموضوع
https://forum.arabictrader.com/t137105.html
رائع أستاذي كعادتك متميز
بالكود الذي أرفقته حددت فقط ربح إجمالي للهيدج ولكن نحن نريد الاغلاق عند المستوى البيعي (أو الشرائي التاني) وبالتالي قمت بالتعديل كما يلي والحمد لله نجح بالباكتيست ويتم الكلوزباي كما أريد :)
لكن الان لدينا مشكلة أخرى في جزئية إعادة تفعيل الأوامر بخاصيةكود PHP:if(((ProfitPips_B>250)&&(ProfitPips_S<-70.5))||((ProfitPips_B<-70.5)&&(ProfitPips_S>250)))
باكسبيرتكود PHP:extern bool AddOrdersAfterClose=true;
حيث أن الكلوزباي يقوم بإغلاق أمر بربح إجمالي الهيدج والأمر التاني يقوم بإغلاقه بربح 0 ولوت 0 كما بالصورةكود:MR.dollar_Pending Orders EA V4.6
https://forum.arabictrader.com/attac...1&d=1373260310
ومنه الاكسبيرت يقوم بوضع أمر معلق مكان الأمر الأول بينما لا يستطيع وضع الأمر المعلق التاني مكان الأمر المغلق بالكلوزباي
أظن أن الحل هو حدف دالة المضاعفات وحدف الوت من الأوامر المعلقة بدالتيونجعل اللوت أساسي موحد لجميع الأوامركود:if(AddOrdersAfterClose){
AddBuy();
AddSell();
}
إذا هذا صحيح فالمرجو فضلا طرح مثال بسيط
وإذا غير صحيح فما هو الحل لتفعيل أمر معلق مكان أمر كلوزباي؟
في الأخير "رمضان مبارك" شهر الرحمه و الغفران شهر التوبه و الإيمان شهر الفضل و الإحسان شهر المحبه و السماح و إن أشاء الله كل عام و أنتم بالف خير
:eh_s(7):
http://docs.mql4.com/math/MathSqrt
هذا هو شرح للامر او الدالة وهو نفس الموقع الرئيسي للشركة الخاصة باللغة الذي اعتمد عليه ففيه جميع الاوامر التي تريدها
تم بحمد الله حل المشكلة ويعمل جيدا بالباكتيست
أرجو التصحيح أستذي الغالي لربما يوجد خطأ لم أنتبه له :)
فقط قمت بتعديل بسيط ولأني لا أريد المضاعفات فلا يهم سوى اللوت الأساسي
ولدي سؤال كيف يمكن دمج أوامر يدوية مع أوامر الاكسبيرت ؟ بمعنى أن يعمل الاكسبيرت وفق Symbol فقطكود PHP:void AddBuy(){
if(Q>ordersS(MagicNumberB)&&ordersS(MagicNumberB)>0){
for(int i=0;i<OrdersHistoryTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if(OrderType()==OP_BUY)
{
int type=OrderType();double open=OrderOpenPrice();
}
}
{
if(Ask>open+3*point)
{
OrderSend(Symbol(),OP_BUYLIMIT,Lots,open,3,StopLoss,TakeProfit,"MR.dollar EA",MagicNumberB,0,Green);
}
if(Ask<open-3*point)
{
OrderSend(Symbol(),OP_BUYSTOP,Lots,open,3,StopLoss,TakeProfit,":MR.dollar EA",MagicNumberB,0,Green);
}
}
}
}
هل بحدف الماجيك نمبر من الاكسبيرت أم بجعله عند القيمة 0 ؟
إذا كان بحدف الماجيك نمبر فالاكسبيرت النسخة الرابعة به 3 أنواع من الماجيك نمبر ومن الملاحظ أن النوعين الأخيرين S و B متعلقين بحسابات الأوامر المعلقة...
ما العمل في هذه الحالة ؟كود PHP:extern int MagicNumber=2533;
int MagicNumberS,MagicNumberB;
:00110:
السلام عليكم ورحمة الله وبركاته
رمضان كريم وربنا يكرمنا واياكم بصيامه وقيامه
عندي هذا الكود
والمشكله اني اذا وضعته على شارت عمله معينه اشتغل مضبوط بس لما اريد وضعه على شارت ثاني بجانب الاول مايشتغل الثاني فـ لو احد الاخوان عنده طريقه يتجمل معنا وربنا يوفق الجميعكود:if(OrdersTotal()<=1 && total(OP_BUY)+total(OP_BUYSTOP)==0)
{
if(Mac1>High[0]&&total(OP_BUYSTOP)==0)
{open(OP_BUYSTOP,lot,Mac1,TakeProfit,StopLoss,DoubleToStr(total_histo_loss()+1,0)) ;}
}
if(OrdersTotal()<=1 && total(OP_SELL)+total(OP_SELLSTOP)==0)
{
if(Mac1<Low[0]&&total(OP_SELLSTOP)==0)
{open(OP_SELLSTOP,lot,Mac1,TakeProfit,StopLoss,DoubleToStr(total_histo_loss()+1,0)) ;}
}
تسلم يمناك اخي جميل وجربت الكود ولاكن للاسف ماضبط معيكود:{OrderSend(Symbol(), OP_SELLSTOP, lot, Mac1, 30, StopLoss, TakeProfit," ", DoubleToStr(total_histo_loss()+1,0), 0, Blue);}
انا لاحظت خطأ في سطر ارسال الأوردر فصححته لك لكن ربما هناك اخطأ اخرى مثل هذا Mac1>High[0] فلايوجد هاي ثابت لشمعة الزيرو ، والثابت الوحيد لشمعة الزيرو هو سعر الأفتتاح ، ربما كان قصدك High[1] قم بتغييرها الى الشمعه 1 .
بارك الله فيك وجزاك الله عنا كل خير
يعني عندما أقوم بوضع صفقة يدويا أكتب بالكومنتلأن الشروط بالاكسبيرت بها هذا الكومنتكود PHP:MR.dollar EA
هل بهذه الطريقة الاكسبيرت سيعتبر صفقاتي اليدوية من ضمن صفقاته ؟كود PHP:OrderSend(Symbol(),OP_SELLLIMIT,newlot,Price,3,SL,TP,"MR.dollar EA",MagicNumberS,0,Red)
إخوانى وأساتذتى الأفاضل بعد السلام عليكم وكل عام وأنتم بخيركود PHP://+------------------------------------------------------------------+
//| |
//| |
//| www.arabictrader.com/vb |
//| |
//| [email protected] |
//+------------------------------------------------------------------+
#property copyright "MR.dollarEA"
#property link "[email protected]"
extern bool DeleteOppositePending=false;
extern string S1=" Hamada Acc Settings";
extern double SL1_1=0.382;
extern double Lots1_S=0.1;
extern double SL2_1 =0.691;
extern double SL3_1 =1.1;
extern double Lots2_S=0.1;
extern double SL4_1=1.6;
extern double Lots3_S=0.1;
extern double SL5_1=2.51;
extern double Lots4_S=0.2;
extern double SL6_1=4.1;
extern double BL1_2=0.382;
extern double Lots1_B=0.1;
extern double BL2_2 =0.691;
extern double BL3_2 =1.1;
extern double Lots2_B=0.1;
extern double BL4_2=1.6;
extern double Lots3_B=0.1;
extern double BL5_2=2.51;
extern double Lots4_B=0.6;
extern double BL6_2=4.1;
datetime Time0;
double point;
int digits,Q;
extern int MagicNumber=2533;
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits<4){point=0.01;digits=2;}
else{point=0.0001;digits=4;}
return(0);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS deinitialization function |
//+------------------------------------------------------------------+
void deinit() {
Comment("");
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS Start function |
//+------------------------------------------------------------------+
int Orderscnt(int type){
int cnt=0;
for(int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderType()==type)
{
cnt++;
}
}
return(cnt);
}
int start()
{
Comment("Programmed by MR.dollar"+"\n"+"Idea Created by Hamada Acc"+"\n"+"منتدى المتداول العربي"+"\n"+"www.arabictrader.com/vb");
double D6=iOpen(Symbol(),PERIOD_D1,6);
double D5=iOpen(Symbol(),PERIOD_D1,5);
double D4=iOpen(Symbol(),PERIOD_D1,4);
double D3=iOpen(Symbol(),PERIOD_D1,3);
double D2=iOpen(Symbol(),PERIOD_D1,2);
double D1=iOpen(Symbol(),PERIOD_D1,1);
double D0=iOpen(Symbol(),PERIOD_D1,0);
double DNL0 = MathLog ( D1 /D0);
double DNL1 = MathLog ( D1 /D2);
double DNL2 = MathLog ( D2 /D3);
double DNL3 = MathLog ( D3 /D4);
double DNL4 = MathLog ( D4 /D5) ;
double DNL5 = MathLog ( D5 /D6);
double SQR0 = DNL0 * DNL0;
double SQR1 = DNL1 * DNL1;
double SQR2 = DNL2 * DNL2;
double SQR3 = DNL3 * DNL3;
double SQR4 = DNL4 * DNL4;
double SQR5 = DNL5 * DNL5;
double DNLAVG = ( DNL0 + DNL1 + DNL2 + DNL3 + DNL4 +DNL5 ) / 7;
double SQRAVG = ( SQR0 + SQR1 + SQR2 +SQR3 +SQR4 + SQR5 ) / 7;
double CHR = SQRAVG - (DNLAVG * DNLAVG);
double Z= MathSqrt(CHR)*D0;
double SL1 = D0+(SL1_1* Z);
double SL2 = D0+(SL2_1* Z);
double SL3 = D0+(SL3_1* Z);
double SL4 = D0+(SL4_1* Z);
double SL5 = D0+(SL5_1* Z );
double SL6 = D0+(SL6_1* Z);
double BL1 = D0-(BL1_2* Z );
double BL2 = D0-(BL2_2* Z );
double BL3 = D0-(BL3_2* Z );
double BL4 = D0-(BL4_2* Z );
double BL5 = D0-(BL5_2* Z );
double BL6 = D0-(BL6_2* Z);
if(Orderscnt(OP_BUY)>0&&DeleteOppositePending)
{
DeletePendingOrders(OP_SELLLIMIT);
}
if(Orderscnt(OP_SELL)>0&&DeleteOppositePending)
{
DeletePendingOrders(OP_BUYLIMIT);
}
double SL,TP;
if(Time0!=iTime(Symbol(),1440,0)&&iVolume(Symbol(),1440,0)<2)
{
while(Orderscnt(OP_SELLLIMIT)>0)DeletePendingOrders(OP_SELLLIMIT);
while(Orderscnt(OP_BUYLIMIT)>0)DeletePendingOrders(OP_BUYLIMIT);
OrderSend(Symbol(),OP_BUYLIMIT,Lots1_B,NormalizeDouble(BL1,Digits),3*Q,BL6,SL1,"MR.dollar EA",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_BUYLIMIT,Lots2_B,NormalizeDouble(BL3,Digits),3*Q,BL6,BL1,"MR.dollar EA",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_BUYLIMIT,Lots3_B,NormalizeDouble(BL4,Digits),3*Q,BL6,BL2,"MR.dollar EA",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_BUYLIMIT,Lots4_B,NormalizeDouble(BL5,Digits),3*Q,BL6,BL4,"MR.dollar EA",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_SELLLIMIT,Lots1_S,NormalizeDouble(SL1,Digits),3*Q,SL6,BL1,"MR.dollar EA",MagicNumber,0,Red);
OrderSend(Symbol(),OP_SELLLIMIT,Lots2_S,NormalizeDouble(SL3,Digits),3*Q,SL6,SL1,"MR.dollar EA",MagicNumber,0,Red);
OrderSend(Symbol(),OP_SELLLIMIT,Lots3_S,NormalizeDouble(SL4,Digits),3*Q,SL6,SL2,"MR.dollar EA",MagicNumber,0,Red);
OrderSend(Symbol(),OP_SELLLIMIT,Lots4_S,NormalizeDouble(SL5,Digits),3*Q,SL6,SL4,"MR.dollar EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
}
}
//+------------------------------------------------------------------+
void DeletePendingOrders(int type)
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==type)
{
OrderDelete(OrderTicket());
}
}
}
}
//+---------------------------------------------------------------------------------+
أنا شغال بإكسيبرت يعتمد على مؤشر يرسم مستويات متجددة كل يوم وكنت عايز الكود اللى يخلى الاكسبيرت يعلق الاوامر بعد الساعة 12 مساءً مع بداية اليوم الجديد ولا يلتفت للمستويات القديمة
ثانيا وضع امكانية اغلاق الصفقات المعلقة الخاسرة بعد نهاية اليوم ترو اور فلص
وجزاكم الله خيرا
مرحبا أيها الاصدقاء . أحتاج تعديل لهدا السكريبت منفضلكم.
مهمت السكربت 1 : عدم إقفال أي صفقة رابحة من " 0 إلى 40 نقطة"
مهمت السكربت 2 : عدم إقفال أي صفقة خاسرة من " 0 إلى 39 نقطة"
وشكرا على المساعدة مسبقا .
كود PHP://+------------------------------------------------------------------+
//| This MQL is generated by Expert Advisor Builder |
//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |
//| |
//| In no event will author be liable for any damages whatsoever. |
//| Use at your own risk. |
//| |
//+------------------- DO NOT REMOVE THIS HEADER --------------------+
#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 = True;
extern double Lots = 1.0;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 40;
extern bool UseTakeProfit = False;
extern int TakeProfit = 60;
extern bool UseTrailingStop = False;
extern int TrailingStop = 30;
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
double Buy1_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 1);
double Buy1_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 1);
double Buy2_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 2);
double Buy2_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 2);
double Sell1_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 1);
double Sell1_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 1);
double Sell2_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 2);
double Sell2_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 2);
double CloseBuy1_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 1);
double CloseBuy1_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 1);
double CloseSell1_1 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_CLOSE, Current + 1);
double CloseSell1_2 = iMA(NULL, 0, 5, 0, MODE_SMA, PRICE_OPEN, Current + 1);
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 < CloseBuy1_2) Order = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY&&(OrderProfit()<0||OrderProfit()>=TakeProfit)&&(
(EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
if (CloseSell1_1 > CloseSell1_2) Order = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL&&(OrderProfit()<0||OrderProfit()>=TakeProfit)&&
((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if (Buy1_1 > Buy1_2 && Buy2_1 <= Buy2_2) Order = SIGNAL_BUY;
if (Sell1_1 < Sell1_2 && Sell2_1 >= Sell2_2) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else 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 > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else 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 > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+
إخوانى وأساتذتى الأفاضل بعد السلام عليكم وكل عام وأنتم بخيركود PHP://+------------------------------------------------------------------+
//| |
//| |
//| www.arabictrader.com/vb |
//| |
//| [email protected] |
//+------------------------------------------------------------------+
#property copyright "MR.dollarEA"
#property link "[email protected]"
extern bool DeleteOppositePending=false;
extern string S1=" Hamada Acc Settings";
extern double SL1_1=0.382;
extern double Lots1_S=0.1;
extern double SL2_1 =0.691;
extern double SL3_1 =1.1;
extern double Lots2_S=0.1;
extern double SL4_1=1.6;
extern double Lots3_S=0.1;
extern double SL5_1=2.51;
extern double Lots4_S=0.2;
extern double SL6_1=4.1;
extern double BL1_2=0.382;
extern double Lots1_B=0.1;
extern double BL2_2 =0.691;
extern double BL3_2 =1.1;
extern double Lots2_B=0.1;
extern double BL4_2=1.6;
extern double Lots3_B=0.1;
extern double BL5_2=2.51;
extern double Lots4_B=0.6;
extern double BL6_2=4.1;
datetime Time0;
double point;
int digits,Q;
extern int MagicNumber=2533;
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits<4){point=0.01;digits=2;}
else{point=0.0001;digits=4;}
return(0);
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS deinitialization function |
//+------------------------------------------------------------------+
void deinit() {
Comment("");
}
//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS Start function |
//+------------------------------------------------------------------+
int Orderscnt(int type){
int cnt=0;
for(int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderType()==type)
{
cnt++;
}
}
return(cnt);
}
int start()
{
Comment("Programmed by MR.dollar"+"\n"+"Idea Created by Hamada Acc"+"\n"+"منتدى المتداول العربي"+"\n"+"www.arabictrader.com/vb");
double D6=iOpen(Symbol(),PERIOD_D1,6);
double D5=iOpen(Symbol(),PERIOD_D1,5);
double D4=iOpen(Symbol(),PERIOD_D1,4);
double D3=iOpen(Symbol(),PERIOD_D1,3);
double D2=iOpen(Symbol(),PERIOD_D1,2);
double D1=iOpen(Symbol(),PERIOD_D1,1);
double D0=iOpen(Symbol(),PERIOD_D1,0);
double DNL0 = MathLog ( D1 /D0);
double DNL1 = MathLog ( D1 /D2);
double DNL2 = MathLog ( D2 /D3);
double DNL3 = MathLog ( D3 /D4);
double DNL4 = MathLog ( D4 /D5) ;
double DNL5 = MathLog ( D5 /D6);
double SQR0 = DNL0 * DNL0;
double SQR1 = DNL1 * DNL1;
double SQR2 = DNL2 * DNL2;
double SQR3 = DNL3 * DNL3;
double SQR4 = DNL4 * DNL4;
double SQR5 = DNL5 * DNL5;
double DNLAVG = ( DNL0 + DNL1 + DNL2 + DNL3 + DNL4 +DNL5 ) / 7;
double SQRAVG = ( SQR0 + SQR1 + SQR2 +SQR3 +SQR4 + SQR5 ) / 7;
double CHR = SQRAVG - (DNLAVG * DNLAVG);
double Z= MathSqrt(CHR)*D0;
double SL1 = D0+(SL1_1* Z);
double SL2 = D0+(SL2_1* Z);
double SL3 = D0+(SL3_1* Z);
double SL4 = D0+(SL4_1* Z);
double SL5 = D0+(SL5_1* Z );
double SL6 = D0+(SL6_1* Z);
double BL1 = D0-(BL1_2* Z );
double BL2 = D0-(BL2_2* Z );
double BL3 = D0-(BL3_2* Z );
double BL4 = D0-(BL4_2* Z );
double BL5 = D0-(BL5_2* Z );
double BL6 = D0-(BL6_2* Z);
if(Orderscnt(OP_BUY)>0&&DeleteOppositePending)
{
DeletePendingOrders(OP_SELLLIMIT);
}
if(Orderscnt(OP_SELL)>0&&DeleteOppositePending)
{
DeletePendingOrders(OP_BUYLIMIT);
}
double SL,TP;
if(Time0!=iTime(Symbol(),1440,0)&&iVolume(Symbol(),1440,0)<2)
{
while(Orderscnt(OP_SELLLIMIT)>0)DeletePendingOrders(OP_SELLLIMIT);
while(Orderscnt(OP_BUYLIMIT)>0)DeletePendingOrders(OP_BUYLIMIT);
OrderSend(Symbol(),OP_BUYLIMIT,Lots1_B,NormalizeDouble(BL1,Digits),3*Q,BL6,SL1,"MR.dollar EA",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_BUYLIMIT,Lots2_B,NormalizeDouble(BL3,Digits),3*Q,BL6,BL1,"MR.dollar EA",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_BUYLIMIT,Lots3_B,NormalizeDouble(BL4,Digits),3*Q,BL6,BL2,"MR.dollar EA",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_BUYLIMIT,Lots4_B,NormalizeDouble(BL5,Digits),3*Q,BL6,BL4,"MR.dollar EA",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_SELLLIMIT,Lots1_S,NormalizeDouble(SL1,Digits),3*Q,SL6,BL1,"MR.dollar EA",MagicNumber,0,Red);
OrderSend(Symbol(),OP_SELLLIMIT,Lots2_S,NormalizeDouble(SL3,Digits),3*Q,SL6,SL1,"MR.dollar EA",MagicNumber,0,Red);
OrderSend(Symbol(),OP_SELLLIMIT,Lots3_S,NormalizeDouble(SL4,Digits),3*Q,SL6,SL2,"MR.dollar EA",MagicNumber,0,Red);
OrderSend(Symbol(),OP_SELLLIMIT,Lots4_S,NormalizeDouble(SL5,Digits),3*Q,SL6,SL4,"MR.dollar EA",MagicNumber,0,Red);
PlaySound("Alert.wav");
}
}
//+------------------------------------------------------------------+
void DeletePendingOrders(int type)
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==type)
{
OrderDelete(OrderTicket());
}
}
}
}
//+---------------------------------------------------------------------------------+
أنا شغال بإكسيبرت يعتمد على مؤشر يرسم مستويات متجددة كل يوم وكنت عايز الكود اللى يخلى الاكسبيرت يعلق الاوامر بعد الساعة 12 مساءً مع بداية اليوم الجديد ولا يلتفت للمستويات القديمة
ثانيا وضع امكانية اغلاق الصفقات المعلقة الخاسرة بعد نهاية اليوم ترو اور فلص
وجزاكم الله خيرا