رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة ahmadwalwil
اذا تكرمتم تحكولي وين الخطأ في هذا الكود دائما يجعل قيمه العقد 0.2 لا يدخل للمضاعفات
void LMDaily()
{
Comment("inside");
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
Comment("inside for loop");
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&& OrderMagicNumber()==Magic4h && OrderType()==OP_BUY )
{
Comment("inside if magic");
if(OrderProfit()>0)
{
Comment("inside if profit");
Lots=0.2;
}
if(OrderProfit()<0)
{
Lots=Lots*4;
Comment("else");
}
}
}
return(0);
}
تفضل شوف هذه الدالة
كود PHP:
void LMDaily()
{
double profit = 0;
datetime lastCloseTime = 0;
int cnt = OrdersHistoryTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic4h && lastCloseTime < OrderCloseTime())
{
lastCloseTime = OrderCloseTime();
profit = OrderProfit();
Lotss = OrderLots();
}
}
if (profit > 0)
{
Lots = 0.2;
}
else if (profit < 0)
{
Lots=Lotss*4;
}
عند الضرب في 4 ستحتاج تعريف Digits للمنصة اذا كانت 4 او 5 ارقام
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة ساهر الفوركس
السلام عليكم
اخي اسامة عندي سوال
انا مثلا وضعت امرين معلقين بدون هدف وستوب
وبعد تفعل احد الامرين المعلقين اريد عمل للامر المفعل OrderModify
لكي اغير له الستوب كل مرة
لم اجد الطريقة
الطريقة هي TrailingStop
افتح اي اكسبيرت للأستاذ اسامة ستجد الدالة فيه .
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة hos22003
لو سمحت يا استاذ اسامة انا عايز كود يخلي التريلينج استوب و البريك ايفين مخفيين
الفكره بدلا من أن تقوم بعمل مودفاي للأمر يمكن أن تحفظ الأستوب الجديد لكل صفقه في متغير
ثم تستخدم أمر الإغلاق عند عودة السعر إلى هذه النقطة
مثال
كود PHP:
double HiddenTrailStop[];
void MoveTrailingStop()
{
int cnt,total=OrdersTotal();
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
int ticket=OrderTicket();double orderSL=OrderStopLoss();
if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0&&NormalizeDouble(Ask,Digits)>NormalizeDouble(OrderOpenPrice()+TrailingStop*Point,Digits))
{
if((HiddenTrailStop[ticket]<NormalizeDouble(Bid-TrailingStop*Point,digits))||HiddenTrailStop[ticket]==0)
{
double NewStop=NormalizeDouble(Bid-TrailingStop*Point,Digits);
HiddenTrailStop[ticket]=NewStop;
}
}
}
else
{
if(TrailingStop>0&&NormalizeDouble(Bid,digits)<NormalizeDouble(OrderOpenPrice()-TrailingStop*point,digits))
{
if((HiddenTrailStop[ticket]>(NormalizeDouble(Ask+TrailingStop*point,digits)))||(HiddenTrailStop[ticket]==0))
{
NewStop=NormalizeDouble(Bid+TrailingStop*Point,Digits);
HiddenTrailStop[ticket]=NewStop;
}
}
}
}
}
}
ثم سيكون أوامر االإغلاق
كود PHP:
void CloseOrders
{
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
int ticket=OrderTicket();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderType()==OP_BUY&&Bid<HiddenTrailStop[ticket]&&HiddenTrailStop[ticket]!=0)
{
OrderClose(ticket,OrderLots(),Bid,3);
}
if(OrderType()==OP_SELL&&Ask>HiddenTrailStop[ticket]&&HiddenTrailStop[ticket]!=0)
{
OrderClose(ticket,OrderLots(),Ask,3);
}
}
}
}
نفس الفكره ستستخدمها مع البريك إيفن
1 مرفق
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم
اخي اسامة عندي مشكلة لم اجد حلها
انا برمجت اكسبريت لتجربة فكره ما
وهذا الاكسبريت يعتمد علي اوامر معلقة
فوضعت شروط الاوامر المعلقة كا التالي
كود PHP:
if (open>close&&ordestotal1_2(OP_BUY)<1&&ordestotal1_2(OP_BUYSTOP)<1)
{
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
}
if (open<close&&ordestotal1_2(OP_SELL)<1&&ordestotal1_2(OP_SELLSTOP)<1)
{
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
}
والاكسبريت لفكرة الاخ صلاح بارك الله فيه
يعني الدخول المعلق يكون حسب الشمعة السابقة
بشرط ليس لدينا لا ببيع معلق ولا بيع مباشر في حالة البيع المعلق
ولا شراء معلق ولا شراء عادي في حالة الشراء المعلق
الفكرة الثانية عند الدخول نغير الاوامر المعلقة كل مرة
استخدمت الامر
Ordermodify
فلم يعمل وبعض البروكرات مثل fxcm لا ينفذوه
فضطريت لعمل حذف للاوامر المعلقة كل شمعة جديد وتنفيذ اوامر معلقة مرة اخري
واستخدام الاوردر modify في الصفقات المنفذة
لاكن المشكل الذي صادفته
انه لما يقوم بعملية شراء او بيع يحذف في نفس الوقت الشراء او البيع المعلق الباقي
ياريت تساعدني لاجد الحل
وهذا الاكسبريت
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة ساهر الفوركس
السلام عليكم
اخي اسامة عندي مشكلة لم اجد حلها
انا برمجت اكسبريت لتجربة فكره ما
وهذا الاكسبريت يعتمد علي اوامر معلقة
فوضعت شروط الاوامر المعلقة كا التالي
كود PHP:
if (open>close&&ordestotal1_2(OP_BUY)<1&&ordestotal1_2(OP_BUYSTOP)<1)
{
if(StopLoss==0){SL=0;}else{SL=Ask-StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Ask+TakeProfit*Point;}
}
if (open<close&&ordestotal1_2(OP_SELL)<1&&ordestotal1_2(OP_SELLSTOP)<1)
{
if(StopLoss==0){SL=0;}else{SL=Bid+StopLoss*Point;}
if(TakeProfit==0){TP=0;}else{TP=Bid-TakeProfit*Point;}
}
والاكسبريت لفكرة الاخ صلاح بارك الله فيه
يعني الدخول المعلق يكون حسب الشمعة السابقة
بشرط ليس لدينا لا ببيع معلق ولا بيع مباشر في حالة البيع المعلق
ولا شراء معلق ولا شراء عادي في حالة الشراء المعلق
الفكرة الثانية عند الدخول نغير الاوامر المعلقة كل مرة
استخدمت الامر
Ordermodify
فلم يعمل وبعض البروكرات مثل fxcm لا ينفذوه
فضطريت لعمل حذف للاوامر المعلقة كل شمعة جديد وتنفيذ اوامر معلقة مرة اخري
واستخدام الاوردر modify في الصفقات المنفذة
لاكن المشكل الذي صادفته
انه لما يقوم بعملية شراء او بيع يحذف في نفس الوقت الشراء او البيع المعلق الباقي
ياريت تساعدني لاجد الحل
وهذا الاكسبريت
وعليكم السلام ورحمة الله وبركاته
سوف يحذف الأمر المعلق حسب الشروط التي وضعتها لأنك وضعت الشروط لحذف الأمر المعلق كما ذكرت
كود PHP:
if (open>close&&ordestotal1_2(OP_BUYSTOP)==1&&alertTag2!=Time[0])
فليس له علاقة بفتح الصفقه أو إغلاقها لكن المقارنه ستكون إغلاق شمعه هابطه ووإغلاق شمعه جديده
فتأكد أنه ليس خطأ فني مثلا عدم وجود لوت كافي لتفعيل الصفقه فبالتالي تحذف أو عدم وجود مارجن
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة H.O
سلام عليكم ورحمه الله وبركاته
بسم الله الرحمن الرحيم
هل يوجد طريقه لمعرفة اخر كائن حذفه من الشارت وما نوع الكائن ؟؟؟
بارك الله فيكم اخوكم ابو يوسف
وعليكم السلام ورحمة الله وبركاته
إذا كان مؤشر أو إكسبرت ستقوم أنت بإستخدامه لحذف أي كائن على الشارت فيمكنك حفظ نوعه وما هو ثم إستدعائه لاحقا
أما إذا كنت تقصد يدويا فلا يوجد طريقه لمعرفة ذلك
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة LOveR
مساء الخير على الجميع اخواني محتاج امر اغلاق نصف العقود بالصفقه عند ربح معين واكون شاكرلكم
عندي فكره خطرة على بالي
IsTradeContextBusy
مرات وانا اتداول تضهر الرساله وبعدها تكون حركه عنيفه بالسعر بافوق ياتحت ليش مانعمل اكسبريت بس تظهر الرساله يعلق اوامر مايعب الفكره الباك تست واختلاف سيررفرات الشركات
ولكم تحياتي
المشكله في هذه الفكره أنك لن تجد نتيجه حقيقيه لأنك كما قلت إختلاف سيرفرات الشركات وإذا كانت شركه تقوم بتعليق السيرفر أكثر من مره فبالتالي كيف أضمن تشغيل إكسبرت عليها أساسا
لكن إذا جربت تحويل الفكره مثلا متى تحدث هذه المشكله غالبا ويكون السيرفر مشغول ( في أغلب الأوقات عند صدور الأخبار القويه وفي نفس الوقت تحرك السعر حركه قويه في وقت قصير ) هنا يمكن أن ترجمها على فكره فعلا قد نستفيد منها