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

مشاهدة النسخة كاملة : طلب اكسبيرت بسيط جدا جدا


مسلم
22-07-2012, 05:59 AM
السلام عليكم ورحمة الله وبركاته
اخواني توجد لدي عقده وهو حساب حجم اللوت والرافعه وقيمه نقطه تحصل لدي احيانا خربطه في حساب
فهل يوجد اكسبيرت نضع له قيمه المخاطره وهو بشكل تلقائي يتعرف على الرافعه الماليه ويتعرف على قيمه النقطه
ونختار شراء او بيع ونضع له وقف الخساره مثلا وضعنا المخاطره 2 % في حال ضرب الاستوب لايخسر الحساب اكثر من 2 %
ياريت المساعده بهذا الموضوع ويكون الاكسبيرت يعمل على منصه 5 ارقام و 4 ارقام
والهدف انا بحدده بعدين ولكن اهم شي بضع له الاستوب اذا ضربه لايخسر اكثر من حجم المخاطره
لايعمل سوى مره واحده فقط عند سحبه للشارت
اتمنى بيكون مفتوح الكود لانه جالس بقرا اساسيات لغه MQL4 وممكن تعلم منه بعدين :1 (46):
شكرا لكم :1 (73):

jmeel
22-07-2012, 08:50 PM
وعليكم السلام ورحمة الله
الموضوع يطول شرحه فتختار الريسك حسب الرصيد او الريسك حسب الأكويتي حتى ياخذ في الحسبان الأوردرات المفتوحة بمكاسبها وخسايرها بنفس اللحظة وبالتالي الأكسبيرت يحدد اللوت حسب حجم المخاطرة الذي انته طلبته وخذ مثال :
extern int OpenOrdersLimit36 = 20;
extern int SellStoploss35 = 100;
extern int SellTakeprofit35 = 100;
extern int PriceOffset35 = 100;
extern double BalanceRiskPercent35 = 5;
extern int OpenOrdersLimit37 = 20;
extern int BuyStoploss30 = 100;
extern int BuyTakeprofit30 = 100;
extern int PriceOffset30 = 100;
extern double BalanceRiskPercent30 = 5;
للمخاطر 5% من الرصيد لدورة من عشرين اوردر وممكن تخليها اوردر واحد

بعدها مثال لتنفيذ البيع حسب الشرط اعلاه البيع فقط كمثال
BuyPendingRiskFixed30();

}
}

void BuyPendingRiskFixed30()
{
double lotsize = MarketInfo(Symbol(),MODE_LOTSIZE) / AccountLeverage();
double pipsize = 1 * 10;
double maxlots = AccountBalance() / 100 * BalanceRiskPercent30 / lotsize * pipsize;
if (BuyStoploss30 == 0) Print("OrderSend() error - stoploss can not be zero");
double lots = maxlots / BuyStoploss30 * 10;

// calculate lot size based on current risk
double lotvalue = 0.001;
double minilot = MarketInfo(Symbol(), MODE_MINLOT);
int powerscount = 0;
while (minilot < 1)
{
minilot = minilot * MathPow(10, powerscount);
powerscount++;
}
lotvalue = NormalizeDouble(lots, powerscount - 1);

if (lotvalue < MarketInfo(Symbol(), MODE_MINLOT)) // make sure lot is not smaller than allowed value
{
lotvalue = MarketInfo(Symbol(), MODE_MINLOT);
}
if (lotvalue > MarketInfo(Symbol(), MODE_MAXLOT)) // make sure lot is not greater than allowed value
{
lotvalue = MarketInfo(Symbol(), MODE_MAXLOT);
}

تحياتي

مسلم
23-07-2012, 04:07 AM
اخي الحبيب جميل بارك الله بك انا مازلت بدر في اساسيات لغه
بالنسبه لحساب المخاطره يتم من خلال الاستوب في حال ضرب الاستوب
ولا علاقه له بالصفقات مفتوحه حاليا بل براس المال الموجود
مثلا الاستوب 50 نقطه وراس المال 1000 $ وفي صفقه مفتوحه حاليا رابحه 100 $
عندما يتم الدخول بياخذ راس المال هو 1000 $ وليس 1100
في حال حققت صفقه هدفها مثلا 100 $ يتم الدخول بـ 1100 وهكذا
وطبعا الاستوب متغير في كل صفقه ليس ثابت
ياريت ارفاق الاكسبيرت للتجربه :)

