النتائج 46 إلى 60 من 10335
الموضوع: موضوع مخصص للأسئلة البرمجية
- 22-12-2007, 02:37 AM #46
رد: موضوع مخصص للأسئلة البرمجية
وعليكم السلام ورحمة الله وبركاته
الشرط الأول يكتب على الشكل التالي :
كود PHP:
if (Bid - iHigh(Symbol(),PERIOD_M1,2)>=9)
{
myPrice==Bid;
}
else
{
myPrice==0;
}
if (myPrice>0 && Bid<=myPrice)
{
فتح عملية الشراء
}
يجب تعريف المتحول myPrice في بداية البرنامج
وبما أن البروكر غالبا لا يقبل أهداف أو ستوبات صغيرة لذلك يجب متابعة الصفقة آليا وإغلاقها عند الربح أو الخسارة.
لا أعرف إن كنت قد جربت هذه الطريقة على الحقيقي وما هي فعاليتها .
أهلا بك دائما
- 24-12-2007, 08:37 PM #47
رد: موضوع مخصص للأسئلة البرمجية
حياكم يا اخوان وبياكم
هل من الممكن احد يفيدني كيف اعمل التريلنج استوب في اكسبيرت اي ما هو الكود المطلوب اضافته
وتسلمممممممممممممممممممون
- 25-12-2007, 03:19 AM #48
رد: موضوع مخصص للأسئلة البرمجية
أهلا بك أخي
في المثال التالي ستجد معالجة كاملة للوقف المتحرك
يمكنك دمجه مع اكسبيرتك
كود PHP://+------------------------------------------------------------------+
//| MACD Sample.mq4 |
//| Copyright © 2005, ****Quotes Software Corp. |
//| http://www.****quotes.net/ |
//+------------------------------------------------------------------+
extern double TakeProfit = 50;
extern double Lots = 0.1;
extern double TrailingStop = 30;
extern double MACDOpenLevel=3;
extern double MACDCloseLevel=2;
extern double MATrendPeriod=26;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
int cnt, ticket, total;
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external
// variables (Lots, StopLoss, TakeProfit,
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
// to simplify the coding and speed up access
// data are put into internal variables
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
total=OrdersTotal();
if(total<1)
{
// no opened orders identified
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// check for long position (BUY) possibility
if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious &&
MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
// check for short position (SELL) possibility
if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
// it is important to enter the market correctly,
// but it is more important to exit it correctly...
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol()==Symbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
MacdCurrent>(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
return(0); // exit
}
// check for trailing stop
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
return(0); // exit
}
// check for trailing stop
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
- 26-12-2007, 06:45 PM #49
رد: موضوع مخصص للأسئلة البرمجية
الله يخليك اخي وضاحانا من الناس اللي يعملو كوبي وبست وبحاول ادمج حسب امكانياتي البسيطه المتواضعه ، ساحاول دمجها مع الاكسبيرت ولكن يكفي فقط الاسطر الخاصة بالتريلنج استوب هي التي تدمج فقط اليس كذلك بالاضافه الى التعريف في البدايه وهي الجمل التاليه
extern double TrailingStop = 30; اضافة في البداية البيانات الخارجيه
-----------------------------------------------
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
اضافته في معادلة الاستارت للشراء
---------------------------------------------------------------------------------------------------
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
اضافته في معادلة الاستارات للبيع وممكن نعملهم وراء بعض الشراء ثم البيع اليس كذلك ؟
- 29-12-2007, 06:53 AM #50
رد: موضوع مخصص للأسئلة البرمجية
نعم أخي ماجد
حلك صحيح
بقي أن تعمل اكسبيرت كامل وتجربه على الحقيقي
- 29-12-2007, 09:59 PM #51
رد: موضوع مخصص للأسئلة البرمجية
اخواني
ما الفرق بين الكودين التاليين؟
كود PHP:iOpen(NULL, 0,1) ;
كود PHP:Open[1];
آخر تعديل بواسطة wajdyss ، 29-12-2007 الساعة 10:02 PM
- 29-12-2007, 10:50 PM #52
رد: موضوع مخصص للأسئلة البرمجية
- 29-12-2007, 11:48 PM #53
رد: موضوع مخصص للأسئلة البرمجية
لا فارق بينهما، كلاهما سيعطيك قيمة افتتاح الشمعة السابقة
لكن الذي يميّز الدالة iOpen هو أنها توفّر خيارات واسعة، يعني لو لاحظت البارمترات التي فيها:
كود PHP:double iOpen(string symbol, int timeframe, int shift)
أما المصفوفة []Open فهي للشارت الحالي فقط
وكذلك نفس الفارق بين:
الدالة iHigh والمصفوفة High[]
والدالة iClose والمصفوفة Close[]
والدالة iLow والمصفوفة Low[]
بارك الله فيكم
- 31-12-2007, 06:49 PM #54
رد: موضوع مخصص للأسئلة البرمجية
اشكرك اخي وضاح على التوضيح
من الامس وانا احاول اعدل ولكن هناك اخطاء تظهر عموما ساذكرها اذا فشلت طبعا للتعلم منكم ولمعرفة الامور .
الان لدي سؤال فني اخر لو تسمحون كما تعلمون بان هناك كودات البرنامج يميزها مباشرة ومنها رمز اغلاق الشموع التالي:
CLOSE[1]
مشكله هذه الاسهم دايما تلخبط النص يعني الواحد بين قوسين
وهذه العباره تعني الاغلاق للشمعة السابقه ورقم 2 للشمعة التي تليها طيب سؤالي الرقم صفر للاغلاق يعني شمعة الدخول اليس كذلك فعندما يدخل الاكسبيرت في العمليه وكنت قد اشترطت له ان سعر الاغلاق في الشمعه رقم 2 يجب ان يكون اعلى من سعر الاغلاق في الشمعه رقم واحد للدخول بيع فانه سيدخل مباشرة بعد اغلاق الشمعه رقم واحد السابقه اليس كذلك؟ يعني سيدخل مباشرة عند افتتاح الشمعة رقم صفر ارجو ان يكون سؤالي مفهوما وتسلمممممممممممممممون جميعا
- 31-12-2007, 10:26 PM #55
- 01-01-2008, 05:42 AM #56
رد: موضوع مخصص للأسئلة البرمجية
أهلا بك أخي العزيز
أولا ضع الكود دائما بواسطة إدراج كود PHP وليس كتابة مباشرة في الموضوع .
اكتب الكود الذي تريد ثم حدده وظلله بالماوس ثم اضغط زر إدراج كود PHP.
مثال :
Close[1]
بالكود تظهر :
كود PHP:Close[1]
على الشارت الحالي دائما تكون الشمعة الحالية ذات رقم صفر . والشمعة التي قبلها رقمها واحد وهكذا.
عند فتح شمعة جديدة تأخذ هي الرقم صفر والتي قبلها الرقم واحد وهكذا .
فأنت في الاكسبيرت مثلا عندما تستخدم رقم صفر فأنت تعني أنك تريد فحص قيمة الشمعة الحالية .
مثلا السطر التالي :
كود PHP:if(Close[0] > Close[2])
{
}
أرجو أن تكون إجاباتي مفهومة أخي العزيز .
- 01-01-2008, 11:58 PM #57
رد: موضوع مخصص للأسئلة البرمجية
اشكرك اخي العزيز وضاح بارك الله فيك نعم اجابتك واضحه فتقصد ان الشمعه الحاليه بالشارت هي الرقم صفر والتي قبلها الرقم واحد والتي قبلها اثنين وهكذا مفهوم والحمد لله ولكن سؤالي حول الاكسبيرت وبداية تنفيذ الصفقه ففرضا كنا مستخدمين شرط ان الماكد للشمعة صفر يكون فوق الصفر للدخول شراء حيث عرفنا الماكد كما يلي :
كود PHP:MACD1 =iMACD(NULL,0,8,12,1,PRICE_CLOSE,MODE_MAIN,0);
فالكود لشرط الشراء كما يلي :
MACD1>0
اي اننا اوضحنا للاكسبيرت بان يقوم بالدخول شراء بشرط ان الماكد للشمعة الحاليه الصفر يكون فوق الصفر طيب السؤال هل سينتظر الاكسبيرت حتى اقفال الشمعه صفر حتى يتأكد من ان الماكد فوق الصفر ليدخل شراء ، ام انه خلال الشمعه صفر (مثلا شمعة فريم الساعه ) في اي وقت خلال هذه الشمعه لو تحقق ان الماكد ارتفع فوق الصفر سيدخل شراء مباشرة بغض النظر عن كيف ستغلق هذه الشمعه .
السؤال الثاني : طالما ان الشمعه صفر هي الشمعه الحاليه فهل ممكن ان نقول ان الشمعه (-1) سالب واحد هي الشمعه اللاحقه و(-2) سالب اثنين هي الشمعه اللاحقه الثانيه هل ممكن ذلك والسبب في هذا السؤال انني احاول ان ادمج مجموعه من الشروط في حالة لو تحقق احداها في الشمعه الحاليه وتحقق الاخر في الشمعه اللاحقه فبالتالي يتم الدخول لتحقق الشروط وكمثال على ذلك للفهم :
قمت بتعريف ماكدين كما يلي :
كود PHP:
MACD1 =iMACD(NULL,0,8,12,1,PRICE_CLOSE,MODE_MAIN,0);
MACD2 =iMACD(NULL,0,8,12,1,PRICE_CLOSE,MODE_MAIN,-1);
(MACD1>0 || MACD2>0)
بمعنى ان يتم الشراء في حالة ان الماكد كان فوق الصفر سواءا للشمعة الحاليه (الصفر) ام الشمعه اللاحقه (-1) اي اذا لم يتحقق الشرط في الشمعه الحاليه سينتظر حتى الشمعه اللاحقه او القادمه فاذا تحقق يدخل فهل هذا منطقي وصحيح ام انني الخبط وتسلم ياالغالي وتسلممممممممون جميعا
- 02-01-2008, 01:35 AM #58
رد: موضوع مخصص للأسئلة البرمجية
أخي ماجد كو
لو عرّفت الماكد للشمعة 0 لن ينتظر الاكسبرت إدخالها
بمجرد أن يحقق ال Bid الشرط المذكور سيتم الدخول
ولو أردته أن ينتظر للشمعة القادمة عرّف الماكد للشمعة 1
أما موضوع الشمعة -1 و-2 فلا يصلح
لأن الاكسبرت يتم تنفيذه مع كل تكة! فلو فرضنا أننا الآن في الساعة رقم 4، فحينئذ تكون الشمعة رقم صفر هي شمعة الساعة 4، وبمجرد إغلاقها تأخذ شمعة الساعة 4 رقم 1، وتأخذ الشمعة التالية رقم 0، ولا توجد شمعة رقم -1
أرجو أن يكون واضحًا إن شاء الله
- 02-01-2008, 05:58 AM #59
- 03-01-2008, 11:01 PM #60
رد: موضوع مخصص للأسئلة البرمجية
اشكرك اخي وضاح اشكرك اخي ابوايمن الاجابات واضحه ماشاء الله عليكم واختراع شموع السالب واحد طفره موهيك مشكورين ساحاول التطبيق على ذلك الاساس وبالتالي اول ما تفتتح شمعه تكون هي الصفر .
وتسلممممممممممممممممون
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM