شُكــراً جزيـــلاً، أ. أُسامه
Printable View
السلام عليكم ورحمة الله وبركاته
عرفنا كيف ننشئ سكريبت يعتمد على احد المتوسطات جزاكم الله خيرا
لكنه يعمل بناء على متوسط واحد من نفس النوع وعلى فريم واحد .. كيف يمكن أن أعمل بالاستوكاستيك مثلا بحيث يكون الشراء عندما يتحقق شرط التشبع في فريمات متعددة وليس فريم محدد .. يعني كيف يمكن أدخل متوسط يعمل بالساعة وآخر يعمل بالأربع ساعات والآخر يعمل بالنصف ساعة ... في نفس السكريبت بحيث اذا تحقق الشرط فيهم جميعا تتم العملية
السلام عليكم ورحمة الله وبركاته
أعتقد ان الحل اصلا موجود لكني لم أنتبه له حتى رأيت هذه معادلة .. فيمكن تغيير timeframe للمؤشر حتى يغطي الفريمات التي نريد
iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0)f
جزاك الله خيرا أخي اسامة وزادك من علمه
السلام عليكم اخواني ورمضان كريم على الجميع
لو سمحتم عندي الاكسبيرت محدد له يفتح الصفقات عندما يكون مجموع الصفقات صفر لكن عند فتح اي صفقه بيع او شراء لا يفتح بعدها اي صفقه فياريت تكرمكم بالمساعدة والتعديل واعطائي دالة يقوم الاكسبيرت من خلالها بفتح الصفقات عندما يكون المجموع صفر على زوج وليس المجموع الكلي بحيث يحسب الصفقات حسب الماجك نمبر وتكون الدالة كاملة بيع وشراء لاني طلبت هذا الطلب سابقاً والاستاذ مستر دولار جزاه الله خير اعطاني الدالة وعجزت بالتعديل عليها ارجو مساعدتكم وكتابة الدلة جاهزه للبيع والشراء مع فائق الاحترام
مرفق الدالة التي كتبها مستر دولار كمثال انا محتاج الدلة كاملة للبيع والشراء .
كود PHP:int orderscnt(int type=-1)
{
int cnt=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && MagicNumber==OrderMagicNumber() && (OrderType()==type || type==-1))
{
cnt++;
}
}
}
return(cnt);
}
وعليكم السلام ورحمة الله وبركاته
الداله المرفقه كامله أخي الكريم
إذا أردت وضع شرط أن يكون مجموع صفقات البيع+ الشراء يساوي صفر سوف يكون الشرط
وإذا أردت أن يكون مجموع صفقات البيع فقط صفر سوف تكونكود PHP:if(orderscnt()==0)
{
}
وإذا أردت صفقات الشراء فقط تساوي صفركود PHP:if(orderscnt(OP_SELL)==0)
{
}
كود PHP:if(orderscnt(OP_BUY)==0)
{
}
السلام عليكم ورحمة الله
اخي اسامة في الاسفل كود لفتح صفقة شراء عند الضغط على الزر الخاص بالزوج ما ابحث عنه اخي هو الكود لغلق الصفقة ليس كود غلق كل الصفقات هذه اعرفها انما غلق صفقة لزوج الموافق لزر الغلق .
كود PHP:if(Object_Name==UniqueID+"Panel_Buy"+string(i))
{
if(StopLoss==0)SL=0;else SL=Ask-StopLoss*point;
if(TakeProfit==0)TP=0;else TP=Ask+TakeProfit*point;
ticket=OrderSend(SymbolName(i,true),OP_BUY,Lots,NormalizeDouble(Ask,Digits),3*P,SL,TP,"Panel EA",0,0,Blue);
ObjectSetInteger(0,Object_Name,OBJPROP_SELECTED,false);
ObjectSetInteger(0,Object_Name,OBJPROP_STATE,false);
}
وهذا كود لغلق كل الصفقات
كود PHP:if(Object_Name==UniqueID+"Panel_CloseAll"+string(i))
{
CloseOrdersAll(OP_BUY);
CloseOrdersAll(OP_SELL);
ObjectSetInteger(0,Object_Name,OBJPROP_SELECTED,false);
ObjectSetInteger(0,Object_Name,OBJPROP_STATE,false);
}
void CloseOrdersAll(int type)
{
bool close;
for (int i = 0; i<SymbolsTotal(true); i++)
for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
bool select=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
int ticket=OrderTicket();
double lots=OrderLots();
int Otype=OrderType();
if(OrderSymbol()==Symbol()&&Otype==type)
{
if(Otype==OP_BUY)
{
close= OrderClose(ticket,lots,NormalizeDouble(Bid,Digits),3*P);
}
if(Otype==OP_SELL)
{
close= OrderClose(ticket,lots,NormalizeDouble(Ask,Digits),3*P);
}
if(Otype>OP_SELL)
{
OrderDelete(ticket);
}
}
}
}
السلام عليكم ورحمة الله وبركته
ماهي الطريقة الصحيحة لوضع أكثر من ماجيك نمبر في دالة معينة ؟
الطريقة 1:
BreakEven(Magic1 || Magic2 || Magic3 || Magic4);p
الطريقة 2:
BreakEven(Magic1 && Magic2 && Magic3 && Magic4);p
الطريقة 3:
BreakEven(Magic1)p
BreakEven(Magic2)p
BreakEven(Magic3)p
BreakEven(Magic4)p
أم هناك طريقة أخرى أفضل ؟؟ وشكرا لكم
السلام عليكم ورحمة الله وبركاتة
كيف احسب الخسارة للصفقة التي اغلقت في الشمعة الحالية
( اذا اغلقت صفقة في الشمعة الحالية وكانت خاسرة اريد معرفة كم خسارة هذه الصفقة )
وعليكم السلام ورحمة الله وبركاته
هذا مثال
كود PHP:double CandleCloseOrderProfit()
{
for(int i=OrdersHistoryTotal()-1;i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)
{
if(OrderCloseTime()>=Time[0])
{
if(OrderProfit()<0)return(OrderProfit());
}
else return(0);
}
}
return(0);
}
السلام عليكم اخي مستر دولار
عندي مشكلة صغيرة اخي العزيز
لو عندنا صفقات مفتوحة تعزيز علي مسافة استيب وعاوز جميع الصفقات دي تغلق اذا حققت الصفقة الاخيرة الهدف
انا لقيت طريقين .. الاول ان اعمل تعديل للهدف بمجرد ان يكون هناك اكثر من صفقة مفتوحة وان يكون الهدف الجديد هو من سعر اخر صفقة + مسافة الاستيب في حالة الشراء طبعا
فكتبت الامر كالتالي
والدالة كتبتها كالتاليكود PHP:if(OrderTotalByType(OP_BUY)> 2) ModifyOrdersTP();
اما الطريق الثاني فهو امر اغلاق لجميع الصفقات اذا ذادت عن واحدة اذا حققت الاخيرة هدف معينكود PHP:void ModifyOrdersTP(){double TP=Step*points; for(int i=0;i<OrdersTotal();i++){ if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderType()<2){
if((OrderType()==OP_SELL|| OrderType()==OP_BUY) &&OrderTakeProfit()==0){ bool tek=OrderModify(OrderTicket(),OrderOpenPrice(),0,TP,0,Red); }}}}
فوضعت الامر كالتالي
ودالة ربح الصفقة الاخيرةكود PHP:if(OrderTotalByType(OP_BUY) > 2 && LastOrderProf(OP_BUY)== LastOrderPrice(OP_BUY)+(Step*points)) Close_Type(OP_BUY);
ودالة سعر الصفقة الاخيرةكود PHP:double LastOrderProf(int typee){ for(int i=OrdersTotal()-1; i>=0; i--){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&& OrderType()== typee){ return(OrderProfit()); } } return(0);}
ودالة الاغلاقكود PHP:double LastOrderPrice(int typee) { for(int i=OrdersTotal()-1; i>=0; i--) { if( OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo && OrderType()==typee) { return(OrderOpenPrice()); } } return(0); }
والطريقة التانية .. مش مرتاح لها .. ومش عارف هل ربح الصفقة الاخيرة بيحسب والصفقة مفتوحة والا بيحسب بعد اغلاق الصفقة ؟؟؟؟كود PHP:void Close_Type(int typee){for(int i=OrdersTotal()-1; i>=0; i--){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)if(OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNo && OrderType()==typee){if(OrderType()==OP_BUY ) bool as=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),30,Red);if(OrderType()==OP_SELL ) bool as=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),30,Red);}}return;}
المهم ان الطريقتين فيهم حاجة غلط ولم يعطوا اي نتيجة .. الصفقات تفتح وكل صفقة تظل بهدفها ولا يتم اغلاق الجميع مش عارف اليه
ارجو تصحيح الاخطاء عندي يا استاذي العزيز ولك الشكر .. ورمضان كريم