• 3:46 صباحاً




أسئلة فى البرمجة

إضافة رد
Like Tree1Likes

أدوات الموضوع
الصورة الرمزية simous
عضو جديد
الصورة الرمزية simous
 
تاريخ التسجيل: Aug 2010
العمر: 33
المشاركات: 52
خبرة السوق: 6 شهور الى سنة
معدل تقييم المستوى: 14
simous is on a distinguished road
افتراضي رد: أسئلة فى البرمجة
11#
13 - 04 - 2013, 03:13 AM
السؤال الثالث:

كيف يمكن أخبار الأكسبرت أن يقوم بأغلاق كل العقود المفتوحة عن طريقه عند الوصول الى أجمالى ايكويتى موجب بالنقاط بحيث يمكن تحديد عدد نقاط معين يغلق عنده.

التوقيع



simous غير متواجد حالياً  
رد مع اقتباس

الصورة الرمزية سمير محمد ارمان
مشرف سابق
الصورة الرمزية سمير محمد ارمان
 
تاريخ التسجيل: Nov 2009
المشاركات: 33,660
معدل تقييم المستوى: 48
سمير محمد ارمان will become famous soon enough
افتراضي رد: أسئلة فى البرمجة
12#
13 - 04 - 2013, 12:37 PM
اقتباس:
المشاركة الأصلية كتبت بواسطة simous مشاهدة المشاركة
السؤال الثالث:

كيف يمكن أخبار الأكسبرت أن يقوم بأغلاق كل العقود المفتوحة عن طريقه عند الوصول الى أجمالى ايكويتى موجب بالنقاط بحيث يمكن تحديد عدد نقاط معين يغلق عنده.
السلام عليكم اخى الكريم
دالة بتحسب الربح
[PHP]double pofet(){

double pr;
for(int p=0;p<OrdersTotal();p++){
OrderSelect(p,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==MagicNumber&&OrderType()<=1 ){
pr=pr+OrderProfit();
}

}return(pr);
} [/PHP]


وفى دالة : int start
[PHP]if(pofet()>=win_USD)CloseDeleteAll();[/PHP]
ويتم وضع متغير خارجى
[PHP]extern int win_USD=25;[/PHP]
ويتم وضع دالة CloseDeleteAll خارج دالة int start
[PHP] void CloseDeleteAll()
{
int total = OrdersTotal();
for (int cnt = total-1 ; cnt >=0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
if(OrderMagicNumber()==MagicNumber&&OrderSymbol()= =Symbol()){
switch(OrderType())
{
case OP_BUY :
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInf o(OrderSymbol(),MODE_BID),0,Violet))
return(false);
}break;
case OP_SELL :
{
if(!OrderClose(OrderTicket(),OrderLots(),MarketInf o(OrderSymbol(),MODE_ASK),0,Violet))
return(false);
}break;
}


if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP || OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT)
if(!OrderDelete(OrderTicket()))
{
Print("Error deleting " + OrderType() + " order : ",GetLastError());
return (false);
} }
}
}
return (true);
}[/PHP]

بتوفيق
سمير محمد ارمان غير متواجد حالياً  
رد مع اقتباس
عضو نشيط جدا
 
تاريخ التسجيل: Sep 2012
المشاركات: 648
معدل تقييم المستوى: 12
Mohamed_Amr is on a distinguished road
افتراضي رد: أسئلة فى البرمجة
13#
13 - 04 - 2013, 01:31 PM
الله ينور اخى سمير
ولى سؤالين ازاى اخلى الاكسبريت عند اغلاق الصفقه يدوى
لايفتح صفقات اخرى الا بتحقق شروط الفتح
ثانيا كيف يمكن اضافه المضاعفات لاى اكسبريت
ثالثا كيف يمكن جعل الاكسبريت عند الوصول الى ربح معين
لايفتح صفقات فى نفس اليوم
واسف على الاطاله
خالص تحياتى
Mohamed_Amr غير متواجد حالياً  
رد مع اقتباس
الصورة الرمزية سمير محمد ارمان
مشرف سابق
الصورة الرمزية سمير محمد ارمان
 
