المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الاخ MOVING _AVERAGE


The_Mask
29-01-2013, 07:19 AM
السلام عليكم
الاخ
MOVING_AVERAGE
عندي اكسبرت مشغله على حسابي الحقيقي شغال كويس
لكن المشكله اللي في انه في اوقات ما ينفذ الاوامر بالرغم من توفر الشرط
مع العلم انه لا يعطي رسائل خطاء من السيرفر او غيره لمنع تنفيذ الامر ... وعند عمل
باكتست للفرص التي لم ينفذها ... على الحقيقي تجدها ينفذها على الباكتست
وهذا كودا الاكسبرت



datetime Time0;
double digits,point;

//////////////////////////////////////////////////////
int init()
{
if((Digits==5) || (Digits==3)) digits=Digits;
if((Point==0.001) || (Point==0.00001)) point=Point;
return(0);

}

//////////////////////////////////////////////////////////////
int orderscnt(int type){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderType()==type){
cnt++;
}
}
}
return(cnt);
}

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

////////////////// Buy//////////////

if (Open[2]<Close[2]&&(Close[2]-Open[2])/point>310&&Open[1]<Close[1]&&Time0!=Time[0]){


if(orderscnt(OP_BUY)+orderscnt(OP_SELL)<1){
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,Lots,NormalizeDouble(Ask ,digits),3*digits,SL,TP,"EA",MagicNumber,0,Blue);
Time0=Time[0];
}
}


///////////////////// Sell////////////////////////

if (Open[2]>Close[2]&&(Open[2]-Close[2])/point>310&&Open[1]>Close[1]&&Time0!=Time[0]){

if(orderscnt(OP_BUY)+orderscnt(OP_SELL)<1){
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bi d,digits),3*digits,SL,TP," EA",MagicNumber,0,Red);
Time0=Time[0];
}
}
}




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

MOVING_AVERAGE
29-01-2013, 03:07 PM
هذا الكود غير كامل اخي

تم تجزئة الكود

فيه متغيرات كثيرة غير معرفة

مثل الستوب لوز والتيك بروفت و النمبرماجيك

ياريت تضع الكود الكامل للاكسبريت لكي افحصه

The_Mask
29-01-2013, 04:15 PM
شكرا لتكرمك الرد
بالنسبة للاكسبرت مكتمل طبعا

extern string MM_Parameters = " Money Management";
extern double Lots = 1;
extern bool UseMoneyManagement = TRUE;
extern int RiskPercent = 80;

extern string S5=" Order Management";
extern int TakeProfit=100;

extern int StopLoss=400;

datetime Time0;

double digits,point;
extern int MagicNumber=3030;
int init()
{
if((Digits==5) || (Digits==3)) digits=Digits;
if((Point==0.001) || (Point==0.00001)) point=Point;
return(0);

}


//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS deinitialization function |
//+------------------------------------------------------------------+

void deinit() {
Comment("SAeed");
}

int orderscnt(int type){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber()&&OrderType()==type){
cnt++;
}
}
}
return(cnt);
}


//+------------------------------------------------------------------+
//| FUNCTION DEFINITIONS Start function |
//+------------------------------------------------------------------+
int start()
{

double SL,TP;


if(UseMoneyManagement) Lots = LotManage();

////////////////// Buy//////////////

if (Open[2]<Close[2]&&(Close[2]-Open[2])/point>310&&Open[1]<Close[1]&&Time0!=Time[0]){


if(orderscnt(OP_BUY)+orderscnt(OP_SELL)<1){
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,Lots,NormalizeDouble(Ask ,digits),3*digits,SL,TP,"EA",MagicNumber,0,Blue);
Time0=Time[0];
}
}


///////////////////// Sell////////////////////////

if (Open[2]>Close[2]&&(Open[2]-Close[2])/point>310&&Open[1]>Close[1]&&Time0!=Time[0]){

if(orderscnt(OP_BUY)+orderscnt(OP_SELL)<1){
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*point;}
OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bi d,digits),3*digits,SL,TP," EA",MagicNumber,0,Red);
Time0=Time[0];
}
}
}


///////////////////////////////////////////////////////////////////////////////////////////////////////
double LotManage()
{
double lot = MathCeil(AccountFreeMargin() * RiskPercent / 1000) / 100;

if(lot<MarketInfo(Symbol(),MODE_MINLOT))lot=MarketInfo(Sy mbol(),MODE_MINLOT);
if(lot>MarketInfo(Symbol(),MODE_MAXLOT))lot=MarketInfo(Sy mbol(),MODE_MAXLOT);


return (lot);
}





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

MOVING_AVERAGE
29-01-2013, 04:22 PM
يالريت تذكر اي بروكر تعمل عليه

The_Mask
29-01-2013, 04:32 PM
يالريت تذكر اي بروكر تعمل عليه

