النتائج 2,326 إلى 2,340 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 23-06-2012, 06:30 AM #2326
رد:موضوع مخصص للأسئلة البرمجية
شكرا جزيلا أستاذ أسامه و بارك الله فيك ...
و بعد إذنك أخي كنت أريد داله تقوم بتعديل ستوب الشراء المفعل إلى أدنى نقطة وصل لها السعر كما حددناها بالسابق
و العكس تعديل ستوب البيع المفعل لأعلى نقطة وصل لها السعر ...
و عذرا أخي لو اتعبتك معي سوف أرفق لك الإكسبيرت الذي أبرمجه و أشرح لك فكرته لتطلع عليه وتصححلي ما فيه من أخطاء :
1- الإكسبيرت يقوم بوضع أمرين معلقين سيل استوب و باي ستوب على أساس وجود مستويين مرسومين على الشارت أعلى و أدنى السعر ... وقيمة اللوت تكون لوت1 .. و إستوب و هدف لكل أمر معلق المسافه بين المستويين .
2-إذا تفعل البيع لوت1 يتم مسح أمر الشراء وتعليق أمر معلق شراء بلوت2 عند المستوى العلوى و الهدف و الإستوب المسافه بين المستويين .(و العكس في حال تفعل الشراء لكن سأمشي في الشرح مع هذه الصفقه ).
(في حالة تم ضرب الهدف يتم إلغاء الأوامر و يتوقف الإكسبيرت)
3- إذا تم ضرب ستوب البيع بلوت1 وتفعل الشراء بلوت2 يتم تعليق أمر بيع بلوت3 عند أدنى نقطه وصل لها السعر قبل تفعل الشراء المفعل و الهدف و الإستوب الفرق بين المستوى العلوي السابق المرسوم على الشارت وأدنى نقطه وصل لها السعر ... و يتم أيضا تعديل ستوب الشراء المفعل إلى أدنى نقطه وصل لها السعر .
4- إذا تم ضرب ستوب الشراء بلوت2 و تفعل البيع بلوت3 .. يتم تعليق أمر شراء بلوت 4 عند أعلى نقطه وصل لها السعر قبل تفعل صفقة البيع الحاليه و الهدف و الإستوب يكون الفرق بين أعلى نقطه وصل لها السعر و قيمة ستوب آخر صفقه مغلقة ... و يتم أيضا تعديل ستوب البيع المفعل إلى أعلى نقطة وصل لها السعر .
.. أنوي عمل حتى لوت 10 بهذه الطريقه .. و قمت ببرمجة حتى الخطوة الرابعه إلى الآن و لكن هناك بعض الأخطاء أرجو الإطلاع عليها و تصحيح أي شئ آخر قبل أن أكمل ..
شكرا جزيلا أخي أسامه و بارك الله فيك .
الإكسبيرت
- 23-06-2012, 10:14 AM #2327
السلام عليكم,,,,عندي مؤشر و ناوي اغير اعداداته ياريت احد يشرح لي كيف او يعطيني رابط يشرح نفس الموضوع
- 24-06-2012, 12:05 AM #2328
الفكرة في أنك سوف تحتاج إلى كود لمعرفة هل فتحت شمعة جديده أم لا
يمكنك تعريف متغير بإسم
كود PHP:datetime Time0;
ثم ستضع في شروط الدخول
كود PHP:if(Time0!=Time[0])
{
OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,digits),3*Q,0,0,"Hedge EA",MagicNumber,0,Blue);
OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,digits),3*Q,0,0,"Hedge EA",MagicNumber,0,Red);
Time0=Time[0];
}
- 24-06-2012, 01:21 AM #2329
- 25-06-2012, 07:25 PM #2330
إذا أردت عمل مودفاي للأمر
مثال
كود PHP:void Modify_Order(double newStopLoss)
{
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
if(OrderStopLoss()!=newStopLoss)OrderModify(OrderTicket(),OrderOpenPrice(),newStopLoss,OrderTakeProfit(),0);
}
}
}
كود PHP:Modify_Order(SL);
بالنسبه للإكسبرت فهو ممتاز لكن لدي إستفسار فقط بخصوص الخطوة 2
كود PHP:if( orderscnt(OP_SELL)==1 && (TimeCurrent()-LastClosedOrderTime())/60/60>=Hours){
DeleteBuyPendingOrders( MagicNumber);}
لذلك بدلا من وضع شرط التوقيت يمكنك عمل داله تحسب حجم لوت الأمر المعلق الآخر إذا كان حجم اللوت مساوي لحجم لوت الصفقه التي فتحت في هذه الحاله تحذف الأمر وتضع الأمر المعلق
أو
يمكنك تغيير الكومنت للصفقات الرئيسيه وعمل داله تقارن إذا تفعل الأمر المعلق وكان الأمر المعلق الآخر بنفس كومنت الصفقات الرئيسيه يتم حذف الأمر ووضع الأمر المضاعف
- 25-06-2012, 07:27 PM #2331
- 25-06-2012, 07:47 PM #2332
السلام عليكم
بحاول اعمل كود بحيث يقرى السعر بعد عدد معين من الشموع السابقة على حسب الاختيار
هل ممكن ذلك ........
كود:extern int Complect = 0;
كود://+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { if ( eintTimeframe == 0 ) gintTF = Period(); else gintTF = eintTimeframe; gdtLastAlert = 0; IndicatorBuffers( 3 ); IndicatorDigits( 5 ); SetIndexBuffer( 0, gadblMid ); SetIndexLabel( 0, "TMA Mid" ); SetIndexBuffer( 1, gadblUpper ); SetIndexLabel( 1, "TMA Upper" ); SetIndexBuffer( 2, gadblLower ); SetIndexLabel( 2, "TMA Lower" ); //---- name for DataWindow and indicator subwindow label IndicatorShortName( "TmaTrue(" + eintHalfLength + ",M" + gintTF + ")" ); gi_PipsDecimal = Get_Pips_Decimal(); return( 0 ); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectDelete("!Mid"); ObjectDelete("!Upp"); ObjectDelete("!Low"); ObjectDelete("!Range"); return( 0 ); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars = IndicatorCounted(); if (counted_bars < 0) return (-1); if (counted_bars > 0) counted_bars--; int intLimit = Bars - counted_bars; double dblTma, dblUpper, dblLower, dblRange; int intBarShift; if ( eintBarsToProcess > 0 && intLimit > eintBarsToProcess ) intLimit = eintBarsToProcess; for( int inx = intLimit; inx >= 0; inx-- ) { if ( gintTF == Period() ) { dblRange = iATR( Symbol(), gintTF, eintAtrPeriod, inx+10 ); dblTma = calcTma( eintHalfLength, inx ); } else { intBarShift = iBarShift( Symbol(), gintTF, Time[inx] ); dblRange = iATR( Symbol(), gintTF, eintAtrPeriod, intBarShift+10 ); dblTma = calcTmaMtf( gintTF, eintHalfLength, intBarShift, Close[inx] ); } gadblMid[inx] = dblTma; gadblUpper[inx] = dblTma + ( edblAtrMultiplier * dblRange ); gadblLower[inx] = dblTma - ( edblAtrMultiplier * dblRange ); } if ( eblnAlerts && gdtLastAlert < Time[1] ) { if ( ( Close[1] > gadblUpper[1] ) && ( Close[2] < gadblUpper[2] ) ) { Alert( Symbol(), " - M", Period(), " - ", TimeToStr( Time[1], TIME_DATE|TIME_MINUTES ), " closed above upper TMA." ); gdtLastAlert = Time[1]; } if ( ( Close[1] < gadblLower[1] ) && ( Close[2] > gadblLower[2] ) ) { Alert( Symbol(), " - M", Period(), " - ", TimeToStr( Time[1], TIME_DATE|TIME_MINUTES ), " closed below lower TMA." ); gdtLastAlert = Time[1]; } } // Calculate the distances between bid & bands double ld_Dist.Pts, ld_Dist.Pips; // Distance to mid ld_Dist.Pts = MathAbs(Bid - gadblMid[0]); ld_Dist.Pips = Convert_2_Pips(ld_Dist.Pts); ObjectCreate("!Mid",OBJ_TEXT,0,0,0); ObjectSet("!Mid",OBJPROP_TIME1,Time[0]+(3*Period()*60)); ObjectSet("!Mid",OBJPROP_PRICE1,gadblMid[0]); ObjectSetText("!Mid",DoubleToStr(ld_Dist.Pips,gi_PipsDecimal),8,"Arial",gc_Mid); // Distance to upper ld_Dist.Pts = MathAbs(Bid - gadblUpper[0]); ld_Dist.Pips = Convert_2_Pips(ld_Dist.Pts); ObjectCreate("!Upp",OBJ_TEXT,0,0,0); ObjectSet("!Upp",OBJPROP_TIME1,Time[0]+(3*Period()*60)); ObjectSet("!Upp",OBJPROP_PRICE1,gadblUpper[0]); ObjectSetText("!Upp",DoubleToStr(ld_Dist.Pips,gi_PipsDecimal),8,"Arial",gc_Upper); // Distance to lower ld_Dist.Pts = MathAbs(Bid - gadblLower[0]); ld_Dist.Pips = Convert_2_Pips(ld_Dist.Pts); ObjectCreate("!Low",OBJ_TEXT,0,0,0); ObjectSet("!Low",OBJPROP_TIME1,Time[0]+(3*Period()*60)); ObjectSet("!Low",OBJPROP_PRICE1,gadblLower[0]); ObjectSetText("!Low",DoubleToStr(ld_Dist.Pips,gi_PipsDecimal),8,"Arial",gc_Lower); // Display the total range of the bands ld_Dist.Pts = MathAbs(gadblUpper[0] - gadblLower[0]); ld_Dist.Pips = Convert_2_Pips(ld_Dist.Pts); Object_Create("!Range",5,5,"TMA Range: "+DoubleToStr(ld_Dist.Pips,gi_PipsDecimal),10,"Arial",gc_Mid); return( 0 ); }
آخر تعديل بواسطة Mr. Bader ، 25-06-2012 الساعة 07:51 PM
- 26-06-2012, 01:16 AM #2333
- 26-06-2012, 05:08 AM #2334
رد:موضوع مخصص للأسئلة البرمجية
الله يبارك فيك أخي أسامه و شكرا جزيلا ..
بخصوص إستفسارك أخي فمعك حق فعلا .. لقد تناسيت أن هذا الكود يقوم بالوظيفه التي أريدها فقط عند فتح أول صفقه فقط و كنت أريد من الكود عدم تكرار الأمر إذا توافرت الشروط مره أخرى ..
أنا قمت بإضافة داله تعديل الستوب و وضعت الشرط في الخطوه رقم 3 و 4 .. و رجاء أستاذي لو تطلع بتمعن في تعريفات الستوب و نقاط تعليق الأوامر وحسابات أقل لو و أعلى هاي وصل إليه السعر لأنه يعطيني أخطاء و أريد التأكد من سلامة هذه الخطوات ..
بالنسبه لتغيير الكومنت للصفقات الرئيسيه وعمل داله تقارن إذا تفعل الأمر المعلق وإذا كان الأمر المعلق الآخر بنفس كومنت الصفقات الرئيسيه يتم حذف الأمر ووضع الأمر المضاعف .. فهذه الفكره جميله و أعتقد كان من الممكن إستخدام الكومنت لكل أمر بدلا من إستخدام حجم اللوتات و المقارنه بين كومنت كل أمر و أيضا أتت في بالي فكرة إستخدام رقم الصفقات كذلك بنفس الطريقة .. فرجاء لو تشرح لي مثال لتغيير الكومنت و الداله التي تقارن تشابه الكومنتات و كذلك الشرط الذي سوف أضعه ...
و بارك الله فيك .
- 26-06-2012, 03:22 PM #2335
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم استاذ اسامة واسعد الله ايامك ...
فقط اريد التوضيح من حضرتك ... فانا والشباب المشاركين معي في الموضوع https://forum.arabictrader.com/t141767.html
نعاني من مشكلة وحيدة حيث ان الاكسبيرت في اخر نسخة له لا يعمل على اي منصة من منصات الخمس ارقام 5 digits
انا شخصيا حاولت على جميع المنصات مثل AFBFX ALpari UK NoorCM لم يعمل على اي من هذه المنصات ... ولكن يعمل على الباك تيست
يرجى التكرم من حضرتك ان تجد له حل علما باني وضعت اخر النتائج له واثبت الاكسبيرت جدارته في فترات طويلة ولله الحمد.
ولي عندك طلب ثاني بسيط ارجو ان يتسع صدرك له... الاكسبيرت مصمم لكي يعمل على اساس النسبة المئوية التي تحددها وفقا للرينج اليومي وعند الوصول الى تلك النسبة التي حددتها يتحقق شرط الدخول .... فهل من الممكن ان يتم استبدال النسبة المئوية لتكون عدد نقاط الحركة اليومية ، على سبيل المثال :-
عندما احدد له رقم 150 .. يعني عندما تصل حركة الباوند في اليوم الى 150 نقطة يتحقق شرط الدخول وليس كما هو الحال عند وضع رقم 150 تعني %150*الرينج اليومي
وارجو ان يكون هناك متغير لوقف الخسارة متعلق بعدد النقاط وليست نسبة مئوية كما طلبوا مني الاخوة المشاركين في الموضوع
مرفق النسخة الاخيرة من الاكسبيرت ... وجزاك الله كل خير عني وعن كل من يستخدم هذا الاكسبيرت ويرزقك من حيث لا تحتسب
- 26-06-2012, 04:27 PM #2336
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم ورحمة الله تعالى وبركاته
فالمؤشرات إلي بتعرض السعر بحجم كبير بيستخدموا الكود ده عشان يغيروا اللون مع كل تك لفوق وتحت
كود PHP:double price;
int start()
{
if (Bid > price)// نفذ
if (Bid < price)// نفذ
price=Bid;
return(0);
}
وشكرا مقدما
- 27-06-2012, 01:57 AM #2337
لديك أخطاء في حساب الهدف والأستوب لوز
فمثلا أنت حسب عدد نقاط الفرق بين البيع والشراء
كود PHP:double TP_R=MathAbs ( buy - sell ) ;
فإن الناتج سيكون 1.5030-1.4030 = 0.0100
الخطأ لديك الآن في تحديد قيم الهدف والأستوب لوز
كود PHP:if(UseRecTP)TP=(sell-TP_R*point);
if(UseRecSL)SL=(sell+SL_R*point);
فسوف تجعلها فقط
كود PHP:if(UseRecTP)TP=(sell-TP_R);
if(UseRecSL)SL=(sell+SL_R);
----------
بالنسبه لتغيير الكومنت فسوف تقوم أولا بتعديل الكومنت للصفقات الرئيسيه ولنفرض
مثلا
كود PHP:OrderSend(Symbol(),OP_BUYSTOP,Lots1,buy,3,SL,TP,"first order",MagicNumber,0,Green);
OrderSend(Symbol(),OP_SELLSTOP,Lots1,sell,3,SL,TP,"first order" ,MagicNumber,0,Green);
كود PHP:string getcomment()
{
for(int i=0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()>OP_SELL){
return(OrderComment());
}
}
return("none");
}
كود PHP:if(getcomment()=="first order")
{
// delete order
}
- 27-06-2012, 02:11 AM #2338
وعليكم السلام ورحمة الله وبركاته
أولا بداخل الداله init
كود PHP:int digits;
int init(){
if(Digits>3){
digits=4;
}
else {
digits=2;
}
}
الفكره في أني أريد أن أحذف الرقم العشري الخامس حتى لا يدخل في المقارنه
كود PHP:string pr=DoubleToStr(Bid,Digits);
double bid=StrToDouble(StringSubstr(pr,0,digits));
if (bid > price)// نفذ
if (bid < price)// نفذ
price=bid;
- 27-06-2012, 03:04 AM #2339
- 27-06-2012, 07:15 AM #2340
رد:موضوع مخصص للأسئلة البرمجية
تمام أخي سامه .. تم تعديل الإستوب و التارجت كما شرحت بارك الله فيك ..
وتم إستخدام دالة الكومنت ..
و لكن مازال يظهر أخطاء بعدم تعريف ال low_price
وهذه الأخطاء تظهر في هذه التعريفات :
كود PHP:///حساب أقل لو وصل إليه السعر بعد توقيت فتآخر صفقة
int barshift=iBarShift(Symbol(),0,lasttime(),false)
double low_price=Low[iLowest(Symbol(),0,MODE_LOW,barshift,0)];
double sell2=low_price;
double sell3=low_price;
///---
///حساب اعلى هاي وصل له السعر بعد فتح آخر صفقه
double high_price=High[iHighest(Symbol(),0,MODE_HIGH,barshift,0)];
double buy2=high_price;
double buy3=high_price;
///---
double TP_R2=MathAbs ( buy - sell2 ) ;
double SL_R2=MathAbs ( buy - sell2 ) ;
double TP_R22=MathAbs ( sell - buy2 ) ;
double SL_R22=MathAbs ( sell - buy2 ) ;
///-
double TP_R3=MathAbs ( buy3 - Last_SL ) ;
double SL_R3=MathAbs ( buy3 - Last_SL ) ;
double TP_R33=MathAbs ( sell3 - Last_SL ) ;
double SL_R33=MathAbs ( sell3 - Last_SL ) ;
///-
الإكسبيـــــــــــــــــــــرت
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM