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

ayoob 14-04-2013 09:19 AM

رد: دورة تعليم برمجة الاكسبريت
 
السلام عليكم حاولت ابرمج اكسبيرات لي مؤشر RIS وشروط الشراء والبيع هي قطع خط 50 في البيع و الشراء ولكن عندي مشكلة في الجورنال في الامر OrderSend
الكود
[PHP]extern int StopLoss=250;
extern int TakeProfit=250;
extern double Lot=0.1;
extern int Magic=15000;
int point;
int digits;
int Q;
//+------------------------------------------------------------------+
//| 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;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double Ris1,Ris2;
double SL,TP;
Ris1=iRSI(Symbol(),PERIOD_M15,14,PRICE_CLOSE,1);
Ris2=iRSI(Symbol(),PERIOD_M15,14,PRICE_CLOSE,2);

if(Ris1>50&&Ris2<50&&OrdersTotal()==0)
{
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;}
OrderSend(Symbol(),OP_BUY,Lot,Ask,Q*3,SL,TP,"EA",M agic,0,Green);
}

if(Ris1<50&&Ris2>50&&OrdersTotal()==0)
{
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,Lot,Bid,Q*3,SL,TP,"EA", Magic,0,Red);
}


}
return(0);[/PHP]
علما عند مسح كود تعريف الهدف والاستوب لوس وجعل الاستوب والهدف في الدلة OrderSend يشتغل الاكسبيرات بدون مشاكل مثال علي الكود
[PHP]OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask+250*Point, Ask-250*Point,"EA",Magic,0,Green);[/PHP]
:1 (88):

ayoob 14-04-2013 09:22 AM

رد: دورة تعليم برمجة الاكسبريت
 
صورة من الخطا في الجورنال
http://www.fx-arabia.com/vb/uploaded...1365920515.png

ayoob 15-04-2013 02:49 AM

رد: دورة تعليم برمجة الاكسبريت
 
:1 (104)::1 (88):

ayoob 15-04-2013 10:57 PM

رد: دورة تعليم برمجة الاكسبريت
 
1 مرفق
السلام عليكم اخي مصطفي عندي اكسبيرات لا يشتغل علي منصة الخمس ارقام ياريت يتم التعديل فية وشكرا مرفق الاكسبيرات

ayoob 16-04-2013 01:49 AM

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

المشاركة الأصلية كتبت بواسطة ayoob (المشاركة 496832)
السلام عليكم اخي مصطفي عندي اكسبيرات لا يشتغل علي منصة الخمس ارقام ياريت يتم التعديل فية وشكرا مرفق الاكسبيرات

وهناك مشكلة اخري يفتح صفقات علي الباك تست عادي ولكن في الديمو لا يفتح بيعطي تنبية فقط؟؟؟:1 (88):

MOVING_AVERAGE 16-04-2013 11:31 AM

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

المشاركة الأصلية كتبت بواسطة ayoob (المشاركة 496023)
السلام عليكم حاولت ابرمج اكسبيرات لي مؤشر RIS وشروط الشراء والبيع هي قطع خط 50 في البيع و الشراء ولكن عندي مشكلة في الجورنال في الامر OrderSend
الكود
[PHP]extern int StopLoss=250;
extern int TakeProfit=250;
extern double Lot=0.1;
extern int Magic=15000;
int point;
int digits;
int Q;
//+------------------------------------------------------------------+
//| 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;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double Ris1,Ris2;
double SL,TP;
Ris1=iRSI(Symbol(),PERIOD_M15,14,PRICE_CLOSE,1);
Ris2=iRSI(Symbol(),PERIOD_M15,14,PRICE_CLOSE,2);

if(Ris1>50&&Ris2<50&&OrdersTotal()==0)
{
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*poi nt;}
OrderSend(Symbol(),OP_BUY,Lot,Ask,Q*3,SL,TP,"EA",M agic,0,Green);
}