FXDD
ايضا نفس المشكله واجهتها على بروكر 4 ارقام

MOVING_AVERAGE
29-01-2013, 04:41 PM
ساعمل عليه اليوم اخي

The_Mask
29-01-2013, 05:03 PM
ساعمل عليه اليوم اخي


الاكسبرت فرص الدخول تبعه قليله ...
لذلك مراقبته فيها صعوبه شويه لانه يمكن يمر الاسبوع ما يعمل اوامر
وخاصه انه يعمل على فريم 15
بالنسبه للنتيجه مذهل جدا
ارجو من حضرتك التركيز على كود الدخول بالنسبة للشمعات هل كتابته صحيحه
لانه بعد مراجعتي للشارت اجد انه الفرص التي لم يدخل بها عندما يكون اغلاق الشمعات
بفارق كبير جدا
مثلا عند اغلاق الشمعه (2) وكان الفارق بين الافتتاح والاغلاق اكبرمن 50 نقطه
او الشمعه (1) كان فارق كبير بين افتتاحها واغلاقها




if (Open[2]<Close[2]&&(Close[2]-Open[2])/point>310&&Open[1]<Close[1]&&Time0!=Time[0]){




هل كتابة الكود صحيحه
او ممكن كتابته بصيغه اخرى

MOVING_AVERAGE
29-01-2013, 09:22 PM
انا راجعت كتابة الكود واضفت بعض التعديلات

الان الاكسبريت يعمل علي كل البروكرات 4 و 5

اضفتلك اضهار تعليق فوق حسب الشمعة رقم 2 اذا كانت صاعدة او هابطة

يضهر لك الفرق بين بين الابن و الكلوز للشمعة رقم 2

الاستراتجية تعتمد علي

1- في حالة الصعود

صعود الشمعة رقم 2 اكثر من 31 نقطة

اذا كانت الشمعة رقم 1 صاعدة ايضا يدخل شراء

2-في خالة الهبوط

هبوط الشمعة رقم 2 اكثر او يساوي 31 نقطة

اذا كانت الشمعة رقم 1 هابطة

يدخل بيع

شئ اخر الاستراتجية تعتمد علي هبوطاو صعود كبير في الشمعة

والهبوط او الصعود الكبير يكون في اغلب الاحيان في وقت الاخبار

حيث يرتفع السبريت كثيرا

وكلما ارتفع السبريد يرتفع الستوب لوز الادني الذي تقبله الشركة لتنفيذ الاوامر



اخيرا ياريت ترفقلي الاماكن التي لم يدخل فيها

The_Mask
30-01-2013, 06:25 AM
شكرا لك تمام كذى
الاستراتيجييه هكذى بالنسبه للبروكر هو كان يعمل على 4و 5 لكن قمت بتعديله
على ان يعمل على بروكر 5 توقعت يمكن يكون السبب
ثانيا
بالنسبه للاسبريد والاستوب لوز
الاكسبرت دخوله ليس مع الاخبار مباشره يعني بعد شمعتين 15 يكون مر على الخبر
نصف ساعة حتى الشركات اللي ترفع الاسبريد اعتقد يكون قد عاد الى طبيعته بعد
هذه الفتره
الاستوب لوز هو يعمل على استوب لوز 40 نقطه وما اعتقد انها تسبب مشكله
ثالثا ...
لو الاكسبرت ارسل الامر وتم رفضة من السيرفر لسبب ما اعتقد انه نجده في التعليق تبع الاكسبرت
على المنصه


//////////////////////////////////////////////////
بالنسبه لفرص الدخول
ناخذ مثلا شهر يناير
منصه اف اكس دي دي
فرص الدخول المتوفره كانت 4 فرص للاسف لم يدخل الا واحده فقط

وهذه الاولى التي دخل بها
بتاريخ
3/1/2013
13:00

http://im35.gulfup.com/BThd1.gif


هذه لم يدخل بها
10/1/2013
16:30


http://im35.gulfup.com/e0Ak2.gif


فرصه اخرى ضائعه

11/1/2013
16:00



http://im35.gulfup.com/V0cn3.gif



فرصه لم يتم ايضا الدخول بها

22/1/2013
13:30

http://im35.gulfup.com/OQzt4.gif

والله اخي احترت في هذا الاكسبرت رغم انه شروط الدخول بسيطه
لكن هذه المشكله

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

The_Mask
30-01-2013, 07:39 AM
على فريم 15

على الحقيقي

فرص الدخول

http://im32.gulfup.com/ssbz1.gif



فرصه لم يتم الخول عليها





http://im32.gulfup.com/NeW42.gif


لم يتم الدخول



http://im32.gulfup.com/KfNT3.gif

لم يتم الدخول

http://im32.gulfup.com/KVR74.gif

MOVING_AVERAGE
30-01-2013, 11:33 PM
بالفعل اخي

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