مرحبا، استاذ أسامة
اريد أن افتح صفقة بهدف كلي، في كل مرة يتحرك السعر نحو الهدف، اريد أن احجز جزء من الربح باغلاق جزء من العقد، وأن يتم ذلك على ثلاث مستويات؟
باختصار كيف أجعل للصفقة الواحدة ثلاث مستويات من الربح؟
Printable View
مرحبا، استاذ أسامة
اريد أن افتح صفقة بهدف كلي، في كل مرة يتحرك السعر نحو الهدف، اريد أن احجز جزء من الربح باغلاق جزء من العقد، وأن يتم ذلك على ثلاث مستويات؟
باختصار كيف أجعل للصفقة الواحدة ثلاث مستويات من الربح؟
لو فيه بس OrderSplit بعدما نعمل OrderSend !! :*
أو خلوا OrderModify تغير اللوت >>> وقفت على هذي =|
ليه حياتنا تصير صعبة! :(
من خلال بحثي اللي وصلت له الحل هو أني أراقب السعر بحيث لو وصل للهدف الأول أعمل OrderClose لجزء من العقد
هل فيه طريقة غيرها؟
كيف أراقب السعر؟!
الفكرة عندي بس مش عارفة كيف اكتبها بأسهل طريقة
وعليكم السلام ورحمة الله وبركاته
قم بتعريف متغير من نوع static حتى لا تتغير قيمته إلا عندما تعطيه أنت القيمه الجديده
ثم كمثال عندما تفتح الصفقه يصبحكود PHP:
static int Order_Action;
ثم هكذا تعطي المتغير القيم الجديده بناء على شروطك ثما عندما تصبح قيمة المتغير رقم معين التي حددتها مسبقا تقوم بتنفيذ الأمر الذي تريدهكود PHP:
if(true)
{
int ticket=OrderSend(Symbol(),OP_BUY,NewLot,Ask,3*P,0,0,"EA",MagicNumber,0,Blue);
Order_Action=1;
}
استاذ اسامة،
الفنكشن searchClosedNumber تستلم رقم التكت وتبحث عنه في الكومنت تبع كل الصفقات، صح ولا لا؟
ما الهدف من البحث عن رقم التكت في الكومنت؟ مش يكفي لو استخدمنا المقارنة ع اساس OrderTicket
وما فهمت الانكرمنت للـ ClosedNumber ع أي أساس؟
كود PHP:
int searchClosedNumber(string text)
{
int ClosedNumber;
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string comment=OrderComment();
int ticket=OrderTicket();
if(StringFind(comment,text,0)!=-1)
{
ClosedNumber++;
text=DoubleToStr(ticket,0);
}
if(ClosedNumber>2)return(ClosedNumber);
}
return(ClosedNumber);
}
السلام عليكم
عندى فكره عاوز تعاونى عليها
عاوز اميز الصفقات المعدله كسبت ورجعت للخصاره تانى بحيث لورجعت على نقطه التعادل تقفل حولت اقفل الا تيجى على الصفر قفل الكل الا يجى على الصفر حتى الا لسه مدخلتش على المكسب
الفكره هى
اميزه كل صفقه بكومنت مختلف متسلسل بحيث اذا اتعدل على الصفقه احفظ الكونت فى منتغير يكون الشرط الغلاق ان يكون موجود الكومنت
مشعارف اكتب الفكره ممكن تسعدنى عليها
لنفرض أن لدينا صفقة أساسيه مفتوحه الآن وصلت إلى الهدف الأول بالتالي سنغلق منها جزء معين 1
بعد إغلاق الجزء يتبقى الجزء الجديد ويكون له رقم تيكيت مختلف عن تيكيت الصفقه الأساسيه فالآن كيف ستعرف أن هذه الصفقه تم إغلاق منها الجزء الأول ويجب أن تغلق الجزء الثاني عند الهدف الثاني ؟
إستطعت حل هذه المشكله عن طريق رقم الكومنت للصفقه فعندما تغلق الصفقه فهي تأخذ كومنت يساوي قيمة رقم التيكيت الجديد للجزء المفتوح
بالتالي جعلت الدالة تبحث مثلا في الصفقة المفتوحه حتى أعرف هل أغلق منها جزء أم لأ بحيث أرى هل رقم التيكيت لهذه الصفقة المفتوحه موجود في كومنت أي صفقة مغلق سابقه بالتالي إذا كان يوجد صفقة مغلقه لها رقم التيكيت فهذا يعني أن الصفقة أغلقت جزء على الهدف الأول وننتظر الآن إغلاق الجزء الثاني على الهدف الثاني
وإذا كان رقم التيكيت للصفقه المفتوحه موجود في كومنت صفقتين مغلقتين فهذا يعني أن هذه الصفقة أغلقت الجزء الأول والثاني على الهدف الأول والثاني وننتظر الهدف الثالث وهكذا.
عندما يغلق جزء من العقد فإن الكومنت لهذا الجزء المغلق سيساوي رقم التكت الجديدة للجزء المتبقي
والجزء المتبقي بدوره يأخذ تكت جديدة مختلفة عن تكت الصفقة الاساسية
^ معلومات لم أكن أعرفها
أفدتني جداً أ. أسامة :)
وعليكم السلام ورحمة الله وبركاته
يمكنك إستخدام المتغيرات العامه GlobalVariables بحيث عندما تصبح الصفقه على ربح تقوم بحفظ قيمة لها ثم إذا عادت أقل من الصفر تغلق الصفقه
مثال
كود PHP:
for(int i=OrdersTotal()-1;i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(GlobalVariableGet(string(OrderTicket()))==0&&Bid-OrderOpenPrice()>=10*point)
{
GlobalVariableSet(string(OrderTicket()),1);
}
else if(GlobalVariableGet(string(OrderTicket()))==1&&Bid-OrderOpenPrice()<=-10*point)
{
GlobalVariableSet(string(OrderTicket()),2);
}
else if(GlobalVariableGet(string(OrderTicket()))==2&&OrderProfit()>=0)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3);
GlobalVariableDel(string(OrderTicket()));
}
}
if(OrderType()==OP_SELL)
{
if(GlobalVariableGet(string(OrderTicket()))==0&&OrderOpenPrice()-Ask>=10*point)
{
GlobalVariableSet(string(OrderTicket()),1);
}
else if(GlobalVariableGet(string(OrderTicket()))==1&&OrderOpenPrice()-Ask<=-10*point)
{
GlobalVariableSet(string(OrderTicket()),2);
}
else if(GlobalVariableGet(string(OrderTicket()))==2&&OrderProfit()>=0)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3);
GlobalVariableDel(string(OrderTicket()));
}
}
}
}
السلام عليكم
لماذا لا يعمل الاكسبرت ؟
ما المشكلة الموجوده فيه
شكرا جزيلا
السلام عليكم
ممكن شرح داله
GlobalVariableGet
GlobalVariableCheck
GlobalVariableSet
اسف على الازعاج
ممكن اكون شاكر