if(Ris1<50&&Ris2>50&&OrdersTotal()==0)
{
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,Lot,Bid,Q*3,SL,TP,"EA", Magic,0,Red);
}


}
return(0);[/PHP]علما عند مسح كود تعريف الهدف والاستوب لوس وجعل الاستوب والهدف في الدلة OrderSend يشتغل الاكسبيرات بدون مشاكل مثال علي الكود
[PHP]OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask+250*Point, Ask-250*Point,"EA",Magic,0,Green);[/PHP]:1 (88):

لان المنصة التي تشتغل عليها منصة ecn

لا تقبل انزال اوامر مع تحديد الهدف والخسارة مسبقا

الحل انك تنزل الامر بدون هدف ولا وقف خسارة

ثم تغير الهدف ووقف الخسارة

MOVING_AVERAGE 16-04-2013 11:41 AM

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

المشاركة الأصلية كتبت بواسطة ayoob (المشاركة 496832)
السلام عليكم اخي مصطفي عندي اكسبيرات لا يشتغل علي منصة الخمس ارقام ياريت يتم التعديل فية وشكرا مرفق الاكسبيرات

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

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

فيقوم بفتح صفقات لا تنتهي

MOVING_AVERAGE 16-04-2013 11:47 AM

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

المشاركة الأصلية كتبت بواسطة م. عبدالرحمن وردة (المشاركة 495812)
السلام عليكم و رحمة الله و بركاته.

أخي "موفنج أفرج" بارك الله فيك و في والديك وجزاكم الله خير الجزاء.
*************************
عاوز استفسر استفسار صغير :
أزاي في البرنامج اقدر اعرف انا خسرت في الصفقه اللى فاتت او كسبت و ازاي اعرف اللى باقي من الرصيد.
علشان مثلا لو عاوز البرنامج يقف لو خسرت 10 مرات مثلا او وصل الرصيد ل 50 دولاي مثلا.

و شكرا.

يتم ذلك بواسطة مراجعة الصفقات الحالية والصفقات التي اغلقة

مثلا يمكن معرفة اخر صفقة اغلقة اما رابحة او خاسرة بعدة طرق

من بين هته الطرق مراجعة ربح الصفقة ان كان سالب

يعني ان الصفقة خسرت

ayoob 16-04-2013 02:55 PM

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

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

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

فيقوم بفتح صفقات لا تنتهي

طيب اخي مصطفي ياريت يتم التعديل فية لي يعمل علي منصات الخمس ارقام والاربع ارقام ومنصات ECN وشكرhttp://www.fx-arabia.com/vb/images/icons/icon7.gif

MOVING_AVERAGE 16-04-2013 03:06 PM

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

المشاركة الأصلية كتبت بواسطة ayoob (المشاركة 497201)
طيب اخي مصطفي ياريت يتم التعديل فية لي يعمل علي منصات الخمس ارقام والاربع ارقام ومنصات ECN وشكرhttp://www.fx-arabia.com/vb/images/icons/icon7.gif


بما ان الموضوع تعليمي

ساريك طريقة حذف الاخطاء احسن

اولا استعمل هذه الدالة لفتح اي صفقة

لكي ترتاح من مشاكل ECN

[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*point);}else{sl=0;}
if(pof>0){tp=prc+(pof*point);}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*point);}else{sl=0;}
if(pof>0){tp=prc-(pof*point);}else{tp=0;}
clr=Red;
T="Bid";
pr=NormalizeDouble(Bid,Digits);
}
int tik=OrderSend(Symbol()
,ty
,lot
,NormalizeDouble(prc,Digits)
,10
,0
,0
,""
,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]

مثلا لو تريد فتح عملية BUY اكتب فقط

[PHP]
open(OP_BUY,Lots,Ask,TakeProfit,StopLoss) ;
[/PHP]


الساعة الآن 11:34 AM

Powered by vBulletin® Copyright ©2000 - 2025

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