اف اكس ارابيا..الموقع الرائد فى تعليم فوركس 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=29378)

م. عبدالرحمن وردة 19-04-2013 08:57 PM

رد: دورة تعليم برمجة الاكسبريت
 
اقتباس:

المشاركة الأصلية كتبت بواسطة MOVING_AVERAGE (المشاركة 498465)
حالة الصفقة يعني لو كان يعني اضهار ربح الصفقة الماضية

سنستخدم الدالة التالية خارج الدالة ستارت

[PHP]
double pofet_HISTORY(){
double pr=0;
for(int p=0;p<OrdersHistoryTotal();p++){
OrderSelect(p,SELECT_BY_POS,MODE_HISTORY);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
pr=OrderProfit();
}
return(pr);
}
[/PHP]

سنكتب داخل الدالة ستارت الامر

[PHP]
Comment(pofet_HISTORY());
[/PHP]

يضهر لنا هل ربح او خسارة الصفقة الماضية

كيف اعرف ربح او خسارة

اذا مانت النتيجة موجبة فهو ربح ان كانت سالبة فهو خسارة

اقتباس:

المشاركة الأصلية كتبت بواسطة MOVING_AVERAGE (المشاركة 498466)
ايقاف البرنامج

اولا لكي نحصل علي الرصيد نستخدم التالي

[PHP]
AccountBalance()
[/PHP]

لكي نتحكم في عمل الاكسبريت اعتماد علي الرصيد

نضع من شروط فتح الصفقات

[PHP]
if(AccountBalance()>50)
[/PHP]

ألف شكر أخي "موفنج افرج" , أجبت فأحسنت :)

abu ayoub 21-04-2013 09:18 PM

رد: دورة تعليم برمجة الاكسبريت
 
السلام عليكم ورحمة الله وبركاته

أتابع معكم ان شاء الله، أنا جديد في هذا المجال رغم أن عملي كمبرمج برامج إدارية. بدأت منذ اسبوع تعلم فوركس واعجبني كثير هذا الموقع.


MOVING_AVERAGE 22-04-2013 01:42 PM

رد: دورة تعليم برمجة الاكسبريت
 
اقتباس:

المشاركة الأصلية كتبت بواسطة abu ayoub (المشاركة 499881)
السلام عليكم ورحمة الله وبركاته

أتابع معكم ان شاء الله، أنا جديد في هذا المجال رغم أن عملي كمبرمج برامج إدارية. بدأت منذ اسبوع تعلم فوركس واعجبني كثير هذا الموقع.


بالتوفيق لك اخي

وستجد هذه اللغة في غاية البساطة ان كنت اصلا مبرمج بلغة اخري

ولا تتردد في طرح اي استفسار

هامور الصغير 23-04-2013 09:39 PM

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

imaddine 24-04-2013 02:03 AM

رد: دورة تعليم برمجة الاكسبريت
 
استاذ موفنج والله ممكن مساعدة في طريقة اضافت المضاعفات
فقد قمت ببرمجت اكسبيرت على رينكو يعمل على نفس
طريقة التي برمجت بها اكسبيرت الاخ بدوي اي انه يفتح صفقة
ولا يغلقها لا عند اغلاق شمعة عكسية يغلقها ويدخل مع اتجاه
الشمعة الجديدة وبالنسبة للاضافة ارده ان لا يغلق الصفقة الخاسرة
في الاشارة العكسية بل يضاعف اللوت +1 فقط اي 1 2 3 4 5 6 7
حتى يخرج من التذبذب
بمعنى انه لو كانت شمعة عكسية يراقب الصفقة لو كانت رابحة
يغلق الصفقة ويبدا من جديد لكن لو كانت خاسرة يحافظ عليها
ويفتح صفقة جديدة عكسية مثلا لوت البداية 0.10 اذا الصفقة الجديدة
0.20 ويبقى على هذا حتى تظهر اشارة عكسية ويكون مجموع الصفقات
موجب يغلق جميع الصفقات ويبدا من جديد

