عرض مشاركة واحدة
قديم 01-04-2013, 12:41 AM   المشاركة رقم: 128
الكاتب
imaddine
عضو نشيط

البيانات
تاريخ التسجيل: Dec 2012
رقم العضوية: 12839
المشاركات: 202
بمعدل : 0.05 يوميا

الإتصالات
الحالة:
imaddine غير متواجد حالياً
وسائل الإتصال:

كاتب الموضوع : MOVING_AVERAGE المنتدى : منتدى المؤشرات و الاكسبيرتات
افتراضي رد: دورة تعليم برمجة الاكسبريت

اخ موفنج اعلم اني اتعبتك معي لكن رغم اني قمت بحذف
دالة التريلنج لكن لم تحل المشكلة بقي يفتح 5 صفقات
مع كل اشارة ولم افهم لما 5 صفقات رغم اني غيرة الدالة
وجعلتها تفتح صفقة واحدة فقط دون اي متغير خارجي يتحكم
في عدد الصفقات وايضا يقوم بتفعيل مع اول اشارة
ولا يغلق الصفقة رغم اني وضعت دالة اغلاق الصفقة في
حال وجود اشارة عكسية
[PHP]extern double Lots = 0.1;
double point;
int digits,Q;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MagicNumber=1234;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;

}
if(Digits==4)
{
point=0.0001;

}
if(Digits==3)
{
point=0.01;

}
if(Digits==5)
{
point=0.0001;
}
}
int magic=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);
}
//----

//----

//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
Comment(""+"\n"+""+"\n"+"/");

//////////////////////////////////////////////////

double indigreen=iCustom(0,0,"imad",1,1);
double indired=iCustom(0,0,"imad",0,1);
دالة استدعاء المؤشر
//////////////////////////////////////////////////

double TP,SL;

if(indigreen<5000&&LastOrder()>0&&orderstotal()<=1 ) {
{CloseSellOrders();}
دالة فتح صفقة مع جعل صفقة واحدة فقط + امر اغلاق الصفقة في الاشارة العكسية

//Buy
if(TakeProfit==0){TP=0;}
else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",Magi cNumber,0,Blue);

}

//////////////////////////////////////////////////
if(indired<5000&&LastOrder()!=1&&orderstotal()<=1) {
{CloseBuyOrders();}

دالة فتح صفقة مع جعل صفقة واحدة فقط + امر اغلاق الصفقة في الاشارة العكسية
//Sell
if(TakeProfit==0){TP=0;}
else{TP=Bid-TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Bid+StopLoss*point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"",Mag icNumber,0,Red);

}

return(0);
}
//+------------------------------------------------------------------+



دالة اغلاق صفقة الشراء في حال ظهور اشارة معاكسة
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);
}

}

دالة لجعل الاكسبيرت يفتح الصفقات بتسلسل
اي لا يفتح صفقتين متتاليتين بيع او شراء

int LastOrder(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
return(OrderType());
}
}
return(2);
}
[/PHP]



عرض البوم صور imaddine  
رد مع اقتباس
  #128  
قديم 01-04-2013, 12:41 AM
imaddine imaddine غير متواجد حالياً
عضو نشيط
افتراضي رد: دورة تعليم برمجة الاكسبريت

اخ موفنج اعلم اني اتعبتك معي لكن رغم اني قمت بحذف
دالة التريلنج لكن لم تحل المشكلة بقي يفتح 5 صفقات
مع كل اشارة ولم افهم لما 5 صفقات رغم اني غيرة الدالة
وجعلتها تفتح صفقة واحدة فقط دون اي متغير خارجي يتحكم
في عدد الصفقات وايضا يقوم بتفعيل مع اول اشارة
ولا يغلق الصفقة رغم اني وضعت دالة اغلاق الصفقة في
حال وجود اشارة عكسية
[PHP]extern double Lots = 0.1;
double point;
int digits,Q;
extern int StopLoss=0;
extern int TakeProfit=0;
extern int MagicNumber=1234;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits==2)
{
point=0.01;

}
if(Digits==4)
{
point=0.0001;

}
if(Digits==3)
{
point=0.01;

}
if(Digits==5)
{
point=0.0001;
}
}
int magic=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);
}
//----

//----

//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
Comment(""+"\n"+""+"\n"+"/");

//////////////////////////////////////////////////

double indigreen=iCustom(0,0,"imad",1,1);
double indired=iCustom(0,0,"imad",0,1);
دالة استدعاء المؤشر
//////////////////////////////////////////////////

double TP,SL;

if(indigreen<5000&&LastOrder()>0&&orderstotal()<=1 ) {
{CloseSellOrders();}
دالة فتح صفقة مع جعل صفقة واحدة فقط + امر اغلاق الصفقة في الاشارة العكسية

//Buy
if(TakeProfit==0){TP=0;}
else{TP=Ask+TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Ask-StopLoss*point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"",Magi cNumber,0,Blue);

}

//////////////////////////////////////////////////
if(indired<5000&&LastOrder()!=1&&orderstotal()<=1) {
{CloseBuyOrders();}

دالة فتح صفقة مع جعل صفقة واحدة فقط + امر اغلاق الصفقة في الاشارة العكسية
//Sell
if(TakeProfit==0){TP=0;}
else{TP=Bid-TakeProfit*point;}
if(StopLoss==0){SL=0;}
else{SL=Bid+StopLoss*point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"",Mag icNumber,0,Red);

}

return(0);
}
//+------------------------------------------------------------------+



دالة اغلاق صفقة الشراء في حال ظهور اشارة معاكسة
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);
}

}

دالة لجعل الاكسبيرت يفتح الصفقات بتسلسل
اي لا يفتح صفقتين متتاليتين بيع او شراء

int LastOrder(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
return(OrderType());
}
}
return(2);
}
[/PHP]




رد مع اقتباس