السلام عليكم ورحمة الله
اليكم اكسبيرت فكرته بسيطة يعتمد على خط الكوجن للايشيموكو وهو الخط الازرق.
حيث يقوم بالشراء عند افتتاح شمعة جديدة فوق الكوجن بعقد واحد فقط وفي حال ظهور اشارة عكسية اي افتتاح شمعة تحت الكوجن يغلق عقد الشراء ويفتح عقد واحد بيع الى ان يتحقق الهدف او تظهر اشار عكسية تكون هي الستبو لوز.
وبعد مراجعة للكود وتشغيل لمدة زمنية بسيطة اشتغل عادي لكن الغريب بعد فترة يصير يشتغل حسب المزاج يعني مرات يعطي اشار ة شراءء ولا يشتري او بيع ولا بيع او اشارة عكسية ولا يغلق رغم انه اشتغل لفترة واثبت ان الكود
المتغيرات maxbuy وmaxsell لجعل الاكسبرت يفتح صفقة واحدة فقط وعدم تتالي فتح صفقات باستمرار تحقق الشرط. صحيح---الاكسبرت مرفق---
كود:
//+------------------------------------------------------------------+
//| WAHAAB.mq4 |
//| |kwahab
//| kwahab
//+------------------------------------------------------------------+
#property copyright "kwahab"
#property link "WWW.arabictrader.COM"
extern string basmala = "bismi allah";
extern double Lots = 0.1;
extern int TakeProfit = 1;
extern int MagicNumber = 2533;
bool maxbuy=0;
bool maxsell=0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
Comment ("BY kWAHAB");
/////////////
double ichi1,SL,TP;
ichi1 = iIchimoku (NULL,0,9,26,52,MODE_KIJUNSEN,1);
////////////////////////////////////////////////////
if (Open[0]>ichi1&&maxbuy==0){ //شرط الشراء افتتاح الشمعة الحالية فوق الكوجن+متغير الشراء متاح
CloseSellOrders(); //اغلاق عقود البيع
TP=Ask+TakeProfit*Point;
if (orderstotal()<1){
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"wahab",MagicNumber,0,Blue);
maxbuy=1; //هنا الشراء يصبح مقفل ويفتح بعد امر البيع بالاسفل
maxsell=0; // قفل البيع صار مفتوح
}
}
/////////////////////////////////////////////////////
if (Open[0]<ichi1&&maxsell==0){ //شرط البيع افتتاح شمعة الحالية تحت الكوجن+قفل البيع مفتوح
CloseBuyOrders(); //اغلاق اوامر الشراء
TP=Bid-TakeProfit*Point;
if (orderstotal()<1){
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"wahab",MagicNumber,0,Red);
maxsell=1; // هنا البيع يفقل ويفتح فوق تحت امر الشراء
maxbuy=0; // قفل الشراء اصبح مفتوح
}
}
//----
return(0);
}
/////////////////////////////////////////////////////////////////////
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
//////////////////////////////////////////////////// ///////////////////////////////////////////////
void CloseBuyOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
}
}
}
}
void CloseSellOrders()
{
for (int cnt = 0 ; cnt < OrdersTotal() ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
{
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
}
}
}
}
/////
.
انا استعملت هنا المتغيرات maxbuy و maxsell كاقفال للشراء والبيع
اي اذا كان كل منها يساوي 0 فالعملية متاحة وتقفل ب1
وكما قلت بشتغل لفترة ثم تحدث فيه اخطاء كما ذكرت واريد ان اضيف اليه الامر التالي:
-اذا كانت الصفقة السابقة خاسرة يفتح الصفقة المقبلة بلوت مضاعف
وشكرا جزيلا لك الاخ دولار والاخوة الكرام