MOVING_AVERAGE 24-04-2013 12:04 PM

رد: دورة تعليم برمجة الاكسبريت
 
اقتباس:

المشاركة الأصلية كتبت بواسطة imaddine (المشاركة 501001)
استاذ موفنج والله ممكن مساعدة في طريقة اضافت المضاعفات
فقد قمت ببرمجت اكسبيرت على رينكو يعمل على نفس
طريقة التي برمجت بها اكسبيرت الاخ بدوي اي انه يفتح صفقة
ولا يغلقها لا عند اغلاق شمعة عكسية يغلقها ويدخل مع اتجاه
الشمعة الجديدة وبالنسبة للاضافة ارده ان لا يغلق الصفقة الخاسرة
في الاشارة العكسية بل يضاعف اللوت +1 فقط اي 1 2 3 4 5 6 7
حتى يخرج من التذبذب
بمعنى انه لو كانت شمعة عكسية يراقب الصفقة لو كانت رابحة
يغلق الصفقة ويبدا من جديد لكن لو كانت خاسرة يحافظ عليها
ويفتح صفقة جديدة عكسية مثلا لوت البداية 0.10 اذا الصفقة الجديدة
0.20 ويبقى على هذا حتى تظهر اشارة عكسية ويكون مجموع الصفقات
موجب يغلق جميع الصفقات ويبدا من جديد

اولا اخي لكي تفتح صفقة بلوت عادي تحتاج الي شروط

وصفقة بلوت مضاعة تحتاج الي شروط مغايرة

ماهي الشروط التي تفتح علي اساسها اللوت المضاعف لكي لجيبك

لان الشروط هي الاهم في البرمجة

imaddine 24-04-2013 03:05 PM

رد: دورة تعليم برمجة الاكسبريت
 
اقتباس:

المشاركة الأصلية كتبت بواسطة MOVING_AVERAGE (المشاركة 501110)
اولا اخي لكي تفتح صفقة بلوت عادي تحتاج الي شروط

وصفقة بلوت مضاعة تحتاج الي شروط مغايرة

ماهي الشروط التي تفتح علي اساسها اللوت المضاعف لكي لجيبك

لان الشروط هي الاهم في البرمجة

الشروط هي نفس الشروط التي ذكرتها ان يقوم
بفتح صفقة بعد شمعة معاكسة وقد ارفقت لك مثال
لتوضيح الفكرة اكثر داخل المربع المرسوم
بعد اغلاق شمعة نازلة يخرج من البيع ويدخل شراء
ونفرض ان لوت 0.10 ما حصل ان الشمعة التالية اغلقت
نازلة اي صفقة خاسرة هنا لا يقوم باغلاق الصفقة الخاسرة
بل يتركها مفتوحة ويدخل بصفقة جديدة بيع بلوت 0.20
الشمعة التي بعدها صاعدة اي مجموع الصفقتين خاسر
لا يغلقهما ويدخل بصفقة ثالث شراء بلوت 0.3
بمعنى دالة تراقب الصفقات المفتوحة لو كانت رابحة
تغلق كل الصفقات في الانعاكس ولو كانت سالبة
تحافظ وتفتح صفقة جديدة +1 عن اخر لوت
http://www.fx-arabia.com/vb/uploaded...1366805117.png

للاسف انا لم اجد موضوع برمجي يتكلم على طريقة
البرمجة بالمضاعفات

imaddine 25-04-2013 12:55 AM

رد: دورة تعليم برمجة الاكسبريت
 
استاذ موفنج اعلم انك لا تمتلك الكثير من
الوقت نظرا لكثرت الطلبات فالله يكون في عونك
لكن لو سمحت ممكن ان تعدل على هذا الكود
وساقوم باطلاع عليه لدراسته من جديد لو سمحت
[PHP]double TP,SL;