jmeel
23-07-2012, 06:18 AM
اخي مسلم هل تطلب الصيغة ام تطلب عمل اكسبيرت ؟؟؟
بالنسبة لحساب المخاطرة تقدر تعملها اما مرتبطة بحجم الرصيد او بحجم الأكوايتي
ونسبة المخاطرة كما انت ذكرتها ان يغلق عند خسارة 2% من الرصيد مثلا بوجود ستوب بالنقاط او بدون وجوده
تحياتي

مسلم
24-07-2012, 03:38 AM
اخي الفاضل انا اطلب الاكسبيرت ولكن يكون مفتوح الكود يعني بصيغه MQL4
حتى عندما انتهي من اسياسيات بشاهد الكود وبتعلم هذا القصد
اتمنى استطيع توصيل فكرتي لك
حضرتك فتحت حساب اليوم مع شركه "ربحني واشحن لي " :)
مبلغ قدره 500 $
وجالس تحلل السوق وشفت فرصه جميله السعر كسر مستوى مقاومه دخلت شراء ولكن الاستوب هو القاع السابق اذا وصل له السعر ينتهي الفرصه "ضرب استوب "
هنا الاكسبيرت قبل فتح صفقه ينظر الى الاستوب والى السعر الحالي للسوق ماهو فرق النقاط بينهم ... وينظر الى مستوى المخاطره في الاكسبيرت ماهي ..
على فرض فرق النقاط مابين السعر الحالي ومابين الاستوب 50 نقطه ... ومستوى المخاطره 2 % من قيمه الحساب ..
اذا تحرك السوق وضرب الاستوب 50 نقطه عند سعر مثلا 1.2365 تكون قيمه راس المال خسرت 2 % من راس المال الكلي
يعني يتم اخذ قيمه الخساره بناء على الاستوب وراس المال الاصلي ولاعلاقه له بالصفقات المفتوحه لانه ممكن تخسر
اتمنى تكون وصلت الفكره
وفي تطوير للفكره فكرت فيه امس عندما يتم وضع الاكسبيرت لاول مره على الشارت بيشوف في خط اسمه Stop يعني انا بضع له بمكان الاستوب خط عمود في خاصيه name بكتب stop
عند سعر هذا الخط بيضع الاستوب
ويقوم بالشراء او البيع من خلال ازارار كيبورد يعني في حال ضغطت shift+b يقوم بالشراء
اذا ضغطت shift + s يقوم بالبيع
وعند ضغط على ازرار سواء بيع او شراء يقوم بحساب مستوى المخاطره بناء على الاستوب وبيدخل صفقه وبيضع مستوى الاستوب عند خط اسمه stop
اسف على الاطاله يارب يكون طلب واضح
جزاك الله خير ورزقك الفردوس الاعلى

jmeel
24-07-2012, 04:04 AM
أخي مسلم فكرتك واضحة لكنها مش بسيطة وماسبق لي عما اكسبيرت بمثل هذه الشروط اعتقد تحتاج مبرمج متمكن اكثر مني
تقبل اعتذاري ولك تحياتي

مسلم
26-07-2012, 07:34 AM
استاذ جميل والله فرحان جدا بحبك للمساعده بارك الله بك ورزقك من حيث لاتحتسب
الله يكثر من امثالك
شكله لازم بدرس لغه MQL4 كويس وإن شاء الله اذا واجهت اسئله بسأل هنا بالمنتدى
غفر الله لك ولوالديك ورزقك بالزوجه والذريه الصالحه .. اللهم امين يارب العالمين