تاريخ التسجيل: Nov 2009
المشاركات: 33,660
معدل تقييم المستوى: 48
سمير محمد ارمان will become famous soon enough
افتراضي رد: أسئلة فى البرمجة
14#
13 - 04 - 2013, 02:45 PM
اقتباس:
المشاركة الأصلية كتبت بواسطة Mohamed_Amr مشاهدة المشاركة
الله ينور اخى سمير
ولى سؤالين ازاى اخلى الاكسبريت عند اغلاق الصفقه يدوى
لايفتح صفقات اخرى الا بتحقق شروط الفتح
ثانيا كيف يمكن اضافه المضاعفات لاى اكسبريت
ثالثا كيف يمكن جعل الاكسبريت عند الوصول الى ربح معين
لايفتح صفقات فى نفس اليوم
واسف على الاطاله
خالص تحياتى
السلام عليكم اخى الكريم
اول سؤال
عند اغلاق الصفقة يدوية
وتوجد اشارة دخول من الاكسبيرت سوف يفتح صفقة اخرى
وان لايوجد اشارة دخول
لن يفتح صفقة
...........................................
السوال الثانى
يوجد اكثر من طريقة فى المضاعفات
هذه طريقة مضاعفات تعزيز
ويتم اضافة هذه السطور فى الدالة استارت
[PHP]for(int m=0;m<OrdersTotal();m++){
OrderSelect(m,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()== MagicNumber&&OrderType()==OP_BUY){
double openprice=OrderOpenPrice();double lot=OrderLots();
}
}



for(int n=0;n<OrdersTotal();n++){
OrderSelect(n,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()== MagicNumber&&OrderType()==OP_SELL){
double openprice_sell=OrderOpenPrice();lot=OrderLots();
}
}







if(Multiplication==true){
if(openprice-Ask>=step*pt&&ordestotal1_2(OP_BUY)>=1){
open(OP_BUY,lot*Multiplication_Mode,Ask,TakeProfit ,StopLoss) ;
}
if(Bid-openprice_sell>=step*pt&&ordestotal1_2(OP_SELL)>=1 ){
open(OP_SELL,lot*Multiplication_Mode,Bid,TakeProfi t,StopLoss) ;
}

}

[/PHP]

وهذه طريقة مضاعفات عكس الاتجاه
[PHP]for(int B=0;B<OrdersHistoryTotal();B++){
OrderSelect(B,SELECT_BY_POS,MODE_HISTORY);
if(OrderMagicNumber()==MagicNumber&&OrderSymbol()= =Symbol()&&OrderType()==OP_BUY){
double OrderStop = OrderStopLoss(); double Lots=OrderLots();
}
}

for(int s=0;s<OrdersHistoryTotal();s++){
OrderSelect(s,SELECT_BY_POS,MODE_HISTORY);
if(OrderMagicNumber()==MagicNumber&&OrderSymbol()= =Symbol()&&OrderType()==OP_SELL){
double OrderStops = OrderStopLoss(); double Lotss=OrderLots();
}
}

