عرض مشاركة واحدة
قديم 22-07-2012, 08:50 PM   المشاركة رقم: 2
الكاتب
jmeel
عضو نشيط
الصورة الرمزية jmeel

البيانات
تاريخ التسجيل: Jul 2012
رقم العضوية: 10231
المشاركات: 401
بمعدل : 0.08 يوميا

الإتصالات
الحالة:
jmeel غير متواجد حالياً
وسائل الإتصال:

كاتب الموضوع : مسلم المنتدى : منتدى المؤشرات و الاكسبيرتات
افتراضي رد: طلب اكسبيرت بسيط جدا جدا

وعليكم السلام ورحمة الله
الموضوع يطول شرحه فتختار الريسك حسب الرصيد او الريسك حسب الأكويتي حتى ياخذ في الحسبان الأوردرات المفتوحة بمكاسبها وخسايرها بنفس اللحظة وبالتالي الأكسبيرت يحدد اللوت حسب حجم المخاطرة الذي انته طلبته وخذ مثال :
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);
}

تحياتي



عرض البوم صور jmeel  
رد مع اقتباس
  #2  
قديم 22-07-2012, 08:50 PM
jmeel jmeel غير متواجد حالياً
عضو نشيط
افتراضي رد: طلب اكسبيرت بسيط جدا جدا

وعليكم السلام ورحمة الله
الموضوع يطول شرحه فتختار الريسك حسب الرصيد او الريسك حسب الأكويتي حتى ياخذ في الحسبان الأوردرات المفتوحة بمكاسبها وخسايرها بنفس اللحظة وبالتالي الأكسبيرت يحدد اللوت حسب حجم المخاطرة الذي انته طلبته وخذ مثال :
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);
}

تحياتي




رد مع اقتباس