مازلت انتظر في الاخ وضاح
Printable View
مازلت انتظر في الاخ وضاح
السلام عليكم
اريد ان اغير بالكود التغير التالي:
عندما نصل الى الهدف الصفقة الجديدة التي تدخل الحساب تكون بنفس اتجاه الصفقة التي اغلقناها (بالهدف) .
انا غيرت بالكود ولكنني للاسف عنما عملت باك تيست لفترة سنة لم يضاعف العقود عندما يصل الستوب لوز .
والغريبة باك تيست لشهر يعمل مضاعفة عقود :yikes3:
كود PHP:
#property copyright "Idea by Supaplex Programing by waddah attar"
#property link "[email protected]"
extern int TakeProfit=100;
extern int StopLoss=100;
extern double FirstLots=2;
extern bool OpenBuy=true, help=true;
extern int LotsDouble=2;
extern int MagicNumber = 2008;
int Ticket1,Ticket2;
int t1,t2,gT1,gT2;
int handle;
int init()
{
Comment("Waddah Attar Supaplex");
return(0);
}
int deinit()
{
Comment("");
return(0);
}
int start()
{
Procces_1();
return(0);
}
//****************************************************************************************************************
void OpenBUYOrder(double Lots,int Magic)
{
double sl,tp;
sl=Ask-StopLoss*Point;
tp=Ask+TakeProfit*Point;
if (Lots==FirstLots)
{
Ticket1=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,sl,tp,"",Magic,0,Green);
if(Ticket1>0)
{
gT1=0;
while(gT1==0)
{
Sleep(5000);
gT1=OrderSend(Symbol(),OP_SELLSTOP,Lots,sl,3,sl+StopLoss*Point,sl-TakeProfit*Point,"",Magic,0,Green);
Sleep(5000);
}
gT2=0;
while(gT2==0)
{
Sleep(5000);
gT2=OrderSend(Symbol(),OP_SELLSTOP,Lots,sl,3,sl+StopLoss*Point,sl-(TakeProfit*Point),"",Magic,0,Green);
Sleep(5000);
}
}
else
{
Alert("??? ???? "," Err = ",GetLastError()," Price = ",Ask," Lots = ",Lots);
}
}
}
void OpenSELLOrder(double Lots,int Magic)
{
double sl,tp;
sl=Bid+StopLoss*Point;
tp=Bid-TakeProfit*Point;
if (Lots==FirstLots)
{
Ticket1=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,sl,tp,"",Magic,0,Red);
if(Ticket1>0)
{
gT1=0;
while(gT1==0)
{
Sleep(5000);
gT1=OrderSend(Symbol(),OP_BUYSTOP,Lots,sl,3,sl-StopLoss*Point,sl+TakeProfit*Point,"",Magic,0,Green);
Sleep(5000);
}
gT1=0;
while(gT2==0)
{
Sleep(5000);
gT2=OrderSend(Symbol(),OP_BUYSTOP,Lots,sl,3,sl-StopLoss*Point,sl+(TakeProfit*Point),"",Magic,0,Green);
Sleep(5000);
}
}
else
{
Alert("??? ??? "," Err = ",GetLastError()," Price = ",Bid," Lots = ",Lots);
}
}
}
int Procces_1()
{
double slot,ssl,stp,bw;
if (MyRealOrdersTotal(MagicNumber)==0 && MyPendingOrdersTotal(MagicNumber)==2)
{
OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
if (OrderType()==OP_BUYSTOP)
{
help=false;
}
else
{
help=true;
}
DeletePendingOrders(MagicNumber);
return(0);
}
if (MyRealOrdersTotal(MagicNumber)==0 && MyPendingOrdersTotal(MagicNumber)==0)
{
if (help)
{
OpenBUYOrder(FirstLots,MagicNumber);
}
else
{
OpenSELLOrder(FirstLots,MagicNumber);
}
return(0);
}
if (MyRealOrdersTotal(MagicNumber)==2 && MyPendingOrdersTotal(MagicNumber)==0)
{
OrderSelect(t1,SELECT_BY_TICKET,MODE_TRADES);
slot=OrderLots()*LotsDouble;
ssl=OrderStopLoss();
stp=OrderTakeProfit();
if (OrderType()==OP_BUY)
{
gT1=0;
while(gT1==0)
{
Sleep(5000);
gT1=OrderSend(Symbol(),OP_SELLSTOP,slot,ssl,3,ssl+StopLoss*Point,ssl-TakeProfit*Point,"",MagicNumber,0,Green);
Sleep(5000);
}
gT2=0;
while(gT2==0)
{
Sleep(5000);
gT2=OrderSend(Symbol(),OP_SELLSTOP,slot,ssl,3,ssl+StopLoss*Point,ssl-(TakeProfit*Point),"",MagicNumber,0,Green);
Sleep(5000);
}
}
if (OrderType()==OP_SELL)
{
gT1=0;
while(gT1==0)
{
Sleep(5000);
gT1=OrderSend(Symbol(),OP_BUYSTOP,slot,ssl,3,ssl-StopLoss*Point,ssl+TakeProfit*Point,"",MagicNumber,0,Green);
Sleep(5000);
}
gT2=0;
while(gT2==0)
{
Sleep(5000);
gT2=OrderSend(Symbol(),OP_BUYSTOP,slot,ssl,3,ssl-StopLoss*Point,ssl+(TakeProfit*Point),"",MagicNumber,0,Green);
Sleep(5000);
}
}
}
return(0);
}
int MyRealOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
t1=-1;
t2=-1;
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY || OrderType()==OP_SELL))
{
if (t1==-1)
{
t1=OrderTicket();
}
else
{
if (t2==-1)
{
t2=OrderTicket();
}
}
c++;
}
}
return(c);
}
int MyPendingOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP))
{
c++;
}
}
return(c);
}
int DeletePendingOrders(int Magic)
{
int total = OrdersTotal();
for (int cnt = total - 1; cnt >= 0; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP))
{
OrderDelete(OrderTicket());
}
}
return(0);
}
يبدو انه لا جدوى من انتظار الاخ وضاح لتصحيح الخطأ الذي اخبرته عنه
رغم انه وعدني بتصحيحه
الغايب عذره معه
لكن انا في امس الحاجة حقيقة لتصحيح الخطأ
الله الله الله
فعلا هذا المنتدى من دون رجال مثل الاخ وضاح ليس له اي ذوق
الله يخليك ويهنيك ويسعد اولادك ...قولو..................امين
تفضل أخي هذا هو الاكسبيرت الجديد بعد التعديل
شكرا جزيلا اخي وضاح
ودعواتنا لك بالتوفيق والنجاح
اخواني الكرام مشكورين على مجهوداتكم الجبارة
لدي طلب عندكم ياريت تعديل الاكيبريت ودمجه مع استراتيجية تقاطع الماكد
زجدت نفس الموضوع اعتقده للاخ الفاضل وجدي ولكنه يضاعف في اتجاه الصفقة المفتوحة
الى حين تحقق الارتداد ما اريده هو هذا الاكسبريت واضافة شرط تقاطع الماكد لدخول الصفقة ان
لم يتحقق الهدف تبدئ المصاعفات في الاتجاه المعاكس وهكذا
تحياتي لكم جميعا
اخي الغالي اشكرك على سرعة ردك المطلوب كالتالي
بيع :
if (iMACD(14,26,9,MODE_MAIN,0)>0 and iMACD(14,26,9,MODE_MAIN,0)>iMACD(14,26,9,MODE_MAIN ,1))
شراء :
if (iMACD(14,26,9,MODE_MAIN,0)<0 and iMACD(14,26,9,MODE_MAIN,0)<iMACD(14,26,9,MODE_MAIN ,1))
واذا لم تحقق الهدف تبدا المضاعفات بيع شراء و هكذا كل صفقة معاكسة للاخرى كما في الاكسبريت
دون ادنى تغيير
وتقبل فائق عبارات التقدير اخي وضاح
استاذي وضاح لازلت انتظر ردك الكريم ... اتمنى ان تكون الفكرة وضحت تمام
:eh_s(7)::eh_s(7): تحياتي :eh_s(7)::eh_s(7):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~
لو جعلنا الاهداف متغيرة , ممكن نكسر قنوات التذبذب , ونقلل المضاعفات
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~