if(Multiplication==true){




if(pofetH()<0&&typeopen()==OP_BUY&&ordestotal1_2(O P_SELL)==0){
open(OP_SELL,Lots*Multiplication_Mode,OrderStop,Ta keProfit,StopLoss) ;
}









if(pofetH()<0&&typeopen()==OP_SELL&&ordestotal1_2( OP_BUY)==0){
open(OP_BUY,Lotss*Multiplication_Mode,OrderStops,T akeProfit,StopLoss) ;
}


}
[/PHP]
مع وضع دالة فتح الصفقات
خارج دالة int start
[PHP]int open(int ty,double lot,double prc,int pof,int sll)
{
double sl=0,tp=0;
color clr;
bool modi;
string T;double pr;
if(ty==OP_BUY || ty==OP_BUYSTOP || ty==OP_BUYLIMIT)
{
if(sll>0){sl=prc-(sll*pt);}else{sl=0;}
if(pof>0){tp=prc+(pof*pt);}else{tp=0;}
clr=Green;
T="Ask ";
pr=NormalizeDouble(Ask,Digits);
}
if(ty==OP_SELL || ty==OP_SELLSTOP || ty==OP_SELLLIMIT)
{
if(sll>0){sl=prc+(sll*pt);}else{sl=0;}
if(pof>0){tp=prc-(pof*pt);}else{tp=0;}
clr=Red;
T="Bid";
pr=NormalizeDouble(Bid,Digits);
}
int tik=OrderSend(Symbol()
,ty
,lot
,NormalizeDouble(prc,Digits)
,10
,0
,0
,"samir"
,MagicNumber
,0
,clr);
string t;
if(ty==OP_BUY)t="BUY";if(ty==OP_SELL)t="SELL";if(t y==OP_BUYSTOP)t="BUY STOP";if(ty==OP_SELLSTOP)t="SELL STOP";if(ty==OP_BUYLIMIT)t="BUY LIMIT";if(ty==OP_SELLLIMIT)t="SELL LIMIT";
if(tik>0)
{
if(tp>0 || sl>0)modi=OrderModify(tik,prc,NormalizeDouble(sl,D igits),NormalizeDouble(tp,Digits),0,CLR_NONE); else modi=true;
if(!modi){Print("Modify Err#= ",GetLastError()," ",Symbol()," ",Period()," Open Price= ",DoubleToStr(prc,Digits)," SL= ",DoubleToStr(sl,Digits)," Tp= ",DoubleToStr(tp,Digits));}
Print("Order Opened successfully " ,"Type ",t," LotSize ",lot," Price ",DoubleToStr(prc,Digits)," TP ",DoubleToStr(tp,Digits)," SL ",DoubleToStr(sl,Digits));
}
else
{
Print("OrderSend failed with error #",GetLastError(), " Type ",t," LotSize= ",lot," ",T,"Now= ",DoubleToStr(pr,Digits)," Price= ",DoubleToStr(prc,Digits)," TP= ",DoubleToStr(tp,Digits)," SL= ",DoubleToStr(sl,Digits)," Spread= ",MarketInfo(Symbol(),MODE_SPREAD));
}
//////
return(tik);

} [/PHP]
ويجب وضع هذه المتغيرات الخارجية
[PHP]extern string Multiplication_info = "0=1,2,3,4.... 1=1,2,3,5,8.... 2=1,2,4,8,16.... 3=1,3,9,27....";
extern int Multiplication_Mode = 2;
extern int step=10;
extern int MagicNumber=708;[/PHP]

السؤال الثالث
تستطيع بهذه الدالة تجعل الاكسبيرت يفتح صفقة واحدة فقط كل يوم او كل ساعة او كل اربعة ساعات
وتكون هذه الدالة خارج int start

[PHP]int exit_histo_day()
{
int c;
for (int cnt=0; cnt<OrdersHistoryTotal(); cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY) ;
if( OrderMagicNumber()== MagicNumber && OrderOpenTime()>=iTime(Symbol(),PERIOD_H1,0))
{
c++;
}
}
return(c);
}[/PHP]
ويتم وضع هذا الامر فوق امر فتح الصفقات
[PHP] if(exit_histo_day()+ordestotal1_2(OP_BUY)+ordestot al1_2(OP_SELL)==0){[/PHP]
ومعلومة هامة
كل هذه الدوال
من استاذى محمود عامر
تحياتى لك
سمير محمد ارمان غير متواجد حالياً  
رد مع اقتباس
عضو نشيط جدا
 
تاريخ التسجيل: Sep 2012
المشاركات: 648
معدل تقييم المستوى: 12
Mohamed_Amr is on a distinguished road
افتراضي رد: أسئلة فى البرمجة
15#
13 - 04 - 2013, 02:55 PM
اقتباس:
المشاركة الأصلية كتبت بواسطة سمير محمد ارمان مشاهدة المشاركة
السلام عليكم اخى الكريم
اول سؤال
عند اغلاق الصفقة يدوية
وتوجد اشارة دخول من الاكسبيرت سوف يفتح صفقة اخرى
وان لايوجد اشارة دخول
لن يفتح صفقة

كل هذه الدوال
من استاذى محمود عامر
تحياتى لك
تسلم استاذنا الحبيب سمير
بالنسبه للاغلاق اليدوى لايوجد حل بحيث لايفتح
صفقه الى اذا توفرت شروط الدخول مرة اخرى كذلك هل يمكن
جعل الاكسبريت لايفتح عند وضعه على الشارات الا اذا توفرت شروط
الدخول بعد وضعه على الشارت
واسف على الاطاله
تحياتى
Mohamed_Amr غير متواجد حالياً  
رد مع اقتباس
الصورة الرمزية سمير محمد ارمان
مشرف سابق
الصورة الرمزية سمير محمد ارمان
 
تاريخ التسجيل: Nov 2009
المشاركات: 33,660
معدل تقييم المستوى: 48
سمير محمد ارمان will become famous soon enough
افتراضي رد: أسئلة فى البرمجة
16#
13 - 04 - 2013, 03:01 PM
اقتباس:
المشاركة الأصلية كتبت بواسطة Mohamed_Amr مشاهدة المشاركة
تسلم استاذنا الحبيب سمير
بالنسبه للاغلاق اليدوى لايوجد حل بحيث لايفتح
صفقه الى اذا توفرت شروط الدخول مرة اخرى كذلك هل يمكن
جعل الاكسبريت لايفتح عند وضعه على الشارات الا اذا توفرت شروط
الدخول بعد وضعه على الشارت
واسف على الاطاله
تحياتى
اخى الكريم
تكون هذه هى من بداية عمل الاكسبيرت
فى فتح الصفقة
ونقول مثلا
اكسبيرت يعمل على مؤشر الموفينج
وتعمل على طريقة التقاطع
لوتم اغلاق الصفقة ولايوجد اشارة تقاطع
لن يفتح صفقة حتى ياتى اشارة تقاطع
ونفس الشئ عندما يتم وضع الاكسبيرت على الشارت
لو اشارة الدخول موجوده يدخل الصفقة
وان لايوجد لايدخل صفقة
وكما قلت لك
هى من بداية عمل الاكسبيرت وعلى حسب طريقة العمل
بتوفيق
سمير محمد ارمان غير متواجد حالياً  
رد مع اقتباس
الصورة الرمزية simous
عضو جديد
الصورة الرمزية simous
 
تاريخ التسجيل: Aug 2010
العمر: 33
المشاركات: 52
خبرة السوق: 6 شهور الى سنة
معدل تقييم المستوى: 14
simous is on a distinguished road
افتراضي رد: أسئلة فى البرمجة
17#
13 - 04 - 2013, 06:17 PM
الله ينور عليك أخــى و شكرا على ردودك السريعة و الوافية..

فى ردك على سؤالى أوضحت طريقة أغلاق العقود بعد ربح معين بالدولار .. و لكن كيف أقوم بالأغلاق بعد ربح معين بالنقاط.

التوقيع



simous غير متواجد حالياً  
رد مع اقتباس
عضو نشيط جدا
 
تاريخ التسجيل: Sep 2012
المشاركات: 648
معدل تقييم المستوى: 12
Mohamed_Amr is on a distinguished road
افتراضي رد: أسئلة فى البرمجة
18#
15 - 04 - 2013, 10:21 PM
استاذ سمير انا بدأت فى عمل اكسبريت وحتى الان تمام
ولكن فى منصات 5 ارقام مش شغاله عليها
هل فى كود تخليه يشتغل على كل المنصات
وبالتوفيق حبيبى
Mohamed_Amr غير متواجد حالياً  
رد مع اقتباس
الصورة الرمزية سمير محمد ارمان
مشرف سابق
الصورة الرمزية سمير محمد ارمان
 
تاريخ التسجيل: Nov 2009
المشاركات: 33,660
معدل تقييم المستوى: 48
سمير محمد ارمان will become famous soon enough
افتراضي رد: أسئلة فى البرمجة
19#
16 - 04 - 2013, 10:17 AM
اقتباس:
المشاركة الأصلية كتبت بواسطة simous مشاهدة المشاركة
الله ينور عليك أخــى و شكرا على ردودك السريعة و الوافية..

فى ردك على سؤالى أوضحت طريقة أغلاق العقود بعد ربح معين بالدولار .. و لكن كيف أقوم بالأغلاق بعد ربح معين بالنقاط.
السلام عليكم اخى الكريم
هذه الدالة تحسب عدد النقاط لصفقة البيع
او عدد نقاط صفقة الشراء
هذه الدالة منقولة
من استاذى مستر دولار
تحياتى لك

[PHP] double ProfitPoints(int type)
{

double Pt;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
double OpenPrice=OrderOpenPrice();double ClosePrice=OrderClosePrice();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber&&OrderType()==type)
{
if(OrderType()==OP_BUY)
{
Pt+=(ClosePrice-OpenPrice)/Point;
}
if(OrderType()==OP_SELL)
{
Pt+=(OpenPrice-ClosePrice)/Point;
}
}
}
return(Pt);
} [/PHP]
سمير محمد ارمان غير متواجد حالياً  
رد مع اقتباس
الصورة الرمزية سمير محمد ارمان
مشرف سابق
الصورة الرمزية سمير محمد ارمان
 
تاريخ التسجيل: Nov 2009
المشاركات: 33,660
معدل تقييم المستوى: 48
سمير محمد ارمان will become famous soon enough
افتراضي رد: أسئلة فى البرمجة
20#
16 - 04 - 2013, 10:31 AM
اقتباس:
المشاركة الأصلية كتبت بواسطة Mohamed_Amr مشاهدة المشاركة
استاذ سمير انا بدأت فى عمل اكسبريت وحتى الان تمام
ولكن فى منصات 5 ارقام مش شغاله عليها
هل فى كود تخليه يشتغل على كل المنصات
وبالتوفيق حبيبى
السلام عليكم اخى الكريم
كل مبرمج له طريقته
انا باستخدم طريقة الدوال
انا سوف اقول لك طريقتى لفتح الصفقات
وفى الاساس هى طريقة عمل استاذى محمود عامر
سوف اشرح الطريقة

يتم تعريف متغير خارجى

[PHP] double pt;[/PHP]

فى دالة int init
يتم وضع هذا السطر البرمجى
[PHP] if(Digits==5||Digits==4)
{
pt=0.0001;
}
else{
pt=0.01;
}[/PHP]

يتم وضع دالة فتح الصفقات خارج دالة int start
[PHP]int open(int ty,double lot,double prc,int pof,int sll)
{

double sl=0,tp=0;
color clr;
if(ty==OP_BUY||ty==OP_BUYSTOP||ty==OP_BUYLIMIT)
{
if(sll>0){sl=prc-(sll*pt);}else{sl=0;}
if(pof>0){tp=prc+(pof*pt);}else{tp=0;}
clr=Green;
}
if(ty==OP_SELL||ty==OP_SELLSTOP||ty==OP_SELLLIMIT)
{
if(sll>0){sl=prc+(sll*pt);}else{sl=0;}
if(pof>0){tp=prc-(pof*pt);}else{tp=0;}
clr=Red;
}
int tik=OrderSend(Symbol()
,ty
,lot
,NormalizeDouble(prc,Digits)
,4
,NormalizeDouble(sl,Digits)
,NormalizeDouble(tp,Digits)
,"M.A:"
,MagicNumber
,0
,clr);
string t;
if(ty==OP_BUY)t="BUY";if(ty==OP_SELL)t="SELL";if(t y==OP_BUYSTOP)t="BUY STOP";if(ty==OP_SELLSTOP)t="SELL STOP";if(ty==OP_BUYLIMIT)t="BUY LIMIT";if(ty==OP_SELLLIMIT)t="SELL LIMIT";
if(tik>0)
{

Print("Order Opened successfully " ,"Type ",t," LotSize ",lot," Price ",prc," TP ",tp," SL ",sl);
}
else
{
Print("OrderSend failed with error #",GetLastError(), " Type ",t," LotSize= ",lot," Price= ",prc," TP= ",tp," SL= ",sl);
}
//////
return(tik);

} [/PHP]
ويتم وضع تشغيل هذه الدالة لصفقة الشراء وصفقة البيع فى دالة start

[PHP]if(/*هنا يتم وضع اوامر فتح الصفقة و تستطيع التعديل فى نوع الصفقة*/){
open(OP_BUY,Lots,Ask,TakeProfit,StopLoss) ;
}

if(/*هنا يتم وضع اوامر فتح الصفقة و تستطيع التعديل فى نوع الصفقة*/){
open(OP_SELL,Lots,Bid,TakeProfit,StopLoss) ;
}[/PHP]
مع وضع هذه المتغيرات فى الخارج
[PHP] extern double Lots=0.1;
extern int TakeProfit=20;
extern int StopLoss=30;[/PHP]

بتوفيق
سمير محمد ارمان غير متواجد حالياً  
رد مع اقتباس


إضافة رد



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

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
أسئلة مش عالبال badr assaf استراحة بورصات 1 24 - 04 - 2017 05:49 AM


03:46 AM