if(TrailingStop>0)MoveTrailingStop();
//////////////////////////////////////////////////
double openprice,lots,newLot;int s;
if(UseMultiplier){
for(s=0;s<OrdersTotal();s++){
OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber&&OrderType()==OP_BUY){
openprice=OrderOpenPrice();lots=OrderLots();
}
}{

هنا قمت بجعل المضاعف + وكمتغير خاجي جعلت Multiplier =1
حتى تكون المضاعفات 1 2 3 4 5 6
newLot=Multiplier+lots;
if(Ask<=openprice-Step*point&&orderstotal()>=1){
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;}

OrderSend(Symbol(),OP_BUY,newLot,NormalizeDouble(A sk,digits),3,0,TP," ",MagicNumber,0,Blue);

}
}
for(s=0;s<OrdersTotal();s++){
OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber&&OrderType()==OP_SELL){
openprice=OrderOpenPrice(); lots=OrderLots();
}
}{

newLot=Multiplier+lots;
if(Bid>=openprice+Step*point&&orderstotal()>=1){
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,newLot,NormalizeDouble( Bid,digits),3,0,TP,"",MagicNumber,0,Red);

}
}
}


//////////////////////////////////////////////////
static datetime NewBar;
if(orderstotal()==0)

{
// close orders
}

double Cl1=iClose(0,0,1);
double Cl2=iClose(0,0,2);

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

if(NewBar<Time[0])

if(Cl2<Cl1)
{CloseSellOrders();}

if(Cl2>Cl1)
{CloseBuyOrders();}

if(profit()>=ProfitTarget){
while(orderstotal()>0){CloseSellOrders();CloseBuyO rders();}
هنا المشكلة الاولى كيف اجعله يحافظ على الصفقات الخاسرة
دون اغلاقها
}
{
// close orders
}
//////////////////////////////////////////////////

if(Cl2<Cl1) {
if(orderstotal()<MaxTrades&&Time0!=Time[0])
{
{
// open orders
Time0=Time[0];
}
//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(Cl2>Cl1){
if(orderstotal()<MaxTrades&&Time0!=Time[0])
{
{
// open orders
Time0=Time[0];
}
//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);
}
}
}
}
void MoveTrailingStop()
{

for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOp enPrice()+TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)<Normal izeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blu e);

}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid+TrailingSte p*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))
{
if((NormalizeDouble(OrderStopLoss(),digits)>(Norma lizeDouble(Ask+TrailingStop*point,digits)))||(Orde rStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Ask+TrailingStop*point,digits),OrderTakeP rofit(),0,Red);

}
}
}
}
}
}

اعتمدت هنا على دالة اغلاق على ربح معين لكن لو امكن
جعل الطريقة كما شرحتها يخرج عند اشارة عكسية مهما كان
الربح كبير او صغير او حتى على نقطة التعادل
double profit(){
double c;
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
c=c+OrderProfit();
}
}
return(c);
}
[/PHP]

طبعا ان يحافظ على الصفقات الخاسرة ويضاعف اللوت
1 2 3 4 5 اي كل مرة +1 وعندما تكون الاشارة عكسية
والمحصلة ربح يغلق كل الصفقات ويعيد من جديد
وبارك الله فيك

abou fares 01-05-2013 05:49 PM

رد: دورة تعليم برمجة الاكسبريت
 
سؤال للاساتذ موفينج لدي اكسبيرت احاول ان اتعلم البرمجة من خلاله ولكن لدي مشكلة لم اجد لها حل وارجوا منك اعطائي المعادلة اللازمة : المشكلة هي عند تحقق شروط الدخول للصفقة شراء او بيع الاكسبيرت يفتح صفقة وعند وصول الصفقة للهدف لا يتوقف الاكسبيرت عن فتح الصفقات لان مازالت جميع الشروط متحققة للبيع او للشراء ارجوا منكم المساعدة وشكرا .

abou fares 04-05-2013 03:11 PM

رد: دورة تعليم برمجة الاكسبريت
 
للتذكير


الساعة الآن 04:50 PM

Powered by vBulletin® Copyright ©2000 - 2025

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