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

مشاهدة النسخة كاملة : الموضوع المخصص للأسئلة البرمجية mql4



الصفحات : 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15

Ghassebd
02-04-2021, 04:23 PM
عندي هذا الكود فقط لا غير .....هل من مساعدة باضافة الضروريات او اي ليتك يعلمني اشكرك

kira-h
02-04-2021, 07:53 PM
عندي هذا الكود فقط لا غير .....هل من مساعدة باضافة الضروريات او اي ليتك يعلمني اشكرك
اخي الكريم هذا الموضوع مخصص فقط للأسئلة البرمجية
لا يوجد اخطاء بالكود لكن ربما ينقصك فقط ان تضعه بالدالة الرئيسية start
ولا اعلم ما هي الفكرة منه ! المهم سليم
مثال :


int start()
{
int Counted_bars,i;
Counted_bars=IndicatorCounted();
i=Bars-Counted_bars-1;
while(i>=0)
{
int shift=iBarShift(Symbol(),PERIOD_MN1,Time[i],false)+1;
if(TimeMonth(Time[i])==1)
{
double yearClose=iClose(Symbol(),PERIOD_MN1,shift),
yearHigh=iHigh(Symbol(),PERIOD_MN1,iHighest(Symbol (),PERIOD_MN1,MODE_HIGH,12,shift)),
yearLow=iLow(Symbol(),PERIOD_MN1,iLowest(Symbol(), PERIOD_MN1,MODE_LOW,12,shift));
}
h[i]=yearHigh;
c[i]=yearClose;
l[i]=yearLow;
i--;
}
return(0);
}


ويمكنك مراجعة الموضوع التعليمي التالي : المرجع الكامل في تعليم لغة mql4 (https://www.fxprg.com/vb/showthread.php?t=31458)


وموضوع التطبيقات : أهم الدوال البرمجية وتطبيقات لغة mql4 (https://www.fxprg.com/vb/showthread.php?t=31456)

shivaa
03-04-2021, 02:07 AM
السلام عليكم
ممكن مساعده فى كتابه كود
انا اعمل الان على اكسبيرت فكرته الدخول المتكررعلى اساس افتتاح شمعه اليومى
فوق الافتتاح صفقات شراء وتحت الافتتاح صفقات بيع
المشكله عندى هى تكرارالدخول على نفس السعر عندما يكون فى زبزبه
اريد عدم الدخول على مسافه موحده مثلا تكون نقطه فقط من اقرب صفقه مفعله
ولا يدخل الا اذا مسافه اكبر من نقطه
لا يتم فتح صفقه في حال وجود صفقه مفتوحه علي مسافه معينه
انا شغال بالاوامر المعلقه بحرك الصفقه حسب الاتجاه
اذا كانت الصفقه شراء والسعر متجه الى الاسفل
الصفقه تلحق بالسعر يكون الفرق نقطه فقط اذا صعد يقف مكانه يفعل يعلق صفقه من جديد والعكس مع البيع
الرجاء المساعده اكون شاكر

kira-h
03-04-2021, 04:26 PM
السلام عليكم
ممكن مساعده فى كتابه كود
انا اعمل الان على اكسبيرت فكرته الدخول المتكررعلى اساس افتتاح شمعه اليومى
فوق الافتتاح صفقات شراء وتحت الافتتاح صفقات بيع
المشكله عندى هى تكرارالدخول على نفس السعر عندما يكون فى زبزبه
اريد عدم الدخول على مسافه موحده مثلا تكون نقطه فقط من اقرب صفقه مفعله
ولا يدخل الا اذا مسافه اكبر من نقطه
لا يتم فتح صفقه في حال وجود صفقه مفتوحه علي مسافه معينه
انا شغال بالاوامر المعلقه بحرك الصفقه حسب الاتجاه
اذا كانت الصفقه شراء والسعر متجه الى الاسفل
الصفقه تلحق بالسعر يكون الفرق نقطه فقط اذا صعد يقف مكانه يفعل يعلق صفقه من جديد والعكس مع البيع
الرجاء المساعده اكون شاكر
وعليكم السلام
ارفق الكود للمراجعة

shivaa
03-04-2021, 05:42 PM
السلام عليكم
ممكن مساعده فى كتابه كود
انا اعمل الان على اكسبيرت فكرته الدخول المتكرر على اساس افتتاح شمعه اليومى
فوق الافتتاح صفقات شراء وتحت الافتتاح صفقات بيع
انا شغال بالاوامر المعلقه بحرك الصفقه حسب الاتجاه
الصفقه المعلقه تلحق بالسعر يكون الفرق نقطه فقط اذا صعد يقف مكانه يفعل يعلق صفقه من جديد والعكس مع البيع
المشكله عندى هى تكرار الدخول على نفس السعر عندما يكون فى زبزبه
اريد عدم الدخول على مسافه موحده مثلا تكون نقطه فقط من اقرب صفقه مفعله
ولا يدخل الا اذا مسافه اكبر من نقطه
لا يتم فتح صفقه في حال وجود صفقه مفتوحه علي مسافه معينه
اذا كانت الصفقه شراء والسعر متجه الى الاسفل
الرجاء المساعده اكون شاكر


وعليكم السلام
ارفق الكود للمراجعة

السلام عليكم
هدفى من عدد الصفقات هو العمولة والخروج فى الاجمال مكسب 1 دولار
مرفق الكود

kira-h
03-04-2021, 11:11 PM
السلام عليكم
هدفى من عدد الصفقات هو العمولة والخروج فى الاجمال مكسب 1 دولار
مرفق الكود

وعليكم السلام
لم افهم المطلوب بالكود
المرجو التوضيح برسم تخطيطي او بأمثلة رقمية

shivaa
03-04-2021, 11:20 PM
مشكلتى هى التكرارالدخول فى نفس السعر
المطلوب هو عدم النشيط الصفقه المعلقه اذا كان موجود صفقه فى نفس السعر فقط
او حزف الصفقه المعلقه
بحيث الناتج النهائى الدخول صفقات متتاليه يفصل بنهم مسافه نقطه
ولا يدخل بصفقات اقل من نقطه

shivaa
04-04-2021, 01:33 AM
مشكلتى هى التكرارالدخول فى نفس السعر
المطلوب هو عدم النشيط الصفقه المعلقه اذا كان موجود صفقه فى نفس السعر فقط
او حزف الصفقه المعلقه
بحيث الناتج النهائى الدخول صفقات متتاليه يفصل بنهم مسافه نقطه
ولا يدخل بصفقات اقل من نقطه

فى فكره ممكن نعمله تفك المشكله وهى
ممكن نحسب عدد الصفقات الموجود دخل حيزمن النقط
يعنى نحسب عدد الصفقات من سعر الحالى + المسافه المطلوبه بين كل صفقه
اذا كان عدد صفقات المفعله اكبر من 0 اذا لا يدخل اذا كان يساوى 0
ممكن مساعده كتابه الداله

shivaa
04-04-2021, 02:25 AM
فى فكره ممكن نعمله تفك المشكله وهى
ممكن نحسب عدد الصفقات الموجود دخل حيزمن النقط
يعنى نحسب عدد الصفقات من سعر الحالى + المسافه المطلوبه بين كل صفقه
اذا كان عدد صفقات المفعله اكبر من 0 اذن لا يدخل اذا كان يساوى 0 يدخل
ممكن مساعده كتابه الداله

kira-h
04-04-2021, 03:21 AM
فى فكره ممكن نعمله تفك المشكله وهى
ممكن نحسب عدد الصفقات الموجود دخل حيزمن النقط
يعنى نحسب عدد الصفقات من سعر الحالى + المسافه المطلوبه بين كل صفقه
اذا كان عدد صفقات المفعله اكبر من 0 اذن لا يدخل اذا كان يساوى 0 يدخل
ممكن مساعده كتابه الداله
يمكن حساب عدد الصفقات بمجال سعري
لكن هل تريد حساب الصفقات المغلقة ام المفتوحة ام هما معا؟

shivaa
04-04-2021, 03:19 PM
يمكن حساب عدد الصفقات بمجال سعري
لكن هل تريد حساب الصفقات المغلقة ام المفتوحة ام هما معا؟


المفتوحة فقط
شاكروجزاك الله خيراااااااا

kira-h
04-04-2021, 04:49 PM
المفتوحة فقط
شاكروجزاك الله خيراااااااا
الدالة تبحث عن عدد الصفقات المفتوحة التي اسعارها بمجال سعري بين MinPrice و MaxPrice كالتالي:



int OrderscntPr(double MinPrice,double MaxPrice,int type=-1)
{
int cnt=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol()&&(OrderType()==type||type==-1))
{
if(OrderOpenPrice()>MinPrice&&OrderOpenPrice()<MaxPrice)cnt++;
}
}
}
return(cnt);
}


مثال لشرط عدد صفقات الشراء يساوي 0 بالبحث بين السعر الحالي Ask و سعر أكبر بـ 20 نقطة عن الـ Ask



if(OrderscntPr(Ask,Ask+200*Point,OP_BUY)==0)

shivaa
04-04-2021, 05:06 PM
الدالة تبحث عن عدد الصفقات المفتوحة التي اسعارها بمجال سعري بين MinPrice و MaxPrice كالتالي:



int OrderscntPr(double MinPrice,double MaxPrice,int type=-1)
{
int cnt=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol()&&(OrderType()==type||type==-1))
{
if(OrderOpenPrice()>MinPrice&&OrderOpenPrice()<MaxPrice)cnt++;
}
}
}
return(cnt);
}


مثال لشرط عدد صفقات الشراء يساوي 0 بالبحث بين السعر الحالي Ask و سعر أكبر بـ 20 نقطة عن الـ Ask



if(OrderscntPr(Ask,Ask+200*Point,OP_BUY)==0)


شاكروجزاك الله خيراااااااا

kira-h
04-04-2021, 11:27 PM
شاكروجزاك الله خيراااااااا
العفو وبالتوفيق إن شاء الله

Ghassebd
07-04-2021, 09:12 PM
اخي الكريم هذا الموضوع مخصص فقط للأسئلة البرمجية
لا يوجد اخطاء بالكود لكن ربما ينقصك فقط ان تضعه بالدالة الرئيسية start
ولا اعلم ما هي الفكرة منه ! المهم سليم
مثال :


int start()
{
int Counted_bars,i;
Counted_bars=IndicatorCounted();
i=Bars-Counted_bars-1;
while(i>=0)
{
int shift=iBarShift(Symbol(),PERIOD_MN1,Time[i],false)+1;
if(TimeMonth(Time[i])==1)
{
double yearClose=iClose(Symbol(),PERIOD_MN1,shift),
yearHigh=iHigh(Symbol(),PERIOD_MN1,iHighest(Symbol (),PERIOD_MN1,MODE_HIGH,12,shift)),
yearLow=iLow(Symbol(),PERIOD_MN1,iLowest(Symbol(), PERIOD_MN1,MODE_LOW,12,shift));
}
h[i]=yearHigh;
c[i]=yearClose;
l[i]=yearLow;
i--;
}
return(0);
}


ويمكنك مراجعة الموضوع التعليمي التالي : المرجع الكامل في تعليم لغة mql4 (https://www.fxprg.com/vb/showthread.php?t=31458)


وموضوع التطبيقات : أهم الدوال البرمجية وتطبيقات لغة mql4 (https://www.fxprg.com/vb/showthread.php?t=31456)


اشكرك واشكر سعة صدرك امنياتي لكم بالتوفيق

kira-h
08-04-2021, 12:31 AM
اشكرك واشكر سعة صدرك امنياتي لكم بالتوفيق
العفو أخي الكريم وبالتوفيق إن شاء الله

amr0222
08-04-2021, 05:26 PM
//+------------------------------------------------------------------+//| Super Trend EA V1.mq4 |//| Copyright 2021, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2021, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#property strictextern double lot=0.1; extern int TP =0 ; extern int SL=0; extern bool CloseNext=true; extern bool UseTralingStop=True; extern int TralingStop = 30; extern int TralingStep=20; extern bool UseBreakEven=True; extern int BreakEven = 30; extern int BreakEvenSteps=20; extern int Steps=20; extern int CloseTime=22; extern double USD = 10; //extern bool TimeFilter=false; extern string EaName= "Test ea v1"; extern int MagicNumber=15263;input color ObjectColor = clrBlue;;input color ProfitColor = clrLime ;input color LoseColor = clrRed ;color color_Profit_Sell,color_Profit_Buy,Color_Account_P rofit,Color_Symbol_Profit;input color Backs=clrMistyRose;input color ForeGround=clrDimGray;input color UpCandel=clrDodgerBlue;input color DwonCandel=clrCrimson;



datetime t1,t2;double MyPoint,Buyt,Buys,Sellt,Sells,Price,tp,sl;int Ticket,cnt,i,z=-1;bool zs;string Buy,Sell,Buy240,Sell240;//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {if(Digits==4 || Digits<=2 )MyPoint=Point; if(Digits==3 || Digits==5 )MyPoint=Point*10; Comment (EaName , " \n\nabsaf21@gmail;.com"); return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { double B = iCustom(Symbol(),0,"Supertrend V1.1 Alert - Marketcalls",10,4,1,240,2,1); double S = iCustom(Symbol(),0,"Supertrend V1.1 Alert - Marketcalls",10,4,1,240,3,1); if(B!=EMPTY_VALUE && B>0){Buy = "BUY";} else {Buy = "NONE";} if(S!=EMPTY_VALUE && S>0){Sell = "SELL";} else {Sell = "NONE";} if (CloseNext){ if (Buy=="BUY"&& TS()>0){CS();} if(Sell=="SELL"&& TB()>0){CB();} } // فتح صفقة شراء if (TB()<1&& Buy=="BUY" && t1!=Time[0] ){ Ticket =OrderSend(Symbol(),OP_BUY,lot,Ask,3,Buys,Buyt,EaN ame,MagicNumber,0,clrGreen); t1=Time[0]; } //فتح صفقة بيع if ( TS()<1 && Sell=="SELL" && t2!=Time[0]){ Ticket =OrderSend(Symbol(),OP_SELL,lot,Bid,3,Sells,Sellt, EaName,MagicNumber,0,clrRed); t2=Time[0]; } }//+------------------------------------------------------------------+ //+------------------------------------------------------------------+// دالة حساب عدد صفقات الشراء//+------------------------------------------------------------------+
int TB(){ int b=0; for(i=0;i<OrdersTotal();i++){ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (Symbol()== OrderSymbol()&& OrderMagicNumber()== MagicNumber&&OrderType()==OP_BUY) { b++; } } return (b) ; } //+------------------------------------------------------------------+// دالة حساب عدد صفقات البيع//+------------------------------------------------------------------+ int TS(){ int s=0; for(i=0;i<OrdersTotal();i++){ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (Symbol()== OrderSymbol()&& OrderMagicNumber()== MagicNumber&&OrderType()==OP_SELL) { s++; } } return (s) ; } void CS() { for ( cnt=OrdersTotal()-1;cnt>=0;cnt--) if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber && OrderType()== OP_SELL) { bool close_s=OrderClose(OrderTicket(),OrderLots(),Ask,3 ,clrRed); } } // اغلاق صفقات الشراء void CB() { for ( cnt=OrdersTotal()-1;cnt>=0;cnt--) if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber && OrderType()== OP_BUY) { bool close_b=OrderClose(OrderTicket(),OrderLots(),Bid,3 ,clrBrown); } }
السلام عليكم استاذ حسن
لو سمحت انا بعمل اكسبرت حسب موشر اسهم
وقمت بعمل اغلاق للصفقات حين تغير الاشارة
اريد دالة للمضاعفات بحيث فى حالة اغلاق اخر صفقة على خسارة يدخل الصفقة التالية بلوت مضاعف او لوت يتم تحديده فى المخرجات
وحين اغلاق الصفقه المضاعفه على ربح يتم البد من جديد باللوت العادى
مرفق الاكسبيرت
وجزاك الله خيرا

kira-h
08-04-2021, 10:36 PM
السلام عليكم استاذ حسن
لو سمحت انا بعمل اكسبرت حسب موشر اسهم
وقمت بعمل اغلاق للصفقات حين تغير الاشارة
اريد دالة للمضاعفات بحيث فى حالة اغلاق اخر صفقة على خسارة يدخل الصفقة التالية بلوت مضاعف او لوت يتم تحديده فى المخرجات
وحين اغلاق الصفقه المضاعفه على ربح يتم البد من جديد باللوت العادى
مرفق الاكسبيرت
وجزاك الله خيرا
وعليكم السلام
مرفق الاكسبيرت

amr0222
09-04-2021, 06:20 AM
وعليكم السلام
مرفق الاكسبيرت
جزاك الله خيرا استاذ حسن

shady samir
09-04-2021, 05:16 PM
السلام عليكم و رحمة الله و بركاتة لو سمحت عاوز احط شرط للاكسبيرت انو ميفتحش صفقة جديدة الا في بداية الشمعة الجديدة علي الفريم النا فيه شكرا

kira-h
09-04-2021, 11:34 PM
جزاك الله خيرا استاذ حسن
واياك أخي الكريم


السلام عليكم و رحمة الله و بركاتة لو سمحت عاوز احط شرط للاكسبيرت انو ميفتحش صفقة جديدة الا في بداية الشمعة الجديدة علي الفريم النا فيه شكرا

وعليكم السلام
ستقوم باضافة شرط الفوليوم ضمن شروط الفتح، يكون مثلا اصغر من 5 تكات
مثال :


if(Volume[0]<=5)//...

elhelaly
14-04-2021, 12:39 AM
السلام عليكم اخى حسن
سؤال لو ممكن انا اعلم ان الموضوع الخاص بالهارمونيك كبير جدا
لكن سؤالى هل يمكن جلب قيمه كل متغير من المتغيرات المرفقه حسب الترتيب
سواء هبوط او صعود ام لا
يعنى قيمه كل متغير من القمم والقيعان حسب x a b c
كلا على حدا


26661
26662

kira-h
14-04-2021, 03:29 PM
السلام عليكم اخى حسن
سؤال لو ممكن انا اعلم ان الموضوع الخاص بالهارمونيك كبير جدا
لكن سؤالى هل يمكن جلب قيمه كل متغير من المتغيرات المرفقه حسب الترتيب
سواء هبوط او صعود ام لا
يعنى قيمه كل متغير من القمم والقيعان حسب x a b c
كلا على حدا


26661
26662

وعليكم السلام
فضلا راجع المشاركة التالية #1204 (https://www.fxprg.com/vb/showthread.php?t=31457&p=881383&viewfull=1#post881383)

elhelaly
15-04-2021, 01:10 AM
وعليكم السلام
فضلا راجع المشاركة التالية #1204 (https://www.fxprg.com/vb/showthread.php?t=31457&p=881383&viewfull=1#post881383)
تسلم يا استاذنا بارك الله فيك وكل عام وانتم بخير

kira-h
15-04-2021, 01:36 AM
تسلم يا استاذنا بارك الله فيك وكل عام وانتم بخير
واياك اخي الكريم
وكل عام وانتم بخير

ammar
03-05-2021, 04:35 AM
السلام عليكم
لدي اكسبيرت يعمل على vps وراستلني الشركة تخيرني ان المساحة بدأت بالنفاذ سؤالى هل الاكسبيرت يخزن معلوات وبالتالي يكبر حجمه وكيف اتخلص من المعلومات الغير المهمة وبالتالي يبقى بحجمة الطبيعي
مع فائق الشكر

kira-h
03-05-2021, 07:06 PM
السلام عليكم
لدي اكسبيرت يعمل على vps وراستلني الشركة تخيرني ان المساحة بدأت بالنفاذ سؤالى هل الاكسبيرت يخزن معلوات وبالتالي يكبر حجمه وكيف اتخلص من المعلومات الغير المهمة وبالتالي يبقى بحجمة الطبيعي
مع فائق الشكر
وعليكم السلام
إذا كنت قد استخدمت باكتيستات وتجارب ديمو لفترات طويلة فسيكون حجم البيانات تضخم بشكل كبير
قم بحذف كل محتويات المجلدات التي تجاوزت 100 ميجا بمجلد history ستجده بمسار المنصة (خصوصا downloads)
مثال : C:\Users\(name)\AppData\Roaming\MetaQuotes\Termina l\00E9A7EDB7E767F9C0D7FF04322AD\history

shivaa
04-05-2021, 12:14 AM
السلام عليكم
ممكن مساعده فى كتابه داله واكون شاكر
كما فى الصوره الاكسبيرت يعمل صفقات معلق الفرق بين كل صفقه وصفق عدد نقاط محدد
اذا عكس الاتجاه من شراء الى بيع يتحرك الصفقه المعلقه الشراء مع السعر مع الحفاظ على مسافه المحدد بين كل صفقه وصفقه
المشكل هى عند التحريك الصفقه ممكن تتحرك على صفقه مفعله اوبين صفقتين وهذا خطا عندى
اريد المنطقه الموجود بلون الاصفرفى الصوره تكون محرم عليه دخول اى صفقه اخرى للعلم ممكن يكون صفقتين بيع او شراء او كلهما
او معنا اخر اريد اكبر صفقه من اعلى واقل صفقه من اسفل فى سعر الدخول لايوجد شرط من حيث النوع شراء او بيع
26896

saiftk
04-05-2021, 02:24 AM
السلام عليكم رمضان كريم على الجميع
ما هي الدالة التي تعطينا الرقم العشري فقط
مثلا
1.5678 تصبح 5678

شكرا مقدما لكل من يقوم بالرد :love_heart:

ammar
04-05-2021, 03:00 AM
وعليكم السلام
إذا كنت قد استخدمت باكتيستات وتجارب ديمو لفترات طويلة فسيكون حجم البيانات تضخم بشكل كبير
قم بحذف كل محتويات المجلدات التي تجاوزت 100 ميجا بمجلد history ستجده بمسار المنصة (خصوصا downloads)
مثال : C:\Users\(name)\AppData\Roaming\MetaQuotes\Termina l\00E9A7EDB7E767F9C0D7FF04322AD\history
شكرا جزيل
لقد استفدت من الجواب

kira-h
04-05-2021, 06:13 PM
السلام عليكم
ممكن مساعده فى كتابه داله واكون شاكر
كما فى الصوره الاكسبيرت يعمل صفقات معلق الفرق بين كل صفقه وصفق عدد نقاط محدد
اذا عكس الاتجاه من شراء الى بيع يتحرك الصفقه المعلقه الشراء مع السعر مع الحفاظ على مسافه المحدد بين كل صفقه وصفقه
المشكل هى عند التحريك الصفقه ممكن تتحرك على صفقه مفعله اوبين صفقتين وهذا خطا عندى
اريد المنطقه الموجود بلون الاصفرفى الصوره تكون محرم عليه دخول اى صفقه اخرى للعلم ممكن يكون صفقتين بيع او شراء او كلهما
او معنا اخر اريد اكبر صفقه من اعلى واقل صفقه من اسفل فى سعر الدخول لايوجد شرط من حيث النوع شراء او بيع
26896
السلام عليكم
هذا ليس سؤال برمجي بل طلب اكسبيرت يمكنك طلبه بالقسم المجاني او بالقسم المدفوع، وقد سبق برمجته بعدة مواضيع تحت اسم suplex او zonerecovery او suplexzone ....

kira-h
04-05-2021, 06:14 PM
شكرا جزيل
لقد استفدت من الجواب
العفو أخي الكريم

kira-h
04-05-2021, 06:24 PM
السلام عليكم رمضان كريم على الجميع
ما هي الدالة التي تعطينا الرقم العشري فقط
مثلا
1.5678 تصبح 5678

شكرا مقدما لكل من يقوم بالرد :love_heart:
وعليكم السلام
كالتالي:


string value1=DoubleToString(1.5678,4);
StringReplace(value1,".","");
int value2=StrToInteger(value1);

Waddah
06-05-2021, 05:31 PM
السلام عليكم .... في الحساب من نوع zero spread كيف أستطيع معرفة قيمة ال commission بالنسبة لحجم اللوت ؟؟؟

kira-h
06-05-2021, 06:57 PM
السلام عليكم .... في الحساب من نوع zero spread كيف أستطيع معرفة قيمة ال commission بالنسبة لحجم اللوت ؟؟؟
وعليكم السلام
الدالة كالتالي ستعود بقيمة الكوميشن لاخر صفقة مفتوحة :


double commission()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
int mn=OrderMagicNumber(),
ty=OrderType();
double cm=OrderCommission();

if(sy==Symbol()&&mn==MagicNo&&ty<=OP_SELL)
{
return(cm);
}
}
return(0);
}

Waddah
06-05-2021, 10:36 PM
وعليكم السلام
الدالة كالتالي ستعود بقيمة الكوميشن لاخر صفقة مفتوحة :


double commission()
{
for(int i=OrdersTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
int mn=OrderMagicNumber(),
ty=OrderType();
double cm=OrderCommission();

if(sy==Symbol()&&mn==MagicNo&&ty<=OP_SELL)
{
return(cm);
}
}
return(0);
}





شكرا جزيلا .....لكن أريد معرفة الكوميشن قبل فتح الصفقة .....مثل مؤشر السبريد ...لكن يعطيني الكوميشن بدل من السبريد......هل يمكن هذا ؟

kira-h
07-05-2021, 12:17 AM
شكرا جزيلا .....لكن أريد معرفة الكوميشن قبل فتح الصفقة .....مثل مؤشر السبريد ...لكن يعطيني الكوميشن بدل من السبريد......هل يمكن هذا ؟
لا يمكن ذلك، ويمكنك أن تسأل الشركة عن قيمة الكوميشن لكل لوت ستاندرد او تصفح موقعهم غالبا ستجد جدول به كل ما تريد، وبالتالي تستطيع حساب الكوميشن لأي صفقة قبل فتحها

مبدع فوركس
09-05-2021, 02:24 PM
السلام عليكم يا هندسه
عندى اكسبيرت بيفتح صفقات تعزيز واريد ان اجعل حينما يتم تحقيق صفقه من احدى الصفقات يقوم باغلاقها وترك باقى الصفقات حتى تتحقق شروطها مثال
عندى اربع صفقات والصفقه الرابعه حققت الشرط واريد اغلاقها وترك الباقى
وشكرا

kira-h
09-05-2021, 07:38 PM
السلام عليكم يا هندسه
عندى اكسبيرت بيفتح صفقات تعزيز واريد ان اجعل حينما يتم تحقيق صفقه من احدى الصفقات يقوم باغلاقها وترك باقى الصفقات حتى تتحقق شروطها مثال
عندى اربع صفقات والصفقه الرابعه حققت الشرط واريد اغلاقها وترك الباقى
وشكرا
وعليكم السلام
الشرح غير واضح او غير كاف لعمل شروط اغلاق صفقة محددة، مثلا ما الترتيب الزمني للصفقة الرابعة بالنسبة لبقية الصفقات ؟ وما هي شروط الاغلاق ؟ هل هو شرط زمني او سعري ام ماذا؟
يجب التوضيح اكثر مع الكود احسن

مبدع فوركس
12-05-2021, 02:33 AM
وعليكم السلام
الشرح غير واضح او غير كاف لعمل شروط اغلاق صفقة محددة، مثلا ما الترتيب الزمني للصفقة الرابعة بالنسبة لبقية الصفقات ؟ وما هي شروط الاغلاق ؟ هل هو شرط زمني او سعري ام ماذا؟
يجب التوضيح اكثر مع الكود احسن
الشرح مع مثال اوضح
الطريقة هى فتح صفقات تعزيز بشروط مثلا لو تكن صفقات شراء مع ملامسة مؤشر انفولب الاسفل
فعند التعزيز يقوم فتح صفقات متتاليه قد تصل الى 10 صفقات لذلك اريد اغلاق الصفقات اذا لامس السعر مؤشر الانفولب الاعلى ولاكن بشرط اذا كانت الصفقات ربحانه فقط ويتم ترك الصفقات الاخرى الغير ربحانه
حتى تتحقق شرط الربحيه
وجزاك الله خير

kira-h
12-05-2021, 03:57 AM
الشرح مع مثال اوضح
الطريقة هى فتح صفقات تعزيز بشروط مثلا لو تكن صفقات شراء مع ملامسة مؤشر انفولب الاسفل
فعند التعزيز يقوم فتح صفقات متتاليه قد تصل الى 10 صفقات لذلك اريد اغلاق الصفقات اذا لامس السعر مؤشر الانفولب الاعلى ولاكن بشرط اذا كانت الصفقات ربحانه فقط ويتم ترك الصفقات الاخرى الغير ربحانه
حتى تتحقق شرط الربحيه
وجزاك الله خير
إذن تحتاج إلى دالة اغلاق الصفقات الرابحة فقط وهي كالتالي: ضعها بعد تحقق الشروط


void CloseOrdersPt(int type=-1)
{
bool select,close,del;
for(int i=OrdersTotal()-1; i>=0; i--)
{
select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
int tt=OrdersTotal(),
tk=OrderTicket(),
ot=OrderType(),
mn=OrderMagicNumber();
double lo=OrderLots(),
pt=OrderProfit();
if(tt>0&&sy==Symbol()&&mn==MagicNo&&pt>=0)
{
if(ot==type||type==-1)
{
if(ot==OP_BUY)
{
close=OrderClose(tk,lo,Bid,5*Q);
}
if(ot==OP_SELL)
{
close=OrderClose(tk,lo,Ask,5*Q);
}
}
}
}
}

مبدع فوركس
14-05-2021, 11:17 AM
إذن تحتاج إلى دالة اغلاق الصفقات الرابحة فقط وهي كالتالي: ضعها بعد تحقق الشروط


void CloseOrdersPt(int type=-1)
{
bool select,close,del;
for(int i=OrdersTotal()-1; i>=0; i--)
{
select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
int tt=OrdersTotal(),
tk=OrderTicket(),
ot=OrderType(),
mn=OrderMagicNumber();
double lo=OrderLots(),
pt=OrderProfit();
if(tt>0&&sy==Symbol()&&mn==MagicNo&&pt>=0)
{
if(ot==type||type==-1)
{
if(ot==OP_BUY)
{
close=OrderClose(tk,lo,Bid,5*Q);
}
if(ot==OP_SELL)
{
close=OrderClose(tk,lo,Ask,5*Q);
}
}
}
}
}


هى الشروط ده اذا كيف اكتبها

if(ordersbuy()>=10&MyBuyProfit(MagicNumber)>0&&PriceNow>envo_upper2){CloseBuyOrders();}
if(orderssell()>=10&&MySellProfit(MagicNumber)>0&&PriceNow<envo_lower2){CloseSellOrders();}
واسف لانى لا املك الخبره الكافيه

kira-h
15-05-2021, 04:11 AM
هى الشروط ده اذا كيف اكتبها

if(ordersbuy()>=10&MyBuyProfit(MagicNumber)>0&&PriceNow>envo_upper2){CloseBuyOrders();}
if(orderssell()>=10&&MySellProfit(MagicNumber)>0&&PriceNow<envo_lower2){CloseSellOrders();}
واسف لانى لا املك الخبره الكافيه
تضع الدالة (نسخ - لصق) خارج الدوال الرئيسية
ثم تعدل الشروط كالتالي:


if(ordersbuy()>=10&MyBuyProfit(MagicNumber)>0&&PriceNow>envo_upper2){CloseOrdersPt(OP_BUY);}
if(orderssell()>=10&&MySellProfit(MagicNumber)>0&&PriceNow<envo_lower2){CloseOrdersPt(OP_SELL);}

shivaa
15-05-2021, 05:36 PM
ممكن اعرف كيف تقريب الارقام العشريه
مثلا

الرقم 0.0352857142857143
يقرب الى
0.04

اكون شاكر

kira-h
15-05-2021, 06:26 PM
ممكن اعرف كيف تقريب الارقام العشريه
مثلا

الرقم 0.0352857142857143
يقرب الى
0.04

اكون شاكر
السلام عليكم
استخدم الوظيفة NormalizeDouble تضع فيه العدد ثم عدد الاعشار بعد الفاصلة
حسب مثالك ستضع :
NormalizeDouble(0.0362857142857143 , 2)

shivaa
15-05-2021, 09:09 PM
السلام عليكم
استخدم الوظيفة NormalizeDouble تضع فيه العدد ثم عدد الاعشار بعد الفاصلة
حسب مثالك ستضع :
NormalizeDouble(0.0362857142857143 , 2)
المطلوب
هو رفع العدد العشرى وليسى قطع العدد العشرى
الناتج هو 0.04 وليسى 0.03
مالحل اكون شاكر

kira-h
15-05-2021, 09:16 PM
المطلوب
هو رفع العدد العشرى وليسى قطع العدد العشرى
الناتج هو 0.04 وليسى 0.03
مالحل اكون شاكر
الناتج 0.04 بالفعل وليس 0.03 تأكد من ذلك اخي
يوجد ايضا الوظيفة MathFloor تقرب العدد العشري بنقطة اقرب يعني مثلا 0.0154 تصبح 0.015 و 0.0155 تصبح 0.16

shivaa
16-05-2021, 03:47 AM
الناتج 0.04 بالفعل وليس 0.03 تأكد من ذلك اخي
يوجد ايضا الوظيفة MathFloor تقرب العدد العشري بنقطة اقرب يعني مثلا 0.0154 تصبح 0.015 و 0.0155 تصبح 0.16
السلام عليكم
اسف تعبك معى
مشكلتى هى انا بحاول اعمل داله تحسب عدد الخسائر فى شمعه واحده فقط
مع العلم يوجد صفقات بيع وشراء كثيره مغلقه
ولا يوجد على الشمعه الا صفقه واحده مفعله
وعلى اساسه تجميع الخسائر احدد الوط الدخول القادم على اساس معادله الاتيه
اللوط الجديد =مجموع الحسائر على حجم الشمعه
مع معلوميه حجم الشمعه وهو 5 نقاط
وكل محولتى لم تنجح ممكن تساعدنى عمل الدله اكون شاكر

metmet
16-05-2021, 05:34 AM
السلام عليكم ورحمة الله وبركاته

أريد كود يجعل الاكسيبرت يفتح الصفقات المضاعفة
بدلا كل 30 نقطة يفتح صفقة مضاعفة
يفتح أول 5 صفقات بعد 30 نقطة ... وباقى صفقات المضاعفات بعد 60 نقطة
هذا هو الكود الموجود بالاكسيبرت



void f0_8(int A_magic_0, string As_4) {
int cmd_16;
double order_open_price_20;
double order_lots_28;
double Ld_40;
int Li_12 = f0_13(A_magic_0);
if (Li_12 > 0 && Li_12 < Level_Max) {
for (int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++) {
if (OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() != Symbol() || OrderMagicNumber() != A_magic_0) continue;
cmd_16 = OrderType();
order_open_price_20 = OrderOpenPrice();
order_lots_28 = OrderLots();
}
}
Ld_40 = order_open_price_20 - pips * Gd_376;
if (cmd_16 == OP_BUY && Ask <= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
Ld_40 = order_open_price_20 + pips * Gd_376;
if (cmd_16 == OP_SELL && Bid >= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
}
}



وجزاكم الله الجنة

shivaa
16-05-2021, 02:16 PM
السلام عليكم
اسف تعبك معى
مشكلتى هى انا بحاول اعمل داله تحسب عدد الخسائر فى شمعه واحده فقط
مع العلم يوجد صفقات بيع وشراء كثيره مغلقه
ولا يوجد على الشمعه الا صفقه واحده مفعله
وعلى اساسه تجميع الخسائر احدد الوط الدخول القادم على اساس معادله الاتيه
اللوط الجديد =مجموع الحسائر على حجم الشمعه
مع معلوميه حجم الشمعه وهو 5 نقاط
وكل محولتى لم تنجح ممكن تساعدنى عمل الدله اكون شاكر

ده اخر ما توصلت اليه


static double TOTL_LOSS=0;
static double TOTL_LOSS_COMM_BAR;
int Total_Orders_History;
TOTL_LOSS_COMM_BAR=(LAST_LOSS_Profit+LAST_LOSS_Com mission);// قيمه اخر خساره
if(Total_Orders_History!=OrdersHistoryTotal())
{
if(TOTL_LOSS_COMM_BAR<0)
{
TOTL_LOSS=TOTL_LOSS+(TOTL_LOSS_COMM_BAR);
}
Total_Orders_History=OrdersHistoryTotal() ;
}


المشكله فى الكود فى السطر ده

TOTL_LOSS=TOTL_LOSS+(TOTL_LOSS_COMM_BAR);


بيكرر نفس ناتج + ناتج القديم ولا يقف الا اذا كان الصفقه رابحه
ارجو مساعده اكون شاكر

kira-h
16-05-2021, 08:42 PM
ده اخر ما توصلت اليه


static double TOTL_LOSS=0;
static double TOTL_LOSS_COMM_BAR;
int Total_Orders_History;
TOTL_LOSS_COMM_BAR=(LAST_LOSS_Profit+LAST_LOSS_Com mission);// قيمه اخر خساره
if(Total_Orders_History!=OrdersHistoryTotal())
{
if(TOTL_LOSS_COMM_BAR<0)
{
TOTL_LOSS=TOTL_LOSS+(TOTL_LOSS_COMM_BAR);
}
Total_Orders_History=OrdersHistoryTotal() ;
}


المشكله فى الكود فى السطر ده

TOTL_LOSS=TOTL_LOSS+(TOTL_LOSS_COMM_BAR);


بيكرر نفس ناتج + ناتج القديم ولا يقف الا اذا كان الصفقه رابحه
ارجو مساعده اكون شاكر
لا تعتمد على الدوال الثابثة من نوع static لأنها تفقد قيمتها بمجرد اغلاق الشارت او المنصة وتبدأ من جديد
دالة حساب اجمالي خسائر وارباح الصفقات المغلقة بالشمعة الحالية للشارت الحالي كالتالي :


double TotalProfitBar(int type=-1)
{
double pts=0;
for(int i=0; i<OrdersHistoryTotal(); i++)
{
bool s=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string sy=OrderSymbol();
int mn=OrderMagicNumber(),
ot=OrderType();
double pt=OrderProfit(),
sw=OrderSwap(),
cm=OrderCommission();
datetime tm=OrderCloseTime();
if(sy==Symbol()&&mn==MagicNumber)
{
if(ot==type||type==-1)
{
if(tm>=Time[0])pts+=pt+sw+cm;
}
}
}
return(pts);
}


ثم المعادلة حسب ما شرحك هي كالتالي :


void OnTick()
{
double NewLots=Lots;
if(TotalProfitBar()<0&&(BarVolume*Point)>0)NewLots=MathMin(NormalizeDouble(TotalProfitBar()/(BarVolume*Point),2),MarketInfo(Symbol(),MODE_MAXL OT));
//---
}


بحيث :
Lots قيمة اللوت الأساسي
NewLots لوت فتح الصفقة
BarVolume حجم الشمعة بالتكات (بالمنصة الخماسية) (قيمة النقطة الافتراضية)

kira-h
16-05-2021, 08:59 PM
السلام عليكم ورحمة الله وبركاته

أريد كود يجعل الاكسيبرت يفتح الصفقات المضاعفة
بدلا كل 30 نقطة يفتح صفقة مضاعفة
يفتح أول 5 صفقات بعد 30 نقطة ... وباقى صفقات المضاعفات بعد 60 نقطة
هذا هو الكود الموجود بالاكسيبرت



void f0_8(int A_magic_0, string As_4) {
int cmd_16;
double order_open_price_20;
double order_lots_28;
double Ld_40;
int Li_12 = f0_13(A_magic_0);
if (Li_12 > 0 && Li_12 < Level_Max) {
for (int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++) {
if (OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() != Symbol() || OrderMagicNumber() != A_magic_0) continue;
cmd_16 = OrderType();
order_open_price_20 = OrderOpenPrice();
order_lots_28 = OrderLots();
}
}
Ld_40 = order_open_price_20 - pips * Gd_376;
if (cmd_16 == OP_BUY && Ask <= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
Ld_40 = order_open_price_20 + pips * Gd_376;
if (cmd_16 == OP_SELL && Bid >= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
}
}



وجزاكم الله الجنة

وعليكم السلام
الكود الذي ارفقته غير كاف لعمل الشروط كما انه مكسور به رموز صعب تتبعها
عموما جرب الدالة التالية:


void f0_8(int A_magic_0, string As_4)
{
int cmd_16,cnt=0;
double order_open_price_20;
double order_lots_28;
double Ld_40;
int Li_12 = f0_13(A_magic_0);
if(Li_12 > 0 && Li_12 < Level_Max)
{
for(int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++)
{
if(OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() != Symbol() || OrderMagicNumber() != A_magic_0)
continue;
cmd_16 = OrderType();
order_open_price_20 = OrderOpenPrice();
order_lots_28 = OrderLots();
cnt++;
}
}
Ld_40 = order_open_price_20 - pips * Gd_376;
if(cmd_16 == OP_BUY)
{
if(Ask <= Ld_40&&cnt<5)
G_ticket_408 = OrderSend(Symbol(), OP_BUY, order_lots_28, Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
if(Ask <= Ld_40*2&&cnt>=5)
G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
}
Ld_40 = order_open_price_20 + pips * Gd_376;
if(cmd_16 == OP_SELL)
{
if(Bid >= Ld_40&&cnt<5)
G_ticket_408 = OrderSend(Symbol(), OP_SELL, order_lots_28, Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
if(Bid >= Ld_40*2&&cnt>=5)
G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
}
}
}

metmet
16-05-2021, 10:58 PM
وعليكم السلام
الكود الذي ارفقته غير كاف لعمل الشروط كما انه مكسور به رموز صعب تتبعها
عموما جرب الدالة التالية:


void f0_8(int A_magic_0, string As_4)
{
int cmd_16,cnt=0;
double order_open_price_20;
double order_lots_28;
double Ld_40;
int Li_12 = f0_13(A_magic_0);
if(Li_12 > 0 && Li_12 < Level_Max)
{
for(int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++)
{
if(OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() != Symbol() || OrderMagicNumber() != A_magic_0)
continue;
cmd_16 = OrderType();
order_open_price_20 = OrderOpenPrice();
order_lots_28 = OrderLots();
cnt++;
}
}
Ld_40 = order_open_price_20 - pips * Gd_376;
if(cmd_16 == OP_BUY)
{
if(Ask <= Ld_40&&cnt<5)
G_ticket_408 = OrderSend(Symbol(), OP_BUY, order_lots_28, Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
if(Ask <= Ld_40*2&&cnt>=5)
G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
}
Ld_40 = order_open_price_20 + pips * Gd_376;
if(cmd_16 == OP_SELL)
{
if(Bid >= Ld_40&&cnt<5)
G_ticket_408 = OrderSend(Symbol(), OP_SELL, order_lots_28, Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
if(Bid >= Ld_40*2&&cnt>=5)
G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
}
}
}


السلام عليكم ورحمة الله وبركاته
مشكور لتعب حضرتك ... ربنا يجزيك خير
الدالة التي أرسلتها حضرتك
غيرت لوت أول خمس صفقات وجعلتهم لوت ثابت 0.01
وبعدها يتم استخدام المضاعفات (DiMarti)
وهذا ليس المطلوب
-----------------
طبيعة عمل الاكسيبرت

يفتح صفقة 0.01 وبعد عدد نقاط (pips) 30 نقطة يفتح صفقة أخرى مضاعفة لوت مرة ونصف (DiMarti) وهكذا ...
وهذا (pips ) متغير خارجي
وهذه المضاعفة (DiMarti) متغير خارجي
-----------------
المطلوب

يفتح أول خمس صفقات الأولى كل عدد نقاط (pips) 30 نقطة ... حيث أن ال (pips) متغير خارجي
يفتح باقي الصفقات كل عدد نقاط (pips_2) 60 نقطة ...حيث أن ال (pips_2) متغير خارجي

علما بأن ال (pips) بالفعل موجودة بالاكسيبرت
وأحتاج إضافة (pips_2) كمتغير خارجي
--------------------------

وجزاك الله الجنة

kira-h
16-05-2021, 11:38 PM
السلام عليكم ورحمة الله وبركاته
مشكور لتعب حضرتك ... ربنا يجزيك خير
الدالة التي أرسلتها حضرتك
غيرت لوت أول خمس صفقات وجعلتهم لوت ثابت 0.01
وبعدها يتم استخدام المضاعفات (DiMarti)
وهذا ليس المطلوب
-----------------
طبيعة عمل الاكسيبرت

يفتح صفقة 0.01 وبعد عدد نقاط (pips) 30 نقطة يفتح صفقة أخرى مضاعفة لوت مرة ونصف (DiMarti) وهكذا ...
وهذا (pips ) متغير خارجي
وهذه المضاعفة (DiMarti) متغير خارجي
-----------------
المطلوب

يفتح أول خمس صفقات الأولى كل عدد نقاط (pips) 30 نقطة ... حيث أن ال (pips) متغير خارجي
يفتح باقي الصفقات كل عدد نقاط (pips_2) 60 نقطة ...حيث أن ال (pips_2) متغير خارجي

علما بأن ال (pips) بالفعل موجودة بالاكسيبرت
وأحتاج إضافة (pips_2) كمتغير خارجي
--------------------------

وجزاك الله الجنة
وعليكم السلام
طيب جرب الكود التالي :


void f0_8(int A_magic_0, string As_4)
{
int cmd_16,cnt=0;
double order_open_price_20;
double order_lots_28;
double Ld_40;
int Li_12 = f0_13(A_magic_0);
if(Li_12 > 0 && Li_12 < Level_Max)
{
for(int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++)
{
if(OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() != Symbol() || OrderMagicNumber() != A_magic_0)
continue;
cmd_16 = OrderType();
order_open_price_20 = OrderOpenPrice();
order_lots_28 = OrderLots();
cnt++;
}
}

if(cmd_16 == OP_BUY)
{
Ld_40 = order_open_price_20 - pips * Gd_376;
if(Ask <= Ld_40&&cnt<5)
G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
Ld_40 = order_open_price_20 - pips_2 * Gd_376;
if(Ask <= Ld_40&&cnt>=5)
G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
}
if(cmd_16 == OP_SELL)
{
Ld_40 = order_open_price_20 + pips * Gd_376;
if(Bid >= Ld_40&&cnt<5)
G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
Ld_40 = order_open_price_20 + pips_2 * Gd_376;
if(Bid >= Ld_40&&cnt>=5)
G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
}
}
}

metmet
16-05-2021, 11:51 PM
السلام عليكم ورحمة الله وبركاته
مشكور لتعب حضرتك ... ربنا يجزيك خير
الدالة التي أرسلتها حضرتك
غيرت لوت أول خمس صفقات وجعلتهم لوت ثابت 0.01
وبعدها يتم استخدام المضاعفات (DiMarti)
وهذا ليس المطلوب
-----------------
طبيعة عمل الاكسيبرت

يفتح صفقة 0.01 وبعد عدد نقاط (pips) 30 نقطة يفتح صفقة أخرى مضاعفة لوت مرة ونصف (DiMarti) وهكذا ...
وهذا (pips ) متغير خارجي
وهذه المضاعفة (DiMarti) متغير خارجي
-----------------
المطلوب

يفتح أول خمس صفقات الأولى كل عدد نقاط (pips) 30 نقطة ... حيث أن ال (pips) متغير خارجي
يفتح باقي الصفقات كل عدد نقاط (pips_2) 60 نقطة ...حيث أن ال (pips_2) متغير خارجي

علما بأن ال (pips) بالفعل موجودة بالاكسيبرت
وأحتاج إضافة (pips_2) كمتغير خارجي
--------------------------

وجزاك الله الجنة


لقد قمت بتعديل وقمت بعمل تيست له ... وان شاء الله يكون صحيح
أرجو أن تلقي نظرة عليه
واذا كان به خطأ توضحه لى
فقد اقتبست من الدالة التي قمت بكتابتها وغيرت حسب خبرتي القليلة حتى توصلت لهذا التعديل
طبعا إذا كان صحيح فلك الفضل ف ذلك بعد الله عز وجل
وإذا كان هناك خطأ فهو منى
أرجو إلقاء نظرة على الدالة والتعليق عليها

جزاك الله الجنة

void f0_8(int A_magic_0, string As_4)
{
int cmd_16,cnt=0;
double order_open_price_20;
double order_lots_28;
double Ld_40;
int Li_12 = f0_13(A_magic_0);
if (Li_12 > 0 && Li_12 < Level_Max)
{
for (int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++)
{
if (OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() != Symbol() || OrderMagicNumber() != A_magic_0) continue;
cmd_16 = OrderType();
order_open_price_20 = OrderOpenPrice();
order_lots_28 = OrderLots();
cnt++;
}
}
Ld_40 = order_open_price_20 - pips * Gd_376;
if(Ask <= Ld_40&&cnt<5)
if (cmd_16 == OP_BUY && Ask <= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);

Ld_40 = order_open_price_20 + pips * Gd_376;
if(Bid >= Ld_40&&cnt<5)
if (cmd_16 == OP_SELL && Bid >= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);


Ld_40 = order_open_price_20 - pips_2 * Gd_376;
if(Ask <= Ld_40*2&&cnt>=5);
if (cmd_16 == OP_BUY && Ask <= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
if(Ask <= Ld_40*2&&cnt>=5);
Ld_40 = order_open_price_20 + pips * Gd_376;
if(Bid >= Ld_40&&cnt>5);
if (cmd_16 == OP_SELL && Bid >= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);

}
}

kira-h
17-05-2021, 06:15 PM
لقد قمت بتعديل وقمت بعمل تيست له ... وان شاء الله يكون صحيح
أرجو أن تلقي نظرة عليه
واذا كان به خطأ توضحه لى
فقد اقتبست من الدالة التي قمت بكتابتها وغيرت حسب خبرتي القليلة حتى توصلت لهذا التعديل
طبعا إذا كان صحيح فلك الفضل ف ذلك بعد الله عز وجل
وإذا كان هناك خطأ فهو منى
أرجو إلقاء نظرة على الدالة والتعليق عليها

جزاك الله الجنة

void f0_8(int A_magic_0, string As_4)
{
int cmd_16,cnt=0;
double order_open_price_20;
double order_lots_28;
double Ld_40;
int Li_12 = f0_13(A_magic_0);
if (Li_12 > 0 && Li_12 < Level_Max)
{
for (int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++)
{
if (OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() != Symbol() || OrderMagicNumber() != A_magic_0) continue;
cmd_16 = OrderType();
order_open_price_20 = OrderOpenPrice();
order_lots_28 = OrderLots();
cnt++;
}
}
Ld_40 = order_open_price_20 - pips * Gd_376;
if(Ask <= Ld_40&&cnt<5)
if (cmd_16 == OP_BUY && Ask <= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);

Ld_40 = order_open_price_20 + pips * Gd_376;
if(Bid >= Ld_40&&cnt<5)
if (cmd_16 == OP_SELL && Bid >= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);


Ld_40 = order_open_price_20 - pips_2 * Gd_376;
if(Ask <= Ld_40*2&&cnt>=5);
if (cmd_16 == OP_BUY && Ask <= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
if(Ask <= Ld_40*2&&cnt>=5);
Ld_40 = order_open_price_20 + pips * Gd_376;
if(Bid >= Ld_40&&cnt>5);
if (cmd_16 == OP_SELL && Bid >= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);

}
}


الدالة خاطئة
استخدم الدالة الصحيحة بمشاركتي السابقة

shivaa
18-05-2021, 05:43 PM
لا تعتمد على الدوال الثابثة من نوع static لأنها تفقد قيمتها بمجرد اغلاق الشارت او المنصة وتبدأ من جديد
دالة حساب اجمالي خسائر وارباح الصفقات المغلقة بالشمعة الحالية للشارت الحالي كالتالي :


double TotalProfitBar(int type=-1)
{
double pts=0;
for(int i=0; i<OrdersHistoryTotal(); i++)
{
bool s=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string sy=OrderSymbol();
int mn=OrderMagicNumber(),
ot=OrderType();
double pt=OrderProfit(),
sw=OrderSwap(),
cm=OrderCommission();
datetime tm=OrderCloseTime();
if(sy==Symbol()&&mn==MagicNumber)
{
if(ot==type||type==-1)
{
if(tm>=Time[0])pts+=pt+sw+cm;
}
}
}
return(pts);
}


ثم المعادلة حسب ما شرحك هي كالتالي :


void OnTick()
{
double NewLots=Lots;
if(TotalProfitBar()<0&&(BarVolume*Point)>0)NewLots=MathMin(NormalizeDouble(TotalProfitBar()/(BarVolume*Point),2),MarketInfo(Symbol(),MODE_MAXL OT));
//---
}


بحيث :
Lots قيمة اللوت الأساسي
NewLots لوت فتح الصفقة
BarVolume حجم الشمعة بالتكات (بالمنصة الخماسية) (قيمة النقطة الافتراضية)




جزاك الله خيرااااااا

kira-h
18-05-2021, 06:29 PM
جزاك الله خيرااااااا
بالتوفيق إن شاء الله

sabil
19-05-2021, 12:12 AM
السلام عليكم اخي حسن
كل عام وانتم بخير
عملت شرطين داخل اكسبرت لرسم خطوط افقية والمعادلة الل بيرسم بيها صحيحة وتمام
بعدين اعطيت متغيرين للخطين الافقيين عشان استدعيهم ف شروط الخروج
لكن السعر بيعدي ع الخطوط كأنهم غير موجودين


if(LastSignal()==-1&&ch(0,1)!=0&&LD0<LD1)
{
Draw_Line("Line UP",lineup_price1,Lime);
}

if(LastSignal()==-1&&ch(0,1)!=0&&LD0>LD1)
{
Draw_Line("Line UP",lineup_price2,Lime);
}

if(LastSignal()==1&&ch(1,1)!=0&&HD0>HD1)
{
Draw_Line("Line DN",linedn_price1,Red);
}

if(LastSignal()==1&&ch(1,1)!=0&&HD0<HD1)
{
Draw_Line("Line DN",linedn_price2,Red);
}



double Upline_H=ObjectGet("Line UP",0);
double Downline_H=ObjectGet("Line DN",0);


if(CloseAtNext) {
//--------Close Buy Order
if((High[0]>=Upline_H&&one_Profit(OP_BUY)>0)||(LastSignal()==1&&ch(1,1)!=0&&one_Profit(OP_BUY)>0))CloseOrders(OP_BUY);//||(LastSignal()==1&&ch(1,1)!=0))
//--------Close Sell Order
if((Low[0]<=Downline_H&&one_Profit(OP_SELL)>0)||(LastSignal()==-1&&ch(0,1)!=0&&one_Profit(OP_SELL)>0))CloseOrders(OP_SELL);//||(LastSignal()==-1&&ch(0,1)!=0))


}

ارجو تصحيح الخطأ

kira-h
19-05-2021, 09:18 PM
السلام عليكم اخي حسن
كل عام وانتم بخير
عملت شرطين داخل اكسبرت لرسم خطوط افقية والمعادلة الل بيرسم بيها صحيحة وتمام
بعدين اعطيت متغيرين للخطين الافقيين عشان استدعيهم ف شروط الخروج
لكن السعر بيعدي ع الخطوط كأنهم غير موجودين


if(LastSignal()==-1&&ch(0,1)!=0&&LD0<LD1)
{
Draw_Line("Line UP",lineup_price1,Lime);
}

if(LastSignal()==-1&&ch(0,1)!=0&&LD0>LD1)
{
Draw_Line("Line UP",lineup_price2,Lime);
}

if(LastSignal()==1&&ch(1,1)!=0&&HD0>HD1)
{
Draw_Line("Line DN",linedn_price1,Red);
}

if(LastSignal()==1&&ch(1,1)!=0&&HD0<HD1)
{
Draw_Line("Line DN",linedn_price2,Red);
}



double Upline_H=ObjectGet("Line UP",0);
double Downline_H=ObjectGet("Line DN",0);


if(CloseAtNext) {
//--------Close Buy Order
if((High[0]>=Upline_H&&one_Profit(OP_BUY)>0)||(LastSignal()==1&&ch(1,1)!=0&&one_Profit(OP_BUY)>0))CloseOrders(OP_BUY);//||(LastSignal()==1&&ch(1,1)!=0))
//--------Close Sell Order
if((Low[0]<=Downline_H&&one_Profit(OP_SELL)>0)||(LastSignal()==-1&&ch(0,1)!=0&&one_Profit(OP_SELL)>0))CloseOrders(OP_SELL);//||(LastSignal()==-1&&ch(0,1)!=0))


}

ارجو تصحيح الخطأ

وعليكم السلام
إذا كانت الخطوط افقية فالصحيح كتابته بالاستدعاء كالتالي:


double Upline_H=ObjectGet("Line UP",OBJPROP_PRICE1);
double Downline_H=ObjectGet("Line DN",OBJPROP_PRICE1);

shivaa
24-05-2021, 08:25 AM
السلام عليكم
ممكن مساعده بحاول ايجاد سعر اخر اربع اسهم على الشرط كما فى الصوره
ممكن اارجع اسعار اذا كان الاسم ثابت

ObjectDescription("up")
ولكن كل سهم له اسم خاص بيه
للعلم الرقم الموجو بجوار الاسم هو عدد BARS عند الرسم السهم
المطلوب اعرف اسماء اخر اربع اسهم حتى اتمكن من ايجاد اسعارهم
شاكر لله وجزاك الله خيراااااااااااااااا


27125

metmet
24-05-2021, 06:13 PM
وعليكم السلام
الكود الذي ارفقته غير كاف لعمل الشروط كما انه مكسور به رموز صعب تتبعها
عموما جرب الدالة التالية:


void f0_8(int A_magic_0, string As_4)
{
int cmd_16,cnt=0;
double order_open_price_20;
double order_lots_28;
double Ld_40;
int Li_12 = f0_13(A_magic_0);
if(Li_12 > 0 && Li_12 < Level_Max)
{
for(int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++)
{
if(OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() != Symbol() || OrderMagicNumber() != A_magic_0)
continue;
cmd_16 = OrderType();
order_open_price_20 = OrderOpenPrice();
order_lots_28 = OrderLots();
cnt++;
}
}
Ld_40 = order_open_price_20 - pips * Gd_376;
if(cmd_16 == OP_BUY)
{
if(Ask <= Ld_40&&cnt<5)
G_ticket_408 = OrderSend(Symbol(), OP_BUY, order_lots_28, Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
if(Ask <= Ld_40*2&&cnt>=5)
G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
}
Ld_40 = order_open_price_20 + pips * Gd_376;
if(cmd_16 == OP_SELL)
{
if(Bid >= Ld_40&&cnt<5)
G_ticket_408 = OrderSend(Symbol(), OP_SELL, order_lots_28, Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
if(Bid >= Ld_40*2&&cnt>=5)
G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
}
}
}



السلام عليكم ورحمة الله وبركاته
مشكور لتعب حضرتك ... ربنا يجزيك خير
الدالة التي أرسلتها حضرتك
غيرت لوت أول خمس صفقات وجعلتهم لوت ثابت 0.01
وبعدها يتم استخدام المضاعفات (DiMarti)
وهذا ليس المطلوب
-----------------
طبيعة عمل الاكسيبرت

يفتح صفقة 0.01 وبعد عدد نقاط (pips) 30 نقطة يفتح صفقة أخرى مضاعفة لوت مرة ونصف (DiMarti) وهكذا ...
وهذا (pips ) متغير خارجي
وهذه المضاعفة (DiMarti) متغير خارجي
-----------------
المطلوب

يفتح أول خمس صفقات الأولى كل عدد نقاط (pips) 30 نقطة ... حيث أن ال (pips) متغير خارجي
يفتح باقي الصفقات كل عدد نقاط (pips_2) 60 نقطة ...حيث أن ال (pips_2) متغير خارجي

علما بأن ال (pips) بالفعل موجودة بالاكسيبرت
وأحتاج إضافة (pips_2) كمتغير خارجي
--------------------------

وجزاك الله الجنة

simba2000
24-05-2021, 08:40 PM
السلام عليكم م kira والساده المبرمجين


فضلا لا أمرا
ما هوالكود البرمجى الذى يجب أن أستخدمه لكى :

1- على شارت الرينكو، الدخول فى الشمعه الحاليه حسب إتجاه او لون الشمعه السابقه ، يعنى لو الشمعه السابقه (1) لونها أخضر يبقى هندخل شراء والعكس صحيح والدخول مباشره بعدإغلاق الشمعه (1) أو إكتمال حجم البوكس الخاص بها
2- مهم جدا عندما أضع الإكسبيرت على شاشه الرينكو وتكون الشمعه الحاليه - شمعه(0) - مازالت تتكون ولم يكتمل البوكس الخاص بها - ، فإن الإكسبيرت لايضع أوامر إلا بعد إكتمال حجم البوكس

kira-h
24-05-2021, 10:36 PM
السلام عليكم م kira والساده المبرمجين


فضلا لا أمرا
ما هوالكود البرمجى الذى يجب أن أستخدمه لكى :

1- على شارت الرينكو، الدخول فى الشمعه الحاليه حسب إتجاه او لون الشمعه السابقه ، يعنى لو الشمعه السابقه (1) لونها أخضر يبقى هندخل شراء والعكس صحيح والدخول مباشره بعدإغلاق الشمعه (1) أو إكتمال حجم البوكس الخاص بها
2- مهم جدا عندما أضع الإكسبيرت على شاشه الرينكو وتكون الشمعه الحاليه - شمعه(0) - مازالت تتكون ولم يكتمل البوكس الخاص بها - ، فإن الإكسبيرت لايضع أوامر إلا بعد إكتمال حجم البوكس

وعليكم السلام
مثال :


if(Close[1]>Open[1]&&Volume[0]<5)//Buy
if(Close[1]<Open[1]&&Volume[0]<5)//Sell

kira-h
24-05-2021, 10:38 PM
السلام عليكم ورحمة الله وبركاته
مشكور لتعب حضرتك ... ربنا يجزيك خير
الدالة التي أرسلتها حضرتك
غيرت لوت أول خمس صفقات وجعلتهم لوت ثابت 0.01
وبعدها يتم استخدام المضاعفات (DiMarti)
وهذا ليس المطلوب
-----------------
طبيعة عمل الاكسيبرت

يفتح صفقة 0.01 وبعد عدد نقاط (pips) 30 نقطة يفتح صفقة أخرى مضاعفة لوت مرة ونصف (DiMarti) وهكذا ...
وهذا (pips ) متغير خارجي
وهذه المضاعفة (DiMarti) متغير خارجي
-----------------
المطلوب

يفتح أول خمس صفقات الأولى كل عدد نقاط (pips) 30 نقطة ... حيث أن ال (pips) متغير خارجي
يفتح باقي الصفقات كل عدد نقاط (pips_2) 60 نقطة ...حيث أن ال (pips_2) متغير خارجي

علما بأن ال (pips) بالفعل موجودة بالاكسيبرت
وأحتاج إضافة (pips_2) كمتغير خارجي
--------------------------

وجزاك الله الجنة

وعليكم السلام
طيب جرب الدالة التالية :


void f0_8(int A_magic_0, string As_4)
{
int cmd_16,cnt=0;
double order_open_price_20;
double order_lots_28;
double Ld_40;
int Li_12 = f0_13(A_magic_0);
if(Li_12 > 0 && Li_12 < Level_Max)
{
for(int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++)
{
if(OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() != Symbol() || OrderMagicNumber() != A_magic_0)
continue;
cmd_16 = OrderType();
order_open_price_20 = OrderOpenPrice();
order_lots_28 = OrderLots();
cnt++;
}
}
Ld_40 = order_open_price_20 - pips * Gd_376;
if(cmd_16 == OP_BUY)
{
if(Ask <= Ld_40&&cnt<5)
G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
if(Ask <= Ld_40*2&&cnt>=5)
G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
}
Ld_40 = order_open_price_20 + pips * Gd_376;
if(cmd_16 == OP_SELL)
{
if(Bid >= Ld_40&&cnt<5)
G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
if(Bid >= Ld_40*2&&cnt>=5)
G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
}
}
}

kira-h
24-05-2021, 10:42 PM
السلام عليكم
ممكن مساعده بحاول ايجاد سعر اخر اربع اسهم على الشرط كما فى الصوره
ممكن اارجع اسعار اذا كان الاسم ثابت

ObjectDescription("up")
ولكن كل سهم له اسم خاص بيه
للعلم الرقم الموجو بجوار الاسم هو عدد BARS عند الرسم السهم
المطلوب اعرف اسماء اخر اربع اسهم حتى اتمكن من ايجاد اسعارهم
شاكر لله وجزاك الله خيراااااااااااااااا


27125
وعليكم السلام
عدد الشموع متغير غير ثابث وبالتالي لا يمكن رصد اسعار الاسهم
تحتاج إلى تعديل المؤشر نفسه

simba2000
24-05-2021, 10:53 PM
السلام عليكم مkira

هل هذا الكود يحقق المطلبين ؟
ولماذا volume[0] < 5
لماذا 5 بالذات؟
شكرا مقدما

simba2000
24-05-2021, 10:58 PM
اخى كيرا

هذا المطلب مهم جدا كيف احققه ؟


2- مهم جدا عندما أضع الإكسبيرت على شاشه الرينكو وتكون الشمعه الحاليه - شمعه(0) - مازالت تتكون ولم يكتمل البوكس الخاص بها - ، فإن الإكسبيرت لايضع أوامر إلا بعد إكتمال حجم البوكس

عندما اضع الإكسبيرت على شارت الرينكو والشمعه صفرمازالت فى طور التكوين ، الإكسبيرت يفعل أوامر وهذا خطأ، تفعيل الأوامربعدإكتمال حجم البوكس فقط
برجاء المساعده
شكرا

kira-h
25-05-2021, 02:27 AM
السلام عليكم مkira

هل هذا الكود يحقق المطلبين ؟
ولماذا volume[0] < 5
لماذا 5 بالذات؟
شكرا مقدما


اخى كيرا

هذا المطلب مهم جدا كيف احققه ؟

2- مهم جدا عندما أضع الإكسبيرت على شاشه الرينكو وتكون الشمعه الحاليه - شمعه(0) - مازالت تتكون ولم يكتمل البوكس الخاص بها - ، فإن الإكسبيرت لايضع أوامر إلا بعد إكتمال حجم البوكس
عندما اضع الإكسبيرت على شارت الرينكو والشمعه صفرمازالت فى طور التكوين ، الإكسبيرت يفعل أوامر وهذا خطأ، تفعيل الأوامربعدإكتمال حجم البوكس فقط
برجاء المساعده
شكرا

وعليكم السلام
لهذا وضعت الشرط 5 يعني حجم الشمعة لا يكون تجاوز 5 تكات (نصف نقطة) يعبر عن بداية تكوين الشمعة وبالتالي له الحق في فتح الأوامر كما طلبت، ويمكنك أن تضع اي رقم تريد إلا 0

simba2000
26-05-2021, 10:18 PM
وعليكم السلام
لهذا وضعت الشرط 5 يعني حجم الشمعة لا يكون تجاوز 5 تكات (نصف نقطة) يعبر عن بداية تكوين الشمعة وبالتالي له الحق في فتح الأوامر كما طلبت، ويمكنك أن تضع اي رقم تريد إلا 0


أخى الفاضل الكود لا ينفذ المطلوب
ما علاقه الvolume بحجم البوكس ؟

برجاء مساعدتى بكود أخر
شكرا مقدما

kira-h
27-05-2021, 03:29 AM
أخى الفاضل الكود لا ينفذ المطلوب
ما علاقه الvolume بحجم البوكس ؟

برجاء مساعدتى بكود أخر
شكرا مقدما
اخي الكريم الكود سليم، هل جربته اولا ؟
الفوليوم هو حجم البوكس ليس هو طول البوكس فالفرق شاسع بينهما،
الفوليوم او الحجم هو عدد التكات التي تحركها السعر بالشمعة من بداية تكوينها الى نهايتها.
يعني صعد السعر تكة تحسب 1، نزل تكة تحسب 2، نزل تكة اخرى تحسب 3،،، وهكذا تضاف تكة كل حركة تكة جديدة ولا يهم اتجاهها.
يوجد مؤشر الفوليوم ضمن المؤشرات الاساسية راجعه لتفهم اكثر.
لهذا وضعت شرط الفوليوم= 5 او اي رقم صغير اقل من 10 اي اقل من نقطة، لينفذ الشرط عند اول تكوين للشمعة يعني بمجرد افتتاح الشمعة الجديدة ينفذ الشرط وليس بمنتصفها... وهذا ما تريده ولن تجد افضل من هذا الشرط بدقته.

shivaa
27-05-2021, 03:39 PM
وعليكم السلام
عدد الشموع متغير غير ثابث وبالتالي لا يمكن رصد اسعار الاسهم
تحتاج إلى تعديل المؤشر نفسه
السلام عليكم مرفق ملف المؤشر
ممكن تعدله لى اكون شاكر
المطلوب استخراج قيمه 4 اسهم اخر 2 شراء (اخضر) واخر بيع (احمر)

kira-h
27-05-2021, 09:07 PM
السلام عليكم مرفق ملف المؤشر
ممكن تعدله لى اكون شاكر
المطلوب استخراج قيمه 4 اسهم اخر 2 شراء (اخضر) واخر بيع (احمر)
وعليكم السلام
المؤشر من نوع اندكس لا يحتاج لتعديل لكن في هذه الحالة يمكن عمل التالي لمعرفة اسعار اخر سهمين من نفس النوع :
اولا دالة تستخرج سعر اغلاق اخر سهم بدلالة نوع السهم كالتالي:


double LastArrow1(string info)
{
for(int i=1; i<100; i++)
{
if(info=="up"&&ar(0,i)!=EMPTY_VALUE)
return(Close[i]);
if(info=="dn"&&ar(1,i)!=EMPTY_VALUE)
return(Close[i]);
}
return(0);
}


يعني :


double up1=LastArrow1("up");//سعر اغلاق شمعة السهم الاخير الصاعد
double dn1=LastArrow1("dn");//سعر اغلاق شمعة السهم الاخير الهابط


ثم لمعرفة دالة السهمنين التالي بعد اول سهم من نفس النوع نستخرج توقيت اخر سهم لكل نوع بالدالة التالية :


datetime LastTime(string info)
{
for(int i=1; i<100; i++)
{
if(info=="up"&&ar(0,i)!=EMPTY_VALUE)
return(Time[i]);
if(info=="dn"&&ar(1,i)!=EMPTY_VALUE)
return(Time[i]);
}
return(0);
}


ثم نضيف التوقيت المستخرج ضمن شروط استخراج سعر السهم الموالي كالتالي :


double LastArrow2(string info)
{
for(int i=+1; i<100; i++)
{
if(info=="up"&&Time[i]<LastTime("up")&&ar(0,i)!=EMPTY_VALUE)
return(Close[i]);
if(info=="dn"&&Time[i]<LastTime("dn")&&ar(1,i)!=EMPTY_VALUE)
return(Close[i]);
}
return(0);
}


يعني :


double up2=LastArrow2("up");//سعر اغلاق شمعة السهم الصاعد الذي بعد السهم الاخير الصاعد
double dn2=LastArrow2("dn");//سعر اغلاق شمعة السهم الهابط الذي بعد السهم الاخير الهابط

shivaa
28-05-2021, 04:44 PM
وعليكم السلام
المؤشر من نوع اندكس لا يحتاج لتعديل لكن في هذه الحالة يمكن عمل التالي لمعرفة اسعار اخر سهمين من نفس النوع :
اولا دالة تستخرج سعر اغلاق اخر سهم بدلالة نوع السهم كالتالي:


double LastArrow1(string info)
{
for(int i=1; i<100; i++)
{
if(info=="up"&&ar(0,i)!=EMPTY_VALUE)
return(Close[i]);
if(info=="dn"&&ar(1,i)!=EMPTY_VALUE)
return(Close[i]);
}
return(0);
}


يعني :


double up1=LastArrow1("up");//سعر اغلاق شمعة السهم الاخير الصاعد
double dn1=LastArrow1("dn");//سعر اغلاق شمعة السهم الاخير الهابط




ثم لمعرفة دالة السهمنين التالي بعد اول سهم من نفس النوع نستخرج توقيت اخر سهم لكل نوع بالدالة التالية :


datetime LastTime(string info)
{
for(int i=1; i<100; i++)
{
if(info=="up"&&ar(0,i)!=EMPTY_VALUE)
return(Time[i]);
if(info=="dn"&&ar(1,i)!=EMPTY_VALUE)
return(Time[i]);
}
return(0);
}


ثم نضيف التوقيت المستخرج ضمن شروط استخراج سعر السهم الموالي كالتالي :


double LastArrow2(string info)
{
for(int i=+1; i<100; i++)
{
if(info=="up"&&Time[i]<LastTime("up")&&ar(0,i)!=EMPTY_VALUE)
return(Close[i]);
if(info=="dn"&&Time[i]<LastTime("dn")&&ar(1,i)!=EMPTY_VALUE)
return(Close[i]);
}
return(0);
}


يعني :


double up2=LastArrow2("up");//سعر اغلاق شمعة السهم الصاعد الذي بعد السهم الاخير الصاعد
double dn2=LastArrow2("dn");//سعر اغلاق شمعة السهم الهابط الذي بعد السهم الاخير الهابط

شاكر للك
ممكن شرح
ar

ar(1,i)


ar(1,i)!=EMPTY_VALUE)

kira-h
28-05-2021, 05:08 PM
شاكر للك
ممكن شرح
ar

ar(1,i)


ar(1,i)!=EMPTY_VALUE)
راجع المشاركة التالية
https://www.fxprg.com/vb/showthread.php?t=31457&page=74&p=874388&viewfull=1#post874388

shivaa
28-05-2021, 05:55 PM
راجع المشاركة التالية
https://www.fxprg.com/vb/showthread.php?t=31457&page=74&p=874388&viewfull=1#post874388

الف شكر جزاك الله خيراااااااااااااااااا
كدا رقم ar(1,i)
رقم 1 هو رقم اندكس الالوان i هو رقم الشمعه
هل هذا صحيح؟

kira-h
28-05-2021, 09:27 PM
الف شكر جزاك الله خيراااااااااااااااااا
كدا رقم ar(1,i)
رقم 1 هو رقم اندكس الالوان i هو رقم الشمعه
هل هذا صحيح؟

نعم صحيح

shivaa
29-05-2021, 02:40 PM
السلام عليكم
ممكن اعرف ما معنى الاخطاء


First_place - 1 AUDUSD.p,M1: Error in OrderModify. Error code=0
First_place - 1 AUDUSD.p,M1: Error in OrderModify. Error code=4202

kira-h
30-05-2021, 02:09 AM
السلام عليكم
ممكن اعرف ما معنى الاخطاء


First_place - 1 AUDUSD.p,M1: Error in OrderModify. Error code=0
First_place - 1 AUDUSD.p,M1: Error in OrderModify. Error code=4202



وعليكم السلام
الخطا بدالة الموديفاي OrderModify المسؤولة عن تعديل الوقف او الهدف او الامر المعلق...
0 لا يوجد اخطاء No error returned
4202 اوبجكت ما (مثل ترند او اسهم...) غير موجود Object does not exist

ammar
31-05-2021, 11:05 AM
السلام عليكم
كيف اجعل الاكسبيرت يعمل كل نقطة وليس كل تك
مع الشكر على المجهود الرائع منكم

kira-h
01-06-2021, 01:03 AM
السلام عليكم
كيف اجعل الاكسبيرت يعمل كل نقطة وليس كل تك
مع الشكر على المجهود الرائع منكم
وعليكم السلام
ممكن تستخدم شرط عدم معالجة الشروط بالدالة الرئيسية الا بعد تحرك السعر على الاقل 10 تكات
مثال :



double point;
int digits;
static double NewBid=NormalizeDouble(Bid,digits);


int OnInit()
{
if(_Digits<4){point=0.01;digits=2;}
else{point=0.0001;digits=4;}
NewBid=NormalizeDouble(Bid,digits);
return(INIT_SUCCEEDED);
}

void OnTick()
{
if(NewBid==NormalizeDouble(Bid,digits))return;
NewBid=NormalizeDouble(Bid,digits);
//------


}

Mohamed Nasr
01-06-2021, 08:06 AM
السلام عليكم ورحمه الله

لو امكن كود لاغلاق الاكسبيرت عندما يصبح ال Equity اكبر من الرصيد بنسبه مئوية احددها له

يعنى مثلا لو عملنا متغير للاغلاق على ربح مثلا 1 فمعنى ذلك المطلوب ان يغلق الاكسبيرت كل الاوامر عندما يصبح الايكوتى اكبر من الرصيد بنسبه 1 فى الماىئه

هل مفهومه هذه النقطه استاذ Kira ان شاء الله ؟

ammar
01-06-2021, 01:22 PM
وعليكم السلام
ممكن تستخدم شرط عدم معالجة الشروط بالدالة الرئيسية الا بعد تحرك السعر على الاقل 10 تكات
مثال :



double point;
int digits;
static double NewBid=NormalizeDouble(Bid,digits);


int OnInit()
{
if(_Digits<4){point=0.01;digits=2;}
else{point=0.0001;digits=4;}
NewBid=NormalizeDouble(Bid,digits);
return(INIT_SUCCEEDED);
}

void OnTick()
{
if(NewBid==NormalizeDouble(Bid,digits))return;
NewBid=NormalizeDouble(Bid,digits);
//------


}

السلام عليكم
مشكور جدا لهذا الجهد الرائع
استاذي العزيز في الواقع لم اتستطع فهم الكثير هل يمكن ان تطبق الداله على الاكسبيرت المرفق
لكي افهم عملي واكون ممتن لكل
مع الف شكر ووفقك الله لهذه الخدمه

kira-h
01-06-2021, 06:27 PM
السلام عليكم
مشكور جدا لهذا الجهد الرائع
استاذي العزيز في الواقع لم اتستطع فهم الكثير هل يمكن ان تطبق الداله على الاكسبيرت المرفق
لكي افهم عملي واكون ممتن لكل
مع الف شكر ووفقك الله لهذه الخدمه

وعليكم السلام
مرفق الاكسبيرت

kira-h
01-06-2021, 06:34 PM
السلام عليكم ورحمه الله

لو امكن كود لاغلاق الاكسبيرت عندما يصبح ال Equity اكبر من الرصيد بنسبه مئوية احددها له

يعنى مثلا لو عملنا متغير للاغلاق على ربح مثلا 1 فمعنى ذلك المطلوب ان يغلق الاكسبيرت كل الاوامر عندما يصبح الايكوتى اكبر من الرصيد بنسبه 1 فى الماىئه

هل مفهومه هذه النقطه استاذ Kira ان شاء الله ؟
وعليكم السلام
الشرط كالتالي :


if(AccountEquity()>=(AccountBalance()+(AccountBalance()*1/100))CloseOrders();

مع دالة اغلاق الصفقات كالتالي :


void CloseOrders(int type=-1)
{
bool select,close;
for(int i=OrdersTotal()-1; i>=0; i--)
{
select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
{
if(OrderType()==type||type==-1)
{
if(OrderType()==OP_BUY)
{
close=OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderType()==OP_SELL)
{
close=OrderClose(OrderTicket(),OrderLots(),Ask,5);
}
if(OrderType()>OP_SELL)
{
close=OrderDelete(OrderTicket());
}
}
}
}
}

forex treader
01-06-2021, 09:00 PM
السلام عليكم ورحمة الله وبركاتة
استاذ كيرا تحياتى لك
لدى مؤشر مرفق
كيف استدعى المؤشر وكذلك اشارة البيع او الشراء
سهم اخضر شراء وسهم احمر بيع
مرفق المؤشر وكذلك صورة للشارت
وشكرا لك اخى27191

ammar
02-06-2021, 01:47 PM
وعليكم السلام
مرفق الاكسبيرت
السلام عليكم
حقيقة شكرك من كل قلبي على اجاباتك الرائعة ووفقك الله
استاذنا العزيز لدي سؤال
هنالك عدة اوامر داخل قوس تنفذ عن تحقق شرطين معين ولاكن في بعض الاحيان تنفذ قسم منه وليس كل ما في داخله اليس المفروض ان يتحقق كل شيئ في داخل الاقواس بدون الرجوع مره اخرى للشرط
مع التقدير و الشكر الجزيل

Mohamed Nasr
02-06-2021, 03:14 PM
وعليكم السلام
الشرط كالتالي :


if(AccountEquity()>=(AccountBalance()+(AccountBalance()*1/100))CloseOrders();

مع دالة اغلاق الصفقات كالتالي :


void CloseOrders(int type=-1)
{
bool select,close;
for(int i=OrdersTotal()-1; i>=0; i--)
{
select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
{
if(OrderType()==type||type==-1)
{
if(OrderType()==OP_BUY)
{
close=OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderType()==OP_SELL)
{
close=OrderClose(OrderTicket(),OrderLots(),Ask,5);
}
if(OrderType()>OP_SELL)
{
close=OrderDelete(OrderTicket());
}
}
}
}
}


جزاك الله تعالى كل الخير يارب اخى Kira

لو أمكن بعد اذنك كود بسيط اضعه فى الاكسبيرت لاظهار معلومات الحساب من الرصيد الفعلى والرصيد المتاح والرافعه ..

دمتم بخير وصحه وعافيه ان شاء الله تعالى

وشكرا مقدما لحضرتك

kira-h
02-06-2021, 05:45 PM
جزاك الله تعالى كل الخير يارب اخى Kira

لو أمكن بعد اذنك كود بسيط اضعه فى الاكسبيرت لاظهار معلومات الحساب من الرصيد الفعلى والرصيد المتاح والرافعه ..

دمتم بخير وصحه وعافيه ان شاء الله تعالى

وشكرا مقدما لحضرتك

واياك اخي الكريم
مثال عن طريق الكومنت:


void OnTick()
{
Comment("Equity: "+DoubleToStr(AccountEquity(),1)+"\n"+"Balance: "+DoubleToStr(AccountBalance(),1)+"\n"+"Leverage: "+IntegerToString(AccountLeverage()));
}

simba2000
02-06-2021, 10:23 PM
أشكرك أخى الكريم
للأسف جربته ولايعمل



أهم شئ عندى هو لما أضع الإكسبيرت على الشاشه او ابدأ تشغيله ويكون هناك شمعه رينكو فى طور التكوين (مثل شمعه 0 فى الرسمه) الإكسبيرت لايبدأ يضع أوامرإلا بعد أن يكتمل تكون جسم الشمعه الحاليه (شمعه 0) ويكون مساوي لحجم بوكس الرينكو (على سبيل المثال مثلا 5 نقاط حجم بوكس الرينكو)

برجاء اريد هذا الكود




اخي الكريم الكود سليم، هل جربته اولا ؟
الفوليوم هو حجم البوكس ليس هو طول البوكس فالفرق شاسع بينهما،
الفوليوم او الحجم هو عدد التكات التي تحركها السعر بالشمعة من بداية تكوينها الى نهايتها.
يعني صعد السعر تكة تحسب 1، نزل تكة تحسب 2، نزل تكة اخرى تحسب 3،،، وهكذا تضاف تكة كل حركة تكة جديدة ولا يهم اتجاهها.
يوجد مؤشر الفوليوم ضمن المؤشرات الاساسية راجعه لتفهم اكثر.
لهذا وضعت شرط الفوليوم= 5 او اي رقم صغير اقل من 10 اي اقل من نقطة، لينفذ الشرط عند اول تكوين للشمعة يعني بمجرد افتتاح الشمعة الجديدة ينفذ الشرط وليس بمنتصفها... وهذا ما تريده ولن تجد افضل من هذا الشرط بدقته.

forex treader
03-06-2021, 08:30 AM
السلام عليكم ورحمة الله وبركاتة
استاذ كيرا تحياتى لك
لدى مؤشر مرفق
كيف استدعى المؤشر وكذلك اشارة البيع او الشراء
سهم اخضر شراء وسهم احمر بيع
مرفق المؤشر وكذلك صورة للشارت
وشكرا لك اخى27191

للتذكير

simba2000
03-06-2021, 08:02 PM
بالفعل جربت اللى حضرتك قولت عليه ولكن للأسف عند وضع الإكسبيرت على الشارت ويكون هناك شمعه رينكو تتشكل ولم يكتمل حجم البوكس لها ،ألاقى الإكسبيرت علطول بيعمل اوامر دون إنتظار إكتمال البوكس او الشمعه الحاليه

برجاء إفادتى بحل هذه المشكله

شكرا مقدما



أشكرك أخى الكريم
للأسف جربته ولايعمل



أهم شئ عندى هو لما أضع الإكسبيرت على الشاشه او ابدأ تشغيله ويكون هناك شمعه رينكو فى طور التكوين (مثل شمعه 0 فى الرسمه) الإكسبيرت لايبدأ يضع أوامرإلا بعد أن يكتمل تكون جسم الشمعه الحاليه (شمعه 0) ويكون مساوي لحجم بوكس الرينكو (على سبيل المثال مثلا 5 نقاط حجم بوكس الرينكو)

برجاء اريد هذا الكود

kira-h
04-06-2021, 02:38 AM
بالفعل جربت اللى حضرتك قولت عليه ولكن للأسف عند وضع الإكسبيرت على الشارت ويكون هناك شمعه رينكو تتشكل ولم يكتمل حجم البوكس لها ،ألاقى الإكسبيرت علطول بيعمل اوامر دون إنتظار إكتمال البوكس او الشمعه الحاليه

برجاء إفادتى بحل هذه المشكله

شكرا مقدما

اخي الكريم مشكلتك انك تنظر للشمعة الحالية تريد ان يكتمل تكوينها وهي في بداية التكوين! يعني الشمعة السابقة اكتمل تكوينها وهي المحققة الشرط، مراجعتك فقط خاطئة وليس الشرط
بمعنى آخر الشرط ببساطة هو عند بداية التكوين (لهذا وضعنا الفوليوم اقل من 5 تكات كما تحب يعني الشمعة المغلقة انتهى تكوينها قبل 5 تكات على الاكثر)، فلا تنظر لنهاية التكوين بالشمعة الحالية بل انظر لبدايته، لاننا لا نعلم متى سينتهي تكوين شمعة الرينكو والذي يعتمد على الحركة السعرية فقط فالحل الوحيد هو استخدام الفوليوم والمعروف والمضمون 100%
لاحظ مثلا الشرط التالي :

if(Close[1]>Open[1]&&Volume[0]<5)//

هنا قلنا انه يجب اغلاق آخر شمعة صاعدة (لاحظ رقم 1) عند بداية تكون الشمعة الحالية (لاحظ رقم 0) على الاكثر بـ 5 تكات
يعني تحقق الشرط عند نهاية تكوين آخر شمعة مغلقة، والـ 5 تكات او حتى 10 تكات لا تساوي شيء يذكر، هي فقط لضمان تنفيذ الشرط

kira-h
04-06-2021, 02:52 AM
السلام عليكم ورحمة الله وبركاتة
استاذ كيرا تحياتى لك
لدى مؤشر مرفق
كيف استدعى المؤشر وكذلك اشارة البيع او الشراء
سهم اخضر شراء وسهم احمر بيع
مرفق المؤشر وكذلك صورة للشارت
وشكرا لك اخى27191

وعليكم السلام
كالتالي :


double ze(int index)
{
return(iCustom(Symbol(),0,"ZeusArrowV1.1",index,1));
}


void OnTick()
{
if(ze(2)!=EMPTY_VALUE)//up
if(ze(3)!=EMPTY_VALUE)//dn
}


يمكنك مراجعة المشاركة التالية لمعرفة قيمة مؤشر
https://www.fxprg.com/vb/showthread.php?t=31457&page=74&p=874388&viewfull=1#post874388

kira-h
04-06-2021, 02:55 AM
السلام عليكم
حقيقة شكرك من كل قلبي على اجاباتك الرائعة ووفقك الله
استاذنا العزيز لدي سؤال
هنالك عدة اوامر داخل قوس تنفذ عن تحقق شرطين معين ولاكن في بعض الاحيان تنفذ قسم منه وليس كل ما في داخله اليس المفروض ان يتحقق كل شيئ في داخل الاقواس بدون الرجوع مره اخرى للشرط
مع التقدير و الشكر الجزيل
وعليكم السلام
العفو اخي الكريم
لا يمكن تنفيذ جواب الشرط الا بعد تحقق كل الشروط بين القوسين

Mohamed Nasr
04-06-2021, 04:12 AM
واياك اخي الكريم
مثال عن طريق الكومنت:


void OnTick()
{
Comment("Equity: "+DoubleToStr(AccountEquity(),1)+"\n"+"Balance: "+DoubleToStr(AccountBalance(),1)+"\n"+"Leverage: "+IntegerToString(AccountLeverage()));
}



جزاك الله تعالى خيرا اخى الكريم .. تمام اشتغلت تمام الله يكرمك يارب

forex treader
04-06-2021, 10:00 AM
وعليكم السلام
كالتالي :


double ze(int index)
{
return(iCustom(Symbol(),0,"ZeusArrowV1.1",index,1));
}


void OnTick()
{
if(ze(2)!=EMPTY_VALUE)//up
if(ze(3)!=EMPTY_VALUE)//dn
}


يمكنك مراجعة المشاركة التالية لمعرفة قيمة مؤشر
https://www.fxprg.com/vb/showthread.php?t=31457&page=74&p=874388&viewfull=1#post874388

شكرا لك اخى على الشرح الوافى

kira-h
04-06-2021, 04:22 PM
جزاك الله تعالى خيرا اخى الكريم .. تمام اشتغلت تمام الله يكرمك يارب
وإياك أخي الكريم


شكرا لك اخى على الشرح الوافى
العفو أخي الكريم

ammar
15-06-2021, 10:56 AM
السلام عليكم
لدي مشكلة في تطبيق داخل القوس المشكلة لدي امر بيع وشراء داخل قوس ينفذان معا عند تحقق شرط معين ولاكن في بعض الاحيان وليس دائما ينفذ امر واحد ولا اعرف لماذا لا ينفذ ما في داخل القوس جميعا علما ان الحساب بسنت
حاولت ان اعلى السلايباج ولاكن نفس المشكلة المرفق يوضح اكثر
مع الشكر والتقدير دائما

kira-h
15-06-2021, 09:06 PM
السلام عليكم
لدي مشكلة في تطبيق داخل القوس المشكلة لدي امر بيع وشراء داخل قوس ينفذان معا عند تحقق شرط معين ولاكن في بعض الاحيان وليس دائما ينفذ امر واحد ولا اعرف لماذا لا ينفذ ما في داخل القوس جميعا علما ان الحساب بسنت
حاولت ان اعلى السلايباج ولاكن نفس المشكلة المرفق يوضح اكثر
مع الشكر والتقدير دائما

وعليكم السلام
سيكون بسبب ضعف او سرعة الحركة او إعادة تسعير...
جرب النسخة المرفقة

Waddah
17-06-2021, 05:34 PM
السلام عليكم .... عند القراءة من ملف إكسل ....ممكن المساعدة في الكود الذي يقرء بيانات خلية معينة .... مثلا الخلية a20

kira-h
18-06-2021, 01:15 AM
السلام عليكم .... عند القراءة من ملف إكسل ....ممكن المساعدة في الكود الذي يقرء بيانات خلية معينة .... مثلا الخلية a20

وعليكم السلام
راجع المشاركة التالي : https://www.fxprg.com/vb/showthread.php?t=36930&p=917191&viewfull=1#post917191

simba2000
18-06-2021, 05:31 AM
السلام عليكم أخى الكريم
فضلا ، لوسمحتم
أريد أن أعرف عن بيانات أخر أمر أغلق هل أغلق على ربح أم خساره ،وماذا كان حجم اللوت المستخدم ؟
ما هى الداله/الكود التى يجب أن أستعملها

شكرا مقدما

شكرا مقدما

kira-h
18-06-2021, 06:12 PM
السلام عليكم أخى الكريم
فضلا ، لوسمحتم
أريد أن أعرف عن بيانات أخر أمر أغلق هل أغلق على ربح أم خساره ،وماذا كان حجم اللوت المستخدم ؟
ما هى الداله/الكود التى يجب أن أستعملها

شكرا مقدما

شكرا مقدما
وعليكم السلام
الدالة كالتالي :


double Closed(string info)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string sy=OrderSymbol();
int mn=OrderMagicNumber(),
ty=OrderType();
double lo=OrderLots(),
pt=OrderProfit();
if(sy==Symbol()&&mn==MagicNo&&ty<=OP_SELL)
{
if(info=="Lots")
return(lo);
else
if(info=="Profit")
return(pt);
}
}
return(0);
}



وبالتالي لمعرفة لوت آخر صفقة مغلقة :

Closed("Lots");

ولمعرفة نتيجة آخر صفقة مغلقة :

Closed("Profit");

simba2000
18-06-2021, 07:54 PM
السلام عليكم اخى الفاضل
شكرا على الرد
لو سمحتم

عاوز بيانات أخر أمر أغلق بغض النظر عن نوعه سواء بيع اوشراء
كذلك هل يمكن عدم الإعتماد على ال string
كذلك كيف يمكن الإعتماد على ال ticket number بدلامن SELECT_BY_POS
انتظرردك شكرا مقدما



وعليكم السلام
الدالة كالتالي :


double Closed(string info)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string sy=OrderSymbol();
int mn=OrderMagicNumber(),
ty=OrderType();
double lo=OrderLots(),
pt=OrderProfit();
if(sy==Symbol()&&mn==MagicNo&&ty<=OP_SELL)
{
if(info=="Lots")
return(lo);
else
if(info=="Profit")
return(pt);
}
}
return(0);
}



وبالتالي لمعرفة لوت آخر صفقة مغلقة :

Closed("Lots");

ولمعرفة نتيجة آخر صفقة مغلقة :

Closed("Profit");

Mohamed Nasr
19-06-2021, 04:25 PM
سلام عليكم استاذ حسن

اقوم بعمل اكسبيرت بسيط يقوم بفتح صفقات كل Step معين مع بعض الشروط وأريد ان اقوم بزيادة مساحه الاستيب مع كل صفقه جديده

فهل ممكن عمل داله تأتى بأقصي استيب تم الوصول اليه وبعد ذلك أضيف انا رقم على هذه الداله من خلال متغير خارجى ..

هل طلبى واضح استاذ حسن ؟

kira-h
19-06-2021, 08:15 PM
سلام عليكم استاذ حسن

اقوم بعمل اكسبيرت بسيط يقوم بفتح صفقات كل Step معين مع بعض الشروط وأريد ان اقوم بزيادة مساحه الاستيب مع كل صفقه جديده

فهل ممكن عمل داله تأتى بأقصي استيب تم الوصول اليه وبعد ذلك أضيف انا رقم على هذه الداله من خلال متغير خارجى ..

هل طلبى واضح استاذ حسن ؟
وعليكم السلام
يمكنك حفظ الستيب الاخير مباشرة بعد فتح الصفقة ثم استدعائه بشروط الفتح
مثال :


input double Step=200,//الستيب الاساسي
Step_plus=10;//الستيب الاضافي
static double newstep=Step;//اخر ستيب محفوظ


void OnTick()
{
if(!IsTesting()&&GlobalVariableGet(Symbol()+"step")>0)
newstep=GlobalVariableGet(Symbol()+"step");

if(Ask>=OrderOpenPrice()+newstep*Point)
{
//Open BUY
newstep=newstep+Step_plus;
if(!IsTesting())
GlobalVariableSet(Symbol()+"step",newstep);//في حال استخدام حساب لايف او ديمو يجب حفظ القيم بدالة جلوبال حتى لا تضيع عند اغلاق الشارت او المنصة
}
}


راجع المشاركة التالية حول دوال الجلوبال :
https://www.fxprg.com/vb/showthread.php?t=31457&page=9&p=846193&viewfull=1#post846193

kira-h
19-06-2021, 08:21 PM
السلام عليكم اخى الفاضل
شكرا على الرد
لو سمحتم

عاوز بيانات أخر أمر أغلق بغض النظر عن نوعه سواء بيع اوشراء هذا ما تقوم به الدالة
كذلك هل يمكن عدم الإعتماد على ال string نعم ممكن بدالة خاصة بالربح ودالة خاصة باللوت، لكن info تم اضافته كشرط في عملية البحث المتعدد فقط لاختصار مجموعة دوال (الربح واللوت...) في دالة واحدة، راجع مشاركتي السابقة اكثر في كيفية الاستدعاء عن طريق شرط info
كذلك كيف يمكن الإعتماد على ال ticket number بدلامن SELECT_BY_POS السؤال غير واضح لكن عموما يجب استخدام SELECT_BY_POS بداول البحث في الصفقات
انتظرردك شكرا مقدما
وعليكم السلام
الرد بالاقتباس

Mohamed Nasr
20-06-2021, 03:47 AM
وعليكم السلام
يمكنك حفظ الستيب الاخير مباشرة بعد فتح الصفقة ثم استدعائه بشروط الفتح
مثال :


input double Step=200,//الستيب الاساسي
Step_plus=10;//الستيب الاضافي
static double newstep=Step;//اخر ستيب محفوظ


void OnTick()
{
if(!IsTesting()&&GlobalVariableGet(Symbol()+"step")>0)
newstep=GlobalVariableGet(Symbol()+"step");

if(Ask>=OrderOpenPrice()+newstep*Point)
{
//Open BUY
newstep=newstep+Step_plus;
if(!IsTesting())
GlobalVariableSet(Symbol()+"step",newstep);//في حال استخدام حساب لايف او ديمو يجب حفظ القيم بدالة جلوبال حتى لا تضيع عند اغلاق الشارت او المنصة
}
}


راجع المشاركة التالية حول دوال الجلوبال :
https://www.fxprg.com/vb/showthread.php?t=31457&page=9&p=846193&viewfull=1#post846193


جزاك الله تعالى خيرا اخى حسن

kira-h
20-06-2021, 10:54 AM
جزاك الله تعالى خيرا اخى حسن
واياك اخي الكريم

simba2000
21-06-2021, 10:53 AM
السلام عليكم أخى الفاضل

أولا أشكرك على كل رد ومساعده منك
لى سؤال أخى الفاضل
"هل ممكن الهروب من السبريد أو على الأقل التقليل من خسارته ؟"
كما موضح بالصوره المرفقه
إن مكن
ما هو الكود الصحيح لكى أفتح الصفقه عند إفتتاح الشمعه الحاليه (0) "قدر الإستطاع وتفادى خساره السبريد"
وإغلاق الصفقه عند إغلاق الشمعه

"يعنى أفتح عند الإفتتاح وأغلق عند الإغلاق قدر الإمكان "

شكرا مقدما
بارك الله فيك ولك
27371

kira-h
21-06-2021, 05:51 PM
السلام عليكم أخى الفاضل

أولا أشكرك على كل رد ومساعده منك
لى سؤال أخى الفاضل
"هل ممكن الهروب من السبريد أو على الأقل التقليل من خسارته ؟"
كما موضح بالصوره المرفقه
إن مكن
ما هو الكود الصحيح لكى أفتح الصفقه عند إفتتاح الشمعه الحاليه (0) "قدر الإستطاع وتفادى خساره السبريد"
وإغلاق الصفقه عند إغلاق الشمعه

"يعنى أفتح عند الإفتتاح وأغلق عند الإغلاق قدر الإمكان "

شكرا مقدما
بارك الله فيك ولك
27371
وعليكم السلام
هذا غير ممكن فكيف تريد فتح الصفقة بمجرد افتتاح الشمعة وفي نفس الوقت تفادي خسارة السبريد، هذا مستحيل.
عموما اغلاقات (او افتتاحات) شموع الرينكو دائما تتكون بسعر البيد
لهذا خسارة السبريد دائما موجودة اذا تريد بالضبط فتح الصفقة مع افتتاح الشمعة واغلاقها مع اغلاق الشمعة، فكما نعلم الشراء يفتح بالاسك ويغلق بالبيد، إذن عند الربح سيغلق بالاسك ولكن عند الخسارة سيغلق ايضا بالاسك لكن دون تجاوز السبريد لأن الشمعة اغلقت على البيد، نفس الشيء بالبيع عكسيا بالربح يخسر السبريد وبالخسارة عادي.
كذلك قد يرتفع او ينخفض السبريد مع افتتاح او اغلاق الصفقة في حين الشمعة لا تتاُثر لانها دائما تفتح وتغلق بالبيد.
نفس الشيء بالقفزة السعرية والجاب... والتي لا تظهر بشموع الرينكو، ليس كالشارت العادي الذي يظهر على شكل فراغات وستراها بوضوح بفريم الدقيقة.
لكن لتقليل خسارة السبريد قدر الامكان مثلا تفتح الصفقة بعد تكوين ذيل بالشمعة الحالية بمسافة السبريد الحالي
يعني فتح شراء بعد اغلاق شمعة صاعدة وبالذيل الحالي يتجاوز السبريد سيكون الشرط كالتالي:

if(Close[1]>Open[1]&&Ask<=Close[1])

أما بالبيع سيكون الشرط كالتالي :

if(Close[1]<Open[1]&&Bid>=Close[1]+(Ask-Bid))

اما إذا تريد فتح الصفقات بالضبط بمجرد افتتاح الشمعة الجديدة ولا يهم مشكلة السبريد فالشرط كالتالي :


if(Close[1]>Open[1]&&Volume[0]<=5)

نفس الشيء بالبيع واغلاق الصفقات

5 يعني فوليوم الشمعة لا يتجاوز 5 تكات وحتى تضمن تنفيذ الصفقة إذا حدث خطأ تفني ما.

simba2000
22-06-2021, 06:25 PM
ماشاء الله
الله يبارك فيك ولك
أشكرك أخى الفاضل

أخى الفاضل

ما هى توصياتك للتعامل الأمثل مع ال slippage
1- كيفيه السيطره عليه وتقليله؟ وخصوصا فى حاله الزياده المفاجئه؟
2- القيم له فى حاله بروكر5او4 خانات؟
3- القيمه المثاليه له التى يجب وضعها فى الإكسبيرت هل 0 ام 1 ام 3 ام 2 ؟

شكرامقدما

kira-h
22-06-2021, 06:34 PM
ماشاء الله
الله يبارك فيك ولك
أشكرك أخى الفاضل

أخى الفاضل

ما هى توصياتك للتعامل الأمثل مع ال slippage
1- كيفيه السيطره عليه وتقليله؟ وخصوصا فى حاله الزياده المفاجئه؟
2- القيم له فى حاله بروكر5او4 خانات؟
3- القيمه المثاليه له التى يجب وضعها فى الإكسبيرت هل 0 ام 1 ام 3 ام 2 ؟

شكرامقدما
العفو اخي الكريم
صعب السيطرة على السليباج، فهذا راجع لسرعة التنفيذ بالشركة ومدى استجابتها لاوامرك بل حتى الشركة التي من نوع stp او ecn لا تستطيع السيطرة على السليباج لأنها تدخلك إلى عمق السوق مباشرة،،،
لكن عموما غذا الصفقات سريعة سكالبينغ ضع 3 بالبروكر النقطي و30 بالبروكر التكي، ويبقى الامر راجع للسوق مهما فعلت وهذا طبيعي. والحل بالتعامل مع شركة جيدة.

Waddah
22-06-2021, 07:06 PM
وعليكم السلام
راجع المشاركة التالي : https://www.fxprg.com/vb/showthread.php?t=36930&p=917191&viewfull=1#post917191


مشكور جدا للرد .... لكن لم أنجح في الكود ....هل ممكن أن تساعدني في الكود الذي ينفذ ما يلي :
1- وضع قيمة معينة ( سعر ) في خلية محددة في ملف إكسل
2- إستدعاء قيمة من خلية محددة في ملف إكسل ( هذه القيمة تغيرت حسب القيمة الأولى )

simba2000
22-06-2021, 08:46 PM
بارك الله فيك ورزقك الفردوس الأعلى أنت وأهلك جميعا

1- مش فاهم يعنى ايه البروكرالنقطى والتكى وكيف أفرق بينهما ؟ وأيهما أفضل ؟
2- ما هى معايير إختيار الشركه الجيد ؟وهل تنصح بشركه معينه بالنسبه للسكالبينج ؟ أوما هى الأسئله التى يجب أن أسأل الشركه عنها وما القبم المثاليه لها
3- ما هى السرعه المثاليه لتنفيذ الأوامر وخصوصا بالنسبه للسكالبينج؟
4- هل فيه إكسبيرت أومؤشر يختبر البروكر ويعطينى كافه البيانات الحقيقيه عنه ؟ (حضرتك عارف العاملين فى المبيعات عاده لايقولوا الصراحه )

شكرا مقدما

kira-h
23-06-2021, 04:27 AM
بارك الله فيك ورزقك الفردوس الأعلى أنت وأهلك جميعا

1- مش فاهم يعنى ايه البروكرالنقطى والتكى وكيف أفرق بينهما ؟ وأيهما أفضل ؟ النقطي يعني 4 ارقام بعد الفاصلة بسعر اليورودولار، التكي يعني 5 ارقام بعد الفاصلة ...
2- ما هى معايير إختيار الشركه الجيد ؟وهل تنصح بشركه معينه بالنسبه للسكالبينج ؟ أوما هى الأسئله التى يجب أن أسأل الشركه عنها وما القبم المثاليه لها فقط يجب ان تكون من نوع stp او ecn ويمكنك التاكد من مواقع تقييمات الشركات وتجارب المتدوالين
3- ما هى السرعه المثاليه لتنفيذ الأوامر وخصوصا بالنسبه للسكالبينج؟ لا يوجد سرعة مثالية فهذا راجع لكل شركة ومزوديها والسوق نفسه...، ستجد كل الشروحات بالنت حول الفرق بين الماركت ميكر وال stp ...
4- هل فيه إكسبيرت أومؤشر يختبر البروكر ويعطينى كافه البيانات الحقيقيه عنه ؟ (حضرتك عارف العاملين فى المبيعات عاده لايقولوا الصراحه ) لا يوجد هذا الامر

شكرا مقدما
وإياك أخي الكريم، آمين
الردود بالاقتباس
والله الموفق

shivaa
24-06-2021, 07:35 AM
السلام عليكم
ممكن طلب اكون شاكر مش عارف ارسم ترند موازى للزجزاج بين اخر قمه واخر قاع
ثانى طلب لو رسم خط على اخر قمه وعملنه خط على اخر قاع هيكون فى تقاطع فى نقطه
سعرها تكون نفس سعر القاع وقت يكون وقت القمه
المطلوب ترند المراد رسم الموازى للزجزاج يمر منها كما فى الصوره
كيف حساب زاويةالقمه الاخير و القاع الاخير و القمه قبل الاخيره
شاكر لك اخى

shivaa
25-06-2021, 09:54 AM
السلام عليكم
ممكن طلب اكون شاكر مش عارف ارسم ترند موازى للزجزاج بين اخر قمه واخر قاع
ثانى طلب لو رسم خط على اخر قمه وعملنه خط على اخر قاع هيكون فى تقاطع فى نقطه
سعرها تكون نفس سعر القاع وقت يكون وقت القمه
المطلوب ترند المراد رسم الموازى للزجزاج يمر منها كما فى الصوره
كيف حساب زاويةالقمه الاخير و القاع الاخير و القمه قبل الاخيره
شاكر لك اخى

الان مطلوب المساعد فى
اعرف اخر قاع مع الوقت حدوثه و اخر قمه مع وقت الحدوثه لمؤشر الزجزاج
واخر حدث كان قمه او قاع
شاكر لك استاذى
رسم قناه سعريه متساويه الابعاد

bool ChannelCreate(const long chart_ID=0, // chart's ID
const string name="Channel", // channel name
const int sub_window=0, // subwindow index
datetime time1=0, // first point time
double price1=0, // first point price
datetime time2=0, // second point time
double price2=0, // second point price
datetime time3=0, // third point time
double price3=0, // third point price
const color clr=clrRed, // channel color
const ENUM_LINE_STYLE style=STYLE_SOLID, // style of channel lines
const int width=1, // width of channel lines
const bool fill=false, // filling the channel with color
const bool back=false, // in the background
const bool selection=true, // highlight to move
const bool ray_right=false, // channel's continuation to the right
const bool hidden=true, // hidden in the object list
const long z_order=0) // priority for mouse click
{
//--- set anchor points' coordinates if they are not set
ChangeChannelEmptyPoints(time1,price1,time2,price2 ,time3,price3);
//--- reset the error value
ResetLastError();
//--- create a channel by the given coordinates
if(!ObjectCreate(chart_ID,name,OBJ_CHANNEL,sub_win dow,time1,price1,time2,price2,time3,price3))
{
Print(__FUNCTION__,
": failed to create an equidistant channel! Error code = ",GetLastError());
return(false);
}
//--- set channel color
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set style of the channel lines
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style );
//--- set width of the channel lines
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width );
//--- display in the foreground (false) or background (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of highlighting the channel for moving
//--- when creating a graphical object using ObjectCreate function, the object cannot be
//--- highlighted and moved by default. Inside this method, selection parameter
//--- is true by default making it possible to highlight and move the object
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE, selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,se lection);
//--- enable (true) or disable (false) the mode of continuation of the channel's display to the right
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,r ay_right);
//--- hide (true) or display (false) graphical object name in the object list
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidd en);
//--- set the priority for receiving the event of a mouse click in the chart
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_or der);
//--- successful execution
return(true);
}

kira-h
25-06-2021, 05:59 PM
الان مطلوب المساعد فى
اعرف اخر قاع مع الوقت حدوثه و اخر قمه مع وقت الحدوثه لمؤشر الزجزاج
واخر حدث كان قمه او قاع
شاكر لك استاذى
رسم قناه سعريه متساويه الابعاد

bool ChannelCreate(const long chart_ID=0, // chart's ID
const string name="Channel", // channel name
const int sub_window=0, // subwindow index
datetime time1=0, // first point time
double price1=0, // first point price
datetime time2=0, // second point time
double price2=0, // second point price
datetime time3=0, // third point time
double price3=0, // third point price
const color clr=clrRed, // channel color
const ENUM_LINE_STYLE style=STYLE_SOLID, // style of channel lines
const int width=1, // width of channel lines
const bool fill=false, // filling the channel with color
const bool back=false, // in the background
const bool selection=true, // highlight to move
const bool ray_right=false, // channel's continuation to the right
const bool hidden=true, // hidden in the object list
const long z_order=0) // priority for mouse click
{
//--- set anchor points' coordinates if they are not set
ChangeChannelEmptyPoints(time1,price1,time2,price2 ,time3,price3);
//--- reset the error value
ResetLastError();
//--- create a channel by the given coordinates
if(!ObjectCreate(chart_ID,name,OBJ_CHANNEL,sub_win dow,time1,price1,time2,price2,time3,price3))
{
Print(__FUNCTION__,
": failed to create an equidistant channel! Error code = ",GetLastError());
return(false);
}
//--- set channel color
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set style of the channel lines
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style );
//--- set width of the channel lines
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width );
//--- display in the foreground (false) or background (true)
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of highlighting the channel for moving
//--- when creating a graphical object using ObjectCreate function, the object cannot be
//--- highlighted and moved by default. Inside this method, selection parameter
//--- is true by default making it possible to highlight and move the object
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE, selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,se lection);
//--- enable (true) or disable (false) the mode of continuation of the channel's display to the right
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,r ay_right);
//--- hide (true) or display (false) graphical object name in the object list
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidd en);
//--- set the priority for receiving the event of a mouse click in the chart
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_or der);
//--- successful execution
return(true);
}
وعليكم السلام
فضلا راجع المشاركة التالية:
https://www.fxprg.com/vb/showthread.php?t=31457&page=121&p=881383&viewfull=1#post881383

simba2000
26-06-2021, 09:38 PM
السلام عليكم أخى الكريم

ممكن لو تفضلت
عاوز كود يوقف عمل الإكسبيرت فى حاله :
أ- لو وصل مجموع الأرباح اليوميه - أو من وقت تشغيل الأكسبيرت أو من وقت وضعه على الشارت إلى الأن - لنسبه معينه من الرصيدBalance - ولتكن مثلا 10% .
ب- لو وصل مجموع الأرباح اليوميه - أو من وقت تشغيل الأكسبيرت أو من وقت وضعه على الشارت إلى الأن - لربح معين من عمله الرصيد- مثلا لوربح 100 دولار$ - حسب عمله الحساب سواء دولار او يورو

أكون شاكر لك
شكرا مقدما ،بارك الله فيك

kira-h
27-06-2021, 04:26 PM
السلام عليكم أخى الكريم

ممكن لو تفضلت
عاوز كود يوقف عمل الإكسبيرت فى حاله :
أ- لو وصل مجموع الأرباح اليوميه - أو من وقت تشغيل الأكسبيرت أو من وقت وضعه على الشارت إلى الأن - لنسبه معينه من الرصيدBalance - ولتكن مثلا 10% .
ب- لو وصل مجموع الأرباح اليوميه - أو من وقت تشغيل الأكسبيرت أو من وقت وضعه على الشارت إلى الأن - لربح معين من عمله الرصيد- مثلا لوربح 100 دولار$ - حسب عمله الحساب سواء دولار او يورو

أكون شاكر لك
شكرا مقدما ،بارك الله فيك
وعليكم السلام
هذا يحتاج لكثير من التفاصيل مثل دوال الحفظ...
لكن مبدئيا للتبسيط ان تتحكم بقيمة البالنس المبدئي بالاعدادات، يعني في كل مرة تشغل الاكسبيرت تكتب البالنس الجديد،
الكود كالتالي مع الشرح :


//الاعدادات الخارجية
input double Balance=1000,//بالنس بداية التشغيل في كل مرة
ProfitPercent=10,//الربح النسبي
Profit_USD=100;//الربح الدولاري


void OnTick()
{
if(ProfitPercent>0&&OrdersTotal()==0&&AccountBalance()>=(Balance+(Balance*ProfitPercent/100)))return;


if(Profit_USD>0&&OrdersTotal()==0&&AccountBalance()>=(Balance+Profit_USD))return;

//--- بقية كود الاكسبيرت


}

simba2000
27-06-2021, 06:10 PM
أشكرحضرتك على الرد

ما هى دوال الحفظ ؟
طيب لوممكن ووقت حضرتك يسمح
ممكن نركز بمثال على ربح نسبه مئويه من إجمالى الرصيد عند بدء تشغيله ؟
طيب


وعليكم السلام
هذا يحتاج لكثير من التفاصيل مثل دوال الحفظ...
لكن مبدئيا للتبسيط ان تتحكم بقيمة البالنس المبدئي بالاعدادات، يعني في كل مرة تشغل الاكسبيرت تكتب البالنس الجديد،
الكود كالتالي مع الشرح :


//الاعدادات الخارجية
input double Balance=1000,//بالنس بداية التشغيل في كل مرة
ProfitPercent=10,//الربح النسبي
Profit_USD=100;//الربح الدولاري


void OnTick()
{
if(ProfitPercent>0&&OrdersTotal()==0&&AccountBalance()>=(Balance+(Balance*ProfitPercent/100)))return;


if(Profit_USD>0&&OrdersTotal()==0&&AccountBalance()>=(Balance+Profit_USD))return;

//--- بقية كود الاكسبيرت


}

kira-h
27-06-2021, 06:31 PM
أشكرحضرتك على الرد

ما هى دوال الحفظ ؟
طيب لوممكن ووقت حضرتك يسمح
ممكن نركز بمثال على ربح نسبه مئويه من إجمالى الرصيد عند بدء تشغيله ؟
طيب
راجع المشاركة التالية
https://www.fxprg.com/vb/showthread.php?t=31457&page=9&p=846193&viewfull=1#post846193

عند فهمك لما سبق يمكنك جعل الاكسبيرت يحفظ قيمة البالنس المبدئي دون الحاجة لكتابته بالاعدادات

simba2000
27-06-2021, 06:50 PM
شكرا بارك الله فيكم

kira-h
27-06-2021, 08:13 PM
شكرا بارك الله فيكم
العفو وبالتوفيق إن شاء الله

simba2000
28-06-2021, 06:54 AM
السلام عليكم

والله غريبه

إكسبيرت كان شغال كويس وكنت بعدل فيه
وبعدين كل ما اضعه على الشارت بعد ثوانى يروح منشال من نفسه من على الشارت من غيرما اعمل اى حاجه

ايه اللى يخللى الإكسبيرت ينشال من نفسه من على الشارت ؟
ما هوالسبب ؟
ما هوالكود اللى ممكن اكون حطيته يعمل كده ؟ علما بأننى لم أستخدم أى أوامر زاله للإكسبيرت مثل remove

علما بأن الجورنال فقط يعطى رساله بأن الإكسبيرت قد أزيل بدون أى أسباب
استخدم equiti mt4 build 1335 - updated 14 may 2021
شكرا مقدما

simba2000
28-06-2021, 07:25 AM
علما بأننى جربت على منصات أخرى

والتظبيطات من options مظبوطه
نفس المشكله

kira-h
28-06-2021, 06:39 PM
السلام عليكم

والله غريبه

إكسبيرت كان شغال كويس وكنت بعدل فيه
وبعدين كل ما اضعه على الشارت بعد ثوانى يروح منشال من نفسه من على الشارت من غيرما اعمل اى حاجه

ايه اللى يخللى الإكسبيرت ينشال من نفسه من على الشارت ؟
ما هوالسبب ؟
ما هوالكود اللى ممكن اكون حطيته يعمل كده ؟ علما بأننى لم أستخدم أى أوامر زاله للإكسبيرت مثل remove

علما بأن الجورنال فقط يعطى رساله بأن الإكسبيرت قد أزيل بدون أى أسباب
استخدم equiti mt4 build 1335 - updated 14 may 2021
شكرا مقدما


علما بأننى جربت على منصات أخرى

والتظبيطات من options مظبوطه
نفس المشكله
وعليكم السلام
لا يمكن معرفة السبب دون وجود اخطاء بالجورنال او مراجعة الكود

Mohamed Nasr
30-06-2021, 03:37 PM
سلام عليكم اخى حسن

ولنفرض اننا بدأنا عمل على الحساب ب 1000 دولار وقمنا بأغلاق صفقات كثيرة على تاك بروفيت ووصل الرصيد الى 1200 دولار

أريد كود يغلق كل الصفقات عندما يصل الى الايكوتى ربح معين بنسبه مئويه بمتغير خارجى ..

مثلا عملنا متغير خارجى يغلق الايكوتى على ربح 10 فى المائه من بدايه عمل الحساب

بدأنا العمل على الحساب ب 1000 دولار وعملنا المتغير الخارجى بربح 10 فى المائه من الحساب

يقوم الاكسبيرت بأغلاق صفقات مثلا على التاك بروفيت ويصل مثلا الى 1200 دولار ولكن مازال الايكوتى لم يصل الى ربح المتغير الخارجى الذى حددناه له وهو 10 فى المائه من بدايه العمل على الحساب ..

فعندما يصل الايكوتى الى 1100 دولار يقوم بأغلاق كل الصفقات ويبدأ من جديد

المطلوب كود يغلق كل الصفقات عندما يصل الايكوتى الى ربح محدد من بدايه عمل الاكسبيرت ...

أرجوا ان يكون طلبى واضح مهندس حسن

وجزاك الله تعالى خيرا مقدما

kira-h
30-06-2021, 05:31 PM
سلام عليكم اخى حسن

ولنفرض اننا بدأنا عمل على الحساب ب 1000 دولار وقمنا بأغلاق صفقات كثيرة على تاك بروفيت ووصل الرصيد الى 1200 دولار

أريد كود يغلق كل الصفقات عندما يصل الى الايكوتى ربح معين بنسبه مئويه بمتغير خارجى ..

مثلا عملنا متغير خارجى يغلق الايكوتى على ربح 10 فى المائه من بدايه عمل الحساب

بدأنا العمل على الحساب ب 1000 دولار وعملنا المتغير الخارجى بربح 10 فى المائه من الحساب

يقوم الاكسبيرت بأغلاق صفقات مثلا على التاك بروفيت ويصل مثلا الى 1200 دولار ولكن مازال الايكوتى لم يصل الى ربح المتغير الخارجى الذى حددناه له وهو 10 فى المائه من بدايه العمل على الحساب ..

فعندما يصل الايكوتى الى 1100 دولار يقوم بأغلاق كل الصفقات ويبدأ من جديد

المطلوب كود يغلق كل الصفقات عندما يصل الايكوتى الى ربح محدد من بدايه عمل الاكسبيرت ...

أرجوا ان يكون طلبى واضح مهندس حسن

وجزاك الله تعالى خيرا مقدما
وعليكم السلام
راجع المشاركة التالية #3372 (https://www.fxprg.com/vb/showthread.php?t=31457&p=928071&viewfull=1#post928071) والتي بعدها...

Mohamed Nasr
01-07-2021, 04:20 AM
وعليكم السلام
راجع المشاركة التالية #3372 (https://www.fxprg.com/vb/showthread.php?t=31457&p=928071&viewfull=1#post928071) والتي بعدها...

جزاك الله خيرا اخى حسن

ولكن من الصعب جدا تحديد الرصيد الاولى للحساب كمتغير خارجى ... معنى كدة انى هفضل بجوار الاكسبيرت وهغير من رصيد الحساب كل يوم تقريبا ..

هذا مافهمته ..

كان معى كود من فترة على الجهاز القديم ينفذ هذا الشرط ولكن فقدته

Mohamed Nasr
01-07-2021, 04:24 AM
راجع المشاركة التالية
https://www.fxprg.com/vb/showthread.php?t=31457&page=9&p=846193&viewfull=1#post846193

عند فهمك لما سبق يمكنك جعل الاكسبيرت يحفظ قيمة البالنس المبدئي دون الحاجة لكتابته بالاعدادات

لو أمكن كتابه الكود اخى حسن بدون اللجوء لكتابه الرصيد المبدئي كمتغير خارجى من فضلك استاذنا الكريم

simba2000
01-07-2021, 04:51 AM
السلام عليكم أخى الفاضل

أشكرك كثيرا على ردودك ومساعدتك
معلش إستحملنى شويه انا لسه مبتدئ
مثال:
الصفقه بيع
ثم مشى السعر مثلا 5 نقاط فكان الربح مثلا 100 دولار ، ولما عكس السعر 3 نقاط كان الخساره 150
أى أن الربح اقل من الخساره بالرغم من انه نفس اللوت وعدد النقاط التى تحركها السعر عكس إتجاه الصفقه أقل من عدد النقاط التى تحركها السعر فى إتجاه الصفقه

فلماذا هذا ؟ هل بسبب السبريد ؟أم ماذا ؟

Mohamed Nasr
01-07-2021, 05:14 AM
السلام عليكم أخى الفاضل

أشكرك كثيرا على ردودك ومساعدتك
معلش إستحملنى شويه انا لسه مبتدئ
مثال:
الصفقه بيع
ثم مشى السعر مثلا 5 نقاط فكان الربح مثلا 100 دولار ، ولما عكس السعر 3 نقاط كان الخساره 150
أى أن الربح اقل من الخساره بالرغم من انه نفس اللوت وعدد النقاط التى تحركها السعر عكس إتجاه الصفقه أقل من عدد النقاط التى تحركها السعر فى إتجاه الصفقه

فلماذا هذا ؟ هل بسبب السبريد ؟أم ماذا ؟

بسبب الاسبيرد اخى الكريم وكل صفقه ستفتحها ستزيد من خساير الرصيد

kira-h
01-07-2021, 06:14 PM
لو أمكن كتابه الكود اخى حسن بدون اللجوء لكتابه الرصيد المبدئي كمتغير خارجى من فضلك استاذنا الكريم
الكود كالتالي يبدأ عمله عند عدم وجود أي صفقة مفتوحة بالحساب ثم يتابع نسبة الربح من البالنس كل إغلاق للصفقات:


input double ProfitPercent=10;


static double NewBalance=0;
int T=0;


void OnTick()
{
if(!IsTesting())
NewBalance=GlobalVariableGet("NewB");

if(ProfitPercent>0&&OrdersTotal()==0&&NewBalance==0)
{
T=0;
NewBalance=AccountBalance()+(AccountBalance()*Prof itPercent/100);
if(!IsTesting())
GlobalVariableSet("NewB",NewBalance);
}


if((OrdersTotal()>0&&NewBalance>0&&AccountEquity()>=NewBalance)||T>0)
{
CloseAllOrders();
NewBalance=0;
if(!IsTesting())
GlobalVariableDel("NewB");
T++;
return;
}
}


void CloseAllOrders(int type=-1)
{
bool close;
for(int i=OrdersTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
int tt=OrdersTotal(),
tk=OrderTicket(),
ty=OrderType();
double lo=OrderLots();
if(tt>0)
{
if(ty==type||type==-1)
{
if(ty==OP_BUY)
close=OrderClose(tk,lo,MarketInfo(sy,MODE_BID),50) ;
if(ty==OP_SELL)
close=OrderClose(tk,lo,MarketInfo(sy,MODE_ASK),50) ;
if(ty>OP_SELL)
close=OrderDelete(tk);
}
}
}
}

simba2000
01-07-2021, 07:36 PM
السلام عليكم أخى الكريم
معلش هتدخل لى أسئله :
1- مافائده تعريف متغيرب static ؟
2- مافائده إستخدام الglobal variables طالما مش هنحتاج حاجه من بره الإكسبيرت ؟

شكرا



الكود كالتالي يبدأ عمله عند عدم وجود أي صفقة مفتوحة بالحساب ثم يتابع نسبة الربح من البالنس كل إغلاق للصفقات:


input double ProfitPercent=10;


static double NewBalance=0;
int T=0;


void OnTick()
{
if(!IsTesting())
NewBalance=GlobalVariableGet("NewB");

if(ProfitPercent>0&&OrdersTotal()==0&&NewBalance==0)
{
T=0;
NewBalance=AccountBalance()+(AccountBalance()*Prof itPercent/100);
if(!IsTesting())
GlobalVariableSet("NewB",NewBalance);
}


if((OrdersTotal()>0&&NewBalance>0&&AccountEquity()>=NewBalance)||T>0)
{
CloseAllOrders();
NewBalance=0;
if(!IsTesting())
GlobalVariableDel("NewB");
T++;
return;
}
}


void CloseAllOrders(int type=-1)
{
bool close;
for(int i=OrdersTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
int tt=OrdersTotal(),
tk=OrderTicket(),
ty=OrderType();
double lo=OrderLots();
if(tt>0)
{
if(ty==type||type==-1)
{
if(ty==OP_BUY)
close=OrderClose(tk,lo,MarketInfo(sy,MODE_BID),50) ;
if(ty==OP_SELL)
close=OrderClose(tk,lo,MarketInfo(sy,MODE_ASK),50) ;
if(ty>OP_SELL)
close=OrderDelete(tk);
}
}
}
}

kira-h
01-07-2021, 08:08 PM
السلام عليكم أخى الكريم
معلش هتدخل لى أسئله :
1- مافائده تعريف متغيرب static ؟
2- مافائده إستخدام الglobal variables طالما مش هنحتاج حاجه من بره الإكسبيرت ؟

شكرا

وعليكم السلام
راجع المشاركة التالية
https://www.fxprg.com/vb/showthread....l=1#post846193 (https://www.fxprg.com/vb/showthread.php?t=31457&page=9&p=846193&viewfull=1#post846193)

أما static نفس عمل الجلوبال لكن على الشارت الحالي فقط ويتم فقدان قيمته بمجرد اغلاق الشارت او المنصة...
بالمثال السابق استخدمته في حالة العمل بالباكتيست فقط. حتى لا يتعارض مع الجلوبال في حال وجود شارتات مفتوحة وتريد عمل الباكتيست.

Mohamed Nasr
02-07-2021, 04:09 AM
الكود كالتالي يبدأ عمله عند عدم وجود أي صفقة مفتوحة بالحساب ثم يتابع نسبة الربح من البالنس كل إغلاق للصفقات:


input double ProfitPercent=10;


static double NewBalance=0;
int T=0;


void OnTick()
{
if(!IsTesting())
NewBalance=GlobalVariableGet("NewB");

if(ProfitPercent>0&&OrdersTotal()==0&&NewBalance==0)
{
T=0;
NewBalance=AccountBalance()+(AccountBalance()*Prof itPercent/100);
if(!IsTesting())
GlobalVariableSet("NewB",NewBalance);
}


if((OrdersTotal()>0&&NewBalance>0&&AccountEquity()>=NewBalance)||T>0)
{
CloseAllOrders();
NewBalance=0;
if(!IsTesting())
GlobalVariableDel("NewB");
T++;
return;
}
}


void CloseAllOrders(int type=-1)
{
bool close;
for(int i=OrdersTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
int tt=OrdersTotal(),
tk=OrderTicket(),
ty=OrderType();
double lo=OrderLots();
if(tt>0)
{
if(ty==type||type==-1)
{
if(ty==OP_BUY)
close=OrderClose(tk,lo,MarketInfo(sy,MODE_BID),50) ;
if(ty==OP_SELL)
close=OrderClose(tk,lo,MarketInfo(sy,MODE_ASK),50) ;
if(ty>OP_SELL)
close=OrderDelete(tk);
}
}
}
}



تمام ماشاء الله اشتغلت .. تسلم ايدا يارب

جزاك الله خيرا اخى حسن

kira-h
02-07-2021, 04:31 PM
تمام ماشاء الله اشتغلت .. تسلم ايدا يارب

جزاك الله خيرا اخى حسن
وإياك أخي الكريم
والله الموفق

simba2000
08-07-2021, 02:48 AM
بارك الله فيك أخى الكريم

معلش انا لسه مبتدئ

1- مافائده تعريف متغيرب static ؟

مثلا
static int x;
وماذا يفرق عن
int x;

???
ماتأثير ذلك على قيمه المتغير خصوصا لو ناديناه من وظيفه



وعليكم السلام
راجع المشاركة التالية
https://www.fxprg.com/vb/showthread....l=1#post846193 (https://www.fxprg.com/vb/showthread.php?t=31457&page=9&p=846193&viewfull=1#post846193)

أما static نفس عمل الجلوبال لكن على الشارت الحالي فقط ويتم فقدان قيمته بمجرد اغلاق الشارت او المنصة...
بالمثال السابق استخدمته في حالة العمل بالباكتيست فقط. حتى لا يتعارض مع الجلوبال في حال وجود شارتات مفتوحة وتريد عمل الباكتيست.

kira-h
08-07-2021, 03:44 AM
بارك الله فيك أخى الكريم

معلش انا لسه مبتدئ

1- مافائده تعريف متغيرب static ؟

مثلا
static int x;
وماذا يفرق عن
int x;

???
ماتأثير ذلك على قيمه المتغير خصوصا لو ناديناه من وظيفه
هما نفس الشيء والفرق فقط ان التعبير static نقوم باضافته إذا أردنا حفظ قيمة المتحول لاستدعائه بأي وقت وبأي وظيفة او دالة رئيسية او فرعية...
يعني نفس مبدأ متحولات الجلوبال، والفرق فقط ان static تفقد قيمتها بمجرد اغلاق البرنامج.

simba2000
08-07-2021, 08:18 AM
يعنى لو تغيرت قيمته فى داخل داله معينه فإنها تظل كما هى

ممكن مثال للتوضيح لو سمحتم ؟
أكون شاكر لك



هما نفس الشيء والفرق فقط ان التعبير static نقوم باضافته إذا أردنا حفظ قيمة المتحول لاستدعائه بأي وقت وبأي وظيفة او دالة رئيسية او فرعية...
يعني نفس مبدأ متحولات الجلوبال، والفرق فقط ان static تفقد قيمتها بمجرد اغلاق البرنامج.

kira-h
08-07-2021, 02:43 PM
يعنى لو تغيرت قيمته فى داخل داله معينه فإنها تظل كما هى

ممكن مثال للتوضيح لو سمحتم ؟
أكون شاكر لك
نعم يحتفظ باخر قيمة تغيرت
الامر لا يحتاج الى مثال
راجع المشاركة التالية :
https://www.fxprg.com/vb/showthread.php?t=31457&page=310&p=922413&viewfull=1#post922413

shivaa
10-07-2021, 05:20 AM
السلام عليكم
موجود ترند مرسوم على الشرط
اريد
ممكن داله كسر الترند وتنبيه عند الكسر
اكون شاكر

shivaa
10-07-2021, 01:08 PM
السلام عليكم
موجود ترند مرسوم على الشرط
اريد
ممكن داله كسر الترند وتنبيه عند الكسر
اكون شاكر
شاكرلك تم حل المشكله هنا

وعليكم السلام
ستقوم بعمل دالة معرفة قيمة سعر الزيجزاج السابق حسب الترتيب (القمة أو القاع السابق 1 او التي قبلها 2 وهكذا...)


double ZigZag_Price(int Number)//سعر القمة او القاع السابق حسب ترتيبها
{
int N;
for(int i=0;i<Bars;i++)
{
double zag=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
if(zag!=0)N++;
if(Number==N)return(zag);
}
return(0);
}


ودالة معرفة قيمة توقيت الزيجزاج السابق حسب الترتيب (القمة أو القاع السابق 1 او التي قبلها 2 وهكذا...)


datetime ZigZag_Time(int Number)
{
int N;
for(int i=0;i<Bars;i++)
{
double zag=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
if(zag!=0)N++;
if(Number==N)return(Time[i]);
}
return(0);
}


ودالة رسم الترند كالتالي :


void Draw_Trend(string name,double Price1,double Price2,datetime Time1,datetime Time2,color _Color)//دالة رسم الترند
{
if(ObjectFind(name)==-1)
{
ObjectCreate(name,OBJ_TREND,0,Time1,Price1,Time2,P rice2);
ObjectSet(name,OBJPROP_WIDTH,1);
ObjectSet(name,OBJPROP_COLOR,_Color);
ObjectSet(name,OBJPROP_RAY,true);
}
else if(ObjectGet(name,OBJPROP_PRICE1)!=Price1)
{
ObjectDelete(name);
Draw_Trend(name,Price1,Price2,Time1,Time2,_Color);
}
}


ثم شروط رسم الترندين وفتح الصفقات بالدالة الرئيسية OnTick كالتالي :


datetime time=0;


void OnTick()
{
if(time!=Time[0])
{
if(ZigZag_Price(5)>ZigZag_Price(3))Draw_Trend("T",ZigZag_Price(5),ZigZag_Price(3),Time[ZigZag_Time(5)],Time[ZigZag_Time(3)],Green);
if(ZigZag_Price(4)<ZigZag_Price(2))Draw_Trend("B",ZigZag_Price(4),ZigZag_Price(2),Time[ZigZag_Time(4)],Time[ZigZag_Time(2)],Magenta);

if(ZigZag_Price(1)<ZigZag_Price(2))
{
if(ZigZag_Price(4)>ZigZag_Price(2))Draw_Trend("T",ZigZag_Price(4),ZigZag_Price(2),ZigZag_Time(4),Zi gZag_Time(2),Green);
if(ZigZag_Price(5)<ZigZag_Price(3))Draw_Trend("B",ZigZag_Price(5),ZigZag_Price(3),ZigZag_Time(5),Zi gZag_Time(3),Magenta);

}
time=Time[0];
}

//----ثم شروط فتح الصفقات كالتالي
double up=ObjectGetValueByShift("T",0),//قيمة الترند العلوي المائل إلى اسفل
dn=ObjectGetValueByShift("B",0);//قيمة الترند السفلي المائل إلى اعلى

if(Close[2]<=up&&Close[1]>up)//open buy
if(Close[2]>=dn&&Close[1]<dn)//open sell
}

kira-h
10-07-2021, 11:43 PM
شاكرلك تم حل المشكله هنا

العفو أخي الكريم

simba2000
13-07-2021, 11:38 PM
السلام عليكم أخى الكريم

كل عام وانتم بخير بمناسيه هذه الأيام الطيبه وبعيد الأضحى المبارك

ما هوالكود لكى أدخل مع فتح شمعه الرينكو بالظبط والخروج أوإغلاق الصفقه مع إغلاقها بالظبط ونهرب من السبريد ؟
27575
https://www.fxprg.com/vb/image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK8AAAFECAYAAAB RZm6AAAASDklEQVR4Ae2dL6zVyBfHKxErSDDIDQqJJFlDgkGST Ug2KwgSiWKRGIIkq3DsOhJCgkAgEZDgIKtQBAcCgUAg 3sn9ze86dy2U27nTPt9/UDeu3/anp6e85nvnJnOva9pmqblhxiIMkDiRBOH6JA4Gq8wAyRPOHlbV 1/gBV5ZBmQd37rqcP2oDo1XmAGSJ5y8rasv8AKvLAOyjm9ddbh VIfGK8wAyRNO3tbVF3iBV5YBWce3rjpcP6pD4xVmgOQJJ2/r6gu8wCvLgKzjW1cdrh/VofEKM0DyhJO3dfUFXuCVZUDW8a2rDteP6tB4hRkgecLJ27r6A i/wyjIg6/jWVYfrR3VovMIMkDzh5G1dfYEXeGUZkHV866rD9aM6NF5hBkie cPK2rr7AC7yyDMg6vnXV4fpRHRqvMAMkTzh5W1df4AVeWQZkHd 66nD9qA6NV5gBkiecvK2rL/ACrywDso5vXXW4flSHxivMAMkTTt7W1Rd4gVeWAVnHt646XD qQ MVZoDkCSdv6 oLvMAry4Cs41tXHa4f1aHxCjNA8oSTt3X1BV7glWVA1vGtqw7X j rQeIUZIHnCydu6 gIv8MoyIOv41lWH60d1aLzCDJA84eRtXX2BF3hlGZB1fOuqw/WjOjReYQZInnDytq6 wAu8sgzIOr511Vntsjdrz/N6N8jm5cPkDjzuPfkvExcD3Pn7fv7IDnxWHbF55cfPNwzfMvbx 94XdUjB4Dy9jxcwAtcKxUY4F1pYpQVsZbvwAu8sj0L8AIv8A4w kG8cAwfW6no4z7xBzZLxy8M179ry9oFXVvmWBNfOnYcLeIFrpQ IDvCtNzNKqpnB 4AVe2Z4FeIEXeAcYyDeOgQMVui18nDcgmhu/PFzz/MvbB15Z5ZsL39zj83ABL3CtVGCAd6WJmatKWzgeeIFXtmcBXuA F3gEG8o1j4MAtdHtco/eAyts 8Moq39KNL6 MwAtcKxUY4F1pYpZWNYXzAy/wyvYswAu8wDvAQL5xDByo0G3h47wB0dz45eGa51/ePvDKKt9c OYen4cLeIFrpQIDvCtNzFxV2sLxwAu8sj0L8AIv8A4wkG8cAwd uodvjGr0HVL72f/vtt5YfYnAIA0eyNw/OnHgc2R/z66jHcnZggv2zZ5v2yZOmPXPmjG8wJviyhnjI FAB3kwslof3 fOmbY8C8eFD0547dw6AVRoZ8O4az717TXv9 nXAVQHX/ATe5ZU/0zWtt0Ht8PH9PdaYfM 8sz52/qmJM2W0rj39sfen2ujb7 LFpv32bWcX5f3JWFp6x5M7b3tp 6XtTbn4GLAU3iHgrl0bBtLs/f777 0vvzTt27fdBjFkb4qfm9unPAxd2EvbL21vSsJv327ay5cvt2Fg 9erV MxADGXfvqbW8fvx/l7M41xa/N71MehpMHr0GSAjcGjinro0dNa1Ngr1/vzyAYrE f7r8fGgezDhPLAeDNByqehx0CL4Y5LjOGQEzLhbQcGTouPs/mnwNvHl6rX8PAzB4NtLHuPS4D iAMNlJg49d9x20e1nRwBrx5eA22AK8BFMNsr/vKg6C VjbEd89CaRDXvECZz0FvjIA3HzgDN6eEBvCnT92Zg6DOAeRYWZ lVyMe9F9hYfYE3H8QAX4BxLKhBWdN9Y7gBNx/zsRj/2Aa80wIZoIzVMzwHxmkx/AFdrJ5zngPv9MCHGw8B2lwpUTxZcxJ9Eo8F3unwAuPKYgW8K0v ISVRIr2sCXuCV7VGAF3iBd4CB0o2jtD3ZxHl1xUp2y8NwMhfmA PmAOi0JO/CuMClLAqF0buAFXtleBXiBF3gHGCjdOErbWypxV6827YsXTfvs 2UDglLrvpXwtDwMDtrEGcfp003782F19dv48AI/FbHAb8NYH5927LrwPHtT3YRCIpVT0kPMCb31w/vijC /3701rinwigDoEwkOPAd760Jw61bSfP3cBvnWrvh/yjQV4l4Hmzp0uvFYHy8N0qIIeehzwLgONfbLCyoWwNtgebQYCg H8iBsD7E8E6VCEGjnv4sAvvy5fL SLZaIB3OWAuXOjCa pr70mCNNBAXa8FeJeFxdQ2Lh3WdZf1xhKw048C4Li9W5MbxWB1 s9LAVRaSin2lODd p1Td9veVDSO242EwG8E2IAvBOCNL0lHASdzfHG6mtzwDYXDMCZ GABvJkDO4BqgBmo6bWZ34YA3EwPgzQSoArwGqa1viNXX1j8Aby YGwJsJUCV4f/21C6 BzLRZJjfAmwlQJXhNZW1tb6y q1/ra/B4/x Lv/e5zf7Y Zffth4Hr1zpwrv6aTPv5Ja2X9oe8HYbj9RaX28YStsvbQ94u/DevNlV31VPm3nDUNp aXvA24W3b62vAb3K2ssbhtL2S9sD3n0w79/vqu9qp828YShtv7Q94N2Ht2 trw3mVqe 3jCUtl/aHvD2QykxbeYNQ2n7pe0Bbz 8fWt97UbGqtTXGwZv 8vDNzefKwMiCujqp8284fK2H8V6VaIw3a/1wtu31ndVq8284fK2Px2SuQrpdfx64e2bNlvVR S94fK2D7y 8Kdrffs Im 18KVLxz/VamNvuLztA68vvH3TZulH5O/e7c4L2 sqNZw3XN72gdcflPQj8vbtkjGcwNuNRxybE/58/RfeN20Wr/W1TxzHSymr3U72VkZv yhvHfhNbWNATY2DqqTw3rhxvC3s4/LoDZe3feD1ASUddPVNm4WPyKd349Ka2AVcS7w3XN72gbc8vPZ5 tq9fmzZdz/D fVd9w7RZ sUlNvPgBmyccG 4vO3H16L5vFKiJwYnnRoLgBqM6baw1vfNmy7UFy9WuiZvuLztT 8xJFSE4zJdKiZ7gXN/AzOrcUN/2fUTeSoT0S0vSksMt N5wedufkBO32JU593rgtUCl39sbBmlWGti3p/d9RB5415XDisCv78JNTdMvITGIrea1ejYAHR7TfasFz1sZve2X Ub8644t X9cHr8FnJUSqqAarDeTSPwkQIA6PwLvOnDrkZb0XalNh6WAsAD r0aHA7BKnfprcyetvvV7P a13nvhWTfUAAbJD2 PF qTAEb9/CHTeYveHytn9APtxieZgv64Y3BGtoIJdCbHVxOMb90Rsub/uHAVMvvnn/KiY778xoYOybI9PBWQpv1b9r4Q2Xt/2Z XAXh7x/OvBasGwgNzZgA16tfM5sAHoXawO59PNtQYGr/k0Lb2X0tp9XttGecCZ4JWzrwWtBGxrIAa9mPg9sCNoXmy5Et2/bOTAQP3 ctzJ620d5K8IyEOx4IFftI0Dmizdc3vYH4lmt8c8///LwlQiWrSSzgVy8Cq2E3VEb3nB5258Pz8/3VmXPeTLgNchsNVm15ZCWBG 4vO2XBWkJkE8OvKMq6ZEob7i87XvEpK5N4D0Yem 4vO3XBc1DmYXhteR6/x9LsPe5zf7Y dkmHCDv5Ja2X9oe8ALvoLqVhq20PeAFXuCVZUDWcdMx35qwtP3 S9lBeZwA8A wNg7d9z9hswzbwVisbtgGUb2/YjSHwAq8sA7KOW6fu28q97XdVxPdaTua5nAHwDJo3XN72PWOzD dvAS9kgy4Cs46aLvl2tt/1tqKNnjpwB8EyQN1ze9j1jsw3bwEvZIMuArOOmi55dkr/9baijZ46cAfBMEPB6gqFgG3gpG2QZkHXcv1v3VnbPXmkbtoEX5 ZVlQNZxlHcb6jpWewMvyivLgKzjKC/KC7worywDso6jvCgv8KK8sgzIOo7yorzAi/LKMiDrOMqL8gIvyivLgKzjKC/KC7worywDso6jvCgv8KK8sgzIOo7yorzAi/LKMiDrOMqL8gIvyqvKwE6/hn Pte7ho8ptqXD U0fePjj6Odvn9dj52Tb2KQf/be3Iv6P2OO5Abvvc5Hrbj/x7/75pv39vWvvD2/bHCAfVODqGfRaO0wi7hs54EnPb5yba237k37NnzVEojn AOJP7KHaLNWLg3SXpzp1jcGOIHz9u2gsXBBK5Bphq wC8OzCvXOmHN4BsygzEK2vEwLtLyNmz4/DGEF 6tLIk1la8tZwPeI9B/Px5GsAG8suXTQvEx7FbpO4F3uMEpIO2oLZjjwbx1avHNhZJ4lq UsLYfwHsM3v3705U3BfrdOyCu3nCB9xheU9AUyvi1zQWb0sbvp c8N4osXj21WT2ht9VvyfMB7DNr58 NgGqg3buxq3RcvhvdlVuI4pq6NF3i7gf76tQul3XWL1dVeG SWFIM0rZPttWvCllS6tZ0beLuwpWXBgwe728YxwFY nDp1fFwMMap7HBf3Rgy83WAbrDGoNoizUiF z573KSxrIrqxBN7KXVUKqtW2lgRb65ACfOtW5WRVjoU7fHOvB XtAmjdfgyp1cCWRCsTrFyIt1n9y8xCN35VgQfe/eCngzS7dWxJsYFaOqD7 LFpT5/et1E1iXMVTPV44N0Hz ZqY4WN76D1zQXbIA9YF4gB8O4H/eHDLrx373b3SQd1Bnq6DzB3Y YSD DdD/LNm11405kFq3/fvOnuYwCzUGc/li7QhjIHePcDboOwuGwwUNMkWB2crkKz10yX7ccqjV2x18C7H2 xTVisDrL4Ng7W gJvSxpDbcwM9voHRdxzv7cf8oJgA77xAGuQpwFYTH5SM0B3yOC 1 wDsftL5FOvEMBSDPj3FvDIF3fmBtntfme2MFjhfw9AYedZ2mrm NxAt758BqcNshLb26kC3iAuEysf8QReMsF1NY6xOprz21NxI9g j6kI234 TsBbFi77nocUYJs3BmCHGABv2aCygKdsPEcbPfCWD7Yt4EnrXx bwlI z9XGD/45ON97d5bbPreO87c/1b T4dF2wlRLpbeZRVRmxzXH/53KQ3KMNwJtpvBnA hbw2HeiAV hGABvoUD2gNy3gMfWP3D7uFDMgbdQIHvgNYW1hTphAbvdiWPhe sF4A2/BYA4AbLeKWe/rEGfgdQjqAMTUuoVjDbyFAwq4FQekuzmF4d9jyRg qtyWsfOzrSIoq2zkFZ0ypAGOGJRjoCJQwDsZ3L/ atozZ85M2t8 7fHkyfT9T5CAAO/akmkwfvrUtK9eTQPy fPdYqAPH5r23Llzk4Bf2zUf6A/wHhg4N0hsbfC3bzs1nerbvXtNe/36dTefpvpReT/grRzwSYCZmpaC8Zdfmvbvv6ep BpjMeIT8I4EZxJoHsebktpPznZQaVuJMgR72GeKvdz5VrY9H6B iDjNgy8IYYn3tWn/ZYO8HUE1R377tLn7vAzgcM7WGDj4IPALvGpJ0 3bTXr58 Qfcppa2FiKecYhhjUGM3//ypWsnXJsBfAIHdMAbErzUo80uWE0an79v suAfvRo90Uor1/vzyyMzToY4E f7h8Tn1PweTdorhdA2dABNMS6b6agD7ZQu1rZkPsxlf3zz92sR dgX5Z1zdwR4e H999/9rt6UN1XXuDwIQA49Au8cUPuOBd5eeK27j2cCAqT2ubf//ut29UF97Y5aUO4NP1YMAvD2Amfg9imozRyEu23x9qFB2QYhBt6 lkx6UNgDaV5uGwRjgdnjtvOhVhmLJRXl949tXqp3s94C3WOM82 aCsseEBL/BWZKBsA6/oOGXDGtVL2SfgRXkrMiCrvGUdV1YMfC/DgmyrA4AyACjHEXgpG2QZkHVcWTHwvUyvAbworywDso6jXmXUS zmOwIvyyjIg67iyYuB7mV4DeFFeWQZkHUe9yqiXchyBF WVZUDWcWXFwPcyvQbworyyDMg6jnqVUS/lOAIvyivLgKzjyoqB72V6DeBFeWUZkHUc9SqjXspxBF6UV5YBW ceVFQPfy/QawIvyyjIg6zjqVUa9lOMIvCivLAOyjisrBr6X6TWAF WVZUDWcdSrjHopxxF4UV5ZBmQdV1YMfC/TawAvyivLgKzjqFcZ9VKOI/CivLIMyDqurBj4XqbXAF6UV5YBWcdRrzLqpRxH4EV5ZRmQdVxZ MfC9TK8BvCivLAOyjqNeZdRLOY7Ai/LKMiDruLJi4HuZXgN4UV5ZBmQdR73KqJdyHIEX5ZVlQNZxZcXA 9zK9BvCivLIMyDqOepVRL U4Ai/KK8uArOPKioHvZXoN4EV5ZRmQdRz1KqNeynEEXpRXlgFZx5UVA 9/L9BrAi/LKMiDrOOpVRr1k4/g/9GESbnG5KrYAAAAASUVORK5CYII=

kira-h
14-07-2021, 12:58 AM
السلام عليكم أخى الكريم

كل عام وانتم بخير بمناسيه هذه الأيام الطيبه وبعيد الأضحى المبارك

ما هوالكود لكى أدخل مع فتح شمعه الرينكو بالظبط والخروج أوإغلاق الصفقه مع إغلاقها بالظبط ونهرب من السبريد ؟
27575
https://www.fxprg.com/vb/image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK8AAAFECAYAAAB RZm6AAAASDklEQVR4Ae2dL6zVyBfHKxErSDDIDQqJJFlDgkGST Ug2KwgSiWKRGIIkq3DsOhJCgkAgEZDgIKtQBAcCgUAg 3sn9ze86dy2U27nTPt9/UDeu3/anp6e85nvnJnOva9pmqblhxiIMkDiRBOH6JA4Gq8wAyRPOHlbV 1/gBV5ZBmQd37rqcP2oDo1XmAGSJ5y8rasv8AKvLAOyjm9ddbh VIfGK8wAyRNO3tbVF3iBV5YBWce3rjpcP6pD4xVmgOQJJ2/r6gu8wCvLgKzjW1cdrh/VofEKM0DyhJO3dfUFXuCVZUDW8a2rDteP6tB4hRkgecLJ27r6A i/wyjIg6/jWVYfrR3VovMIMkDzh5G1dfYEXeGUZkHV866rD9aM6NF5hBkie cPK2rr7AC7yyDMg6vnXV4fpRHRqvMAMkTzh5W1df4AVeWQZkHd 66nD9qA6NV5gBkiecvK2rL/ACrywDso5vXXW4flSHxivMAMkTTt7W1Rd4gVeWAVnHt646XD qQ MVZoDkCSdv6 oLvMAry4Cs41tXHa4f1aHxCjNA8oSTt3X1BV7glWVA1vGtqw7X j rQeIUZIHnCydu6 gIv8MoyIOv41lWH60d1aLzCDJA84eRtXX2BF3hlGZB1fOuqw/WjOjReYQZInnDytq6 wAu8sgzIOr511Vntsjdrz/N6N8jm5cPkDjzuPfkvExcD3Pn7fv7IDnxWHbF55cfPNwzfMvbx 94XdUjB4Dy9jxcwAtcKxUY4F1pYpQVsZbvwAu8sj0L8AIv8A4w kG8cAwfW6no4z7xBzZLxy8M179ry9oFXVvmWBNfOnYcLeIFrpQ IDvCtNzNKqpnB 4AVe2Z4FeIEXeAcYyDeOgQMVui18nDcgmhu/PFzz/MvbB15Z5ZsL39zj83ABL3CtVGCAd6WJmatKWzgeeIFXtmcBXuA F3gEG8o1j4MAtdHtco/eAyts 8Moq39KNL6 MwAtcKxUY4F1pYpZWNYXzAy/wyvYswAu8wDvAQL5xDByo0G3h47wB0dz45eGa51/ePvDKKt9c OYen4cLeIFrpQIDvCtNzFxV2sLxwAu8sj0L8AIv8A4wkG8cAwd uodvjGr0HVL72f/vtt5YfYnAIA0eyNw/OnHgc2R/z66jHcnZggv2zZ5v2yZOmPXPmjG8wJviyhnjI FAB3kwslof3 fOmbY8C8eFD0547dw6AVRoZ8O4az717TXv9 nXAVQHX/ATe5ZU/0zWtt0Ht8PH9PdaYfM 8sz52/qmJM2W0rj39sfen2ujb7 LFpv32bWcX5f3JWFp6x5M7b3tp 6XtTbn4GLAU3iHgrl0bBtLs/f777 0vvzTt27fdBjFkb4qfm9unPAxd2EvbL21vSsJv327ay5cvt2Fg 9erV MxADGXfvqbW8fvx/l7M41xa/N71MehpMHr0GSAjcGjinro0dNa1Ngr1/vzyAYrE f7r8fGgezDhPLAeDNByqehx0CL4Y5LjOGQEzLhbQcGTouPs/mnwNvHl6rX8PAzB4NtLHuPS4D iAMNlJg49d9x20e1nRwBrx5eA22AK8BFMNsr/vKg6C VjbEd89CaRDXvECZz0FvjIA3HzgDN6eEBvCnT92Zg6DOAeRYWZ lVyMe9F9hYfYE3H8QAX4BxLKhBWdN9Y7gBNx/zsRj/2Aa80wIZoIzVMzwHxmkx/AFdrJ5zngPv9MCHGw8B2lwpUTxZcxJ9Eo8F3unwAuPKYgW8K0v ISVRIr2sCXuCV7VGAF3iBd4CB0o2jtD3ZxHl1xUp2y8NwMhfmA PmAOi0JO/CuMClLAqF0buAFXtleBXiBF3gHGCjdOErbWypxV6827YsXTfvs 2UDglLrvpXwtDwMDtrEGcfp003782F19dv48AI/FbHAb8NYH5927LrwPHtT3YRCIpVT0kPMCb31w/vijC /3701rinwigDoEwkOPAd760Jw61bSfP3cBvnWrvh/yjQV4l4Hmzp0uvFYHy8N0qIIeehzwLgONfbLCyoWwNtgebQYCg H8iBsD7E8E6VCEGjnv4sAvvy5fL SLZaIB3OWAuXOjCa pr70mCNNBAXa8FeJeFxdQ2Lh3WdZf1xhKw048C4Li9W5MbxWB1 s9LAVRaSin2lODd p1Td9veVDSO242EwG8E2IAvBOCNL0lHASdzfHG6mtzwDYXDMCZ GABvJkDO4BqgBmo6bWZ34YA3EwPgzQSoArwGqa1viNXX1j8Aby YGwJsJUCV4f/21C6 BzLRZJjfAmwlQJXhNZW1tb6y q1/ra/B4/x Lv/e5zf7Y Zffth4Hr1zpwrv6aTPv5Ja2X9oe8HYbj9RaX28YStsvbQ94u/DevNlV31VPm3nDUNp aXvA24W3b62vAb3K2ssbhtL2S9sD3n0w79/vqu9qp828YShtv7Q94N2Ht2 trw3mVqe 3jCUtl/aHvD2QykxbeYNQ2n7pe0Bbz 8fWt97UbGqtTXGwZv 8vDNzefKwMiCujqp8284fK2H8V6VaIw3a/1wtu31ndVq8284fK2Px2SuQrpdfx64e2bNlvVR S94fK2D7y 8Kdrffs Im 18KVLxz/VamNvuLztA68vvH3TZulH5O/e7c4L2 sqNZw3XN72gdcflPQj8vbtkjGcwNuNRxybE/58/RfeN20Wr/W1TxzHSymr3U72VkZv yhvHfhNbWNATY2DqqTw3rhxvC3s4/LoDZe3feD1ASUddPVNm4WPyKd349Ka2AVcS7w3XN72gbc8vPZ5 tq9fmzZdz/D fVd9w7RZ sUlNvPgBmyccG 4vO3H16L5vFKiJwYnnRoLgBqM6baw1vfNmy7UFy9WuiZvuLztT 8xJFSE4zJdKiZ7gXN/AzOrcUN/2fUTeSoT0S0vSksMt N5wedufkBO32JU593rgtUCl39sbBmlWGti3p/d9RB5415XDisCv78JNTdMvITGIrea1ejYAHR7TfasFz1sZve2X Ub8644t X9cHr8FnJUSqqAarDeTSPwkQIA6PwLvOnDrkZb0XalNh6WAsAD r0aHA7BKnfprcyetvvV7P a13nvhWTfUAAbJD2 PF qTAEb9/CHTeYveHytn9APtxieZgv64Y3BGtoIJdCbHVxOMb90Rsub/uHAVMvvnn/KiY778xoYOybI9PBWQpv1b9r4Q2Xt/2Z XAXh7x/OvBasGwgNzZgA16tfM5sAHoXawO59PNtQYGr/k0Lb2X0tp9XttGecCZ4JWzrwWtBGxrIAa9mPg9sCNoXmy5Et2/bOTAQP3 ctzJ620d5K8IyEOx4IFftI0Dmizdc3vYH4lmt8c8///LwlQiWrSSzgVy8Cq2E3VEb3nB5258Pz8/3VmXPeTLgNchsNVm15ZCWBG 4vO2XBWkJkE8OvKMq6ZEob7i87XvEpK5N4D0Yem 4vO3XBc1DmYXhteR6/x9LsPe5zf7Y dkmHCDv5Ja2X9oe8ALvoLqVhq20PeAFXuCVZUDWcdMx35qwtP3 S9lBeZwA8A wNg7d9z9hswzbwVisbtgGUb2/YjSHwAq8sA7KOW6fu28q97XdVxPdaTua5nAHwDJo3XN72PWOzD dvAS9kgy4Cs46aLvl2tt/1tqKNnjpwB8EyQN1ze9j1jsw3bwEvZIMuArOOmi55dkr/9baijZ46cAfBMEPB6gqFgG3gpG2QZkHXcv1v3VnbPXmkbtoEX5 ZVlQNZxlHcb6jpWewMvyivLgKzjKC/KC7worywDso6jvCgv8KK8sgzIOo7yorzAi/LKMiDrOMqL8gIvyivLgKzjKC/KC7worywDso6jvCgv8KK8sgzIOo7yorzAi/LKMiDrOMqL8gIvyqvKwE6/hn Pte7ho8ptqXD U0fePjj6Odvn9dj52Tb2KQf/be3Iv6P2OO5Abvvc5Hrbj/x7/75pv39vWvvD2/bHCAfVODqGfRaO0wi7hs54EnPb5yba237k37NnzVEojn AOJP7KHaLNWLg3SXpzp1jcGOIHz9u2gsXBBK5Bphq wC8OzCvXOmHN4BsygzEK2vEwLtLyNmz4/DGEF 6tLIk1la8tZwPeI9B/Px5GsAG8suXTQvEx7FbpO4F3uMEpIO2oLZjjwbx1avHNhZJ4lq UsLYfwHsM3v3705U3BfrdOyCu3nCB9xheU9AUyvi1zQWb0sbvp c8N4osXj21WT2ht9VvyfMB7DNr58 NgGqg3buxq3RcvhvdlVuI4pq6NF3i7gf76tQul3XWL1dVeG SWFIM0rZPttWvCllS6tZ0beLuwpWXBgwe728YxwFY nDp1fFwMMap7HBf3Rgy83WAbrDGoNoizUiF z573KSxrIrqxBN7KXVUKqtW2lgRb65ACfOtW5WRVjoU7fHOvB XtAmjdfgyp1cCWRCsTrFyIt1n9y8xCN35VgQfe/eCngzS7dWxJsYFaOqD7 LFpT5/et1E1iXMVTPV44N0Hz ZqY4WN76D1zQXbIA9YF4gB8O4H/eHDLrx373b3SQd1Bnq6DzB3Y YSD DdD/LNm11405kFq3/fvOnuYwCzUGc/li7QhjIHePcDboOwuGwwUNMkWB2crkKz10yX7ccqjV2x18C7H2 xTVisDrL4Ng7W gJvSxpDbcwM9voHRdxzv7cf8oJgA77xAGuQpwFYTH5SM0B3yOC 1 wDsftL5FOvEMBSDPj3FvDIF3fmBtntfme2MFjhfw9AYedZ2mrm NxAt758BqcNshLb26kC3iAuEysf8QReMsF1NY6xOprz21NxI9g j6kI234 TsBbFi77nocUYJs3BmCHGABv2aCygKdsPEcbPfCWD7Yt4EnrXx bwlI z9XGD/45ON97d5bbPreO87c/1b T4dF2wlRLpbeZRVRmxzXH/53KQ3KMNwJtpvBnA hbw2HeiAV hGABvoUD2gNy3gMfWP3D7uFDMgbdQIHvgNYW1hTphAbvdiWPhe sF4A2/BYA4AbLeKWe/rEGfgdQjqAMTUuoVjDbyFAwq4FQekuzmF4d9jyRg qtyWsfOzrSIoq2zkFZ0ypAGOGJRjoCJQwDsZ3L/ atozZ85M2t8 7fHkyfT9T5CAAO/akmkwfvrUtK9eTQPy fPdYqAPH5r23Llzk4Bf2zUf6A/wHhg4N0hsbfC3bzs1nerbvXtNe/36dTefpvpReT/grRzwSYCZmpaC8Zdfmvbvv6ep BpjMeIT8I4EZxJoHsebktpPznZQaVuJMgR72GeKvdz5VrY9H6B iDjNgy8IYYn3tWn/ZYO8HUE1R377tLn7vAzgcM7WGDj4IPALvGpJ0 3bTXr58 Qfcppa2FiKecYhhjUGM3//ypWsnXJsBfAIHdMAbErzUo80uWE0an79v suAfvRo90Uor1/vzyyMzToY4E f7h8Tn1PweTdorhdA2dABNMS6b6agD7ZQu1rZkPsxlf3zz92sR dgX5Z1zdwR4e H999/9rt6UN1XXuDwIQA49Au8cUPuOBd5eeK27j2cCAqT2ubf//ut29UF97Y5aUO4NP1YMAvD2Amfg9imozRyEu23x9qFB2QYhBt6 lkx6UNgDaV5uGwRjgdnjtvOhVhmLJRXl949tXqp3s94C3WOM82 aCsseEBL/BWZKBsA6/oOGXDGtVL2SfgRXkrMiCrvGUdV1YMfC/DgmyrA4AyACjHEXgpG2QZkHVcWTHwvUyvAbworywDso6jXmXUS zmOwIvyyjIg67iyYuB7mV4DeFFeWQZkHUe9yqiXchyBF WVZUDWcWXFwPcyvQbworyyDMg6jnqVUS/lOAIvyivLgKzjyoqB72V6DeBFeWUZkHUc9SqjXspxBF6UV5YBW ceVFQPfy/QawIvyyjIg6zjqVUa9lOMIvCivLAOyjisrBr6X6TWAF WVZUDWcdSrjHopxxF4UV5ZBmQdV1YMfC/TawAvyivLgKzjqFcZ9VKOI/CivLIMyDqurBj4XqbXAF6UV5YBWcdRrzLqpRxH4EV5ZRmQdVxZ MfC9TK8BvCivLAOyjqNeZdRLOY7Ai/LKMiDruLJi4HuZXgN4UV5ZBmQdR73KqJdyHIEX5ZVlQNZxZcXA 9zK9BvCivLIMyDqOepVRL U4Ai/KK8uArOPKioHvZXoN4EV5ZRmQdRz1KqNeynEEXpRXlgFZx5UVA 9/L9BrAi/LKMiDrOOpVRr1k4/g/9GESbnG5KrYAAAAASUVORK5CYII=
وعليكم السلام
لا يمكن الهروب من خسارة السبريد
عموما ستستخدم شرط الفوليوم باضافته مع شروط الفتح والاغلاق
مثال :

if(Close[1]>Open[1]&&Volume[0]<5)//open buy
يعني اشترطت بالشراء تحقق الشمعة السابقة صاعدة (1)، وفوليوم الشمعة الحالية (0) لم يتجاوز حجمها 5 تكات (يعني نصف نقطة معناه لحظة اغلاق الشمعة السابقة (1))

simba2000
14-07-2021, 03:00 AM
بارك الله فيك
لتجنب اكبرما يمكن من خساره السبريد

كيف يكون كود فتح الأوردر ؟
وكيف يكون كود إغلاق الأوردر ؟


وعليكم السلام
لا يمكن الهروب من خسارة السبريد
عموما ستستخدم شرط الفوليوم باضافته مع شروط الفتح والاغلاق
مثال :

if(Close[1]>Open[1]&&Volume[0]<5)//open buy
يعني اشترطت بالشراء تحقق الشمعة السابقة صاعدة (1)، وفوليوم الشمعة الحالية (0) لم يتجاوز حجمها 5 تكات (يعني نصف نقطة معناه لحظة اغلاق الشمعة السابقة (1))

kira-h
14-07-2021, 03:37 AM
بارك الله فيك
لتجنب اكبرما يمكن من خساره السبريد

كيف يكون كود فتح الأوردر ؟
وكيف يكون كود إغلاق الأوردر ؟
دالة البيع ودالة الشراء (https://www.fxprg.com/vb/showthread.php?t=31456&p=844555&viewfull=1#post844555)

دالة إغلاق الصفقات بدلالة النوع أو بدونها (https://www.fxprg.com/vb/showthread.php?t=31456&p=844589&viewfull=1#post844589)

simba2000
14-07-2021, 04:57 AM
شكرا بارك الله فيك


دالة البيع ودالة الشراء (https://www.fxprg.com/vb/showthread.php?t=31456&p=844555&viewfull=1#post844555)

دالة إغلاق الصفقات بدلالة النوع أو بدونها (https://www.fxprg.com/vb/showthread.php?t=31456&p=844589&viewfull=1#post844589)

simba2000
14-07-2021, 08:06 AM
أحسنت بارك الله فيك

ليه 5 بالذات ؟ ممكن نخلليها 4 او 3او1 ؟



وعليكم السلام
لا يمكن الهروب من خسارة السبريد
عموما ستستخدم شرط الفوليوم باضافته مع شروط الفتح والاغلاق
مثال :

if(Close[1]>Open[1]&&Volume[0]<5)//open buy
يعني اشترطت بالشراء تحقق الشمعة السابقة صاعدة (1)، وفوليوم الشمعة الحالية (0) لم يتجاوز حجمها 5 تكات (يعني نصف نقطة معناه لحظة اغلاق الشمعة السابقة (1))

simba2000
14-07-2021, 08:52 AM
او بمعنى اخر
ليه مخلليهاش 2 علشان اضمن دخول الصفقه ؟

kira-h
14-07-2021, 11:31 AM
أحسنت بارك الله فيك

ليه 5 بالذات ؟ ممكن نخلليها 4 او 3او1 ؟
نعم ممكن

او بمعنى اخر
ليه مخلليهاش 2 علشان اضمن دخول الصفقه ؟

بالعكس كلما كبر الرقم كلما ضمنت دخول الصفقة ولكن قد تفتح الصفقة بعيدا عن سعر الاغلاق
والعكس صحيح كلما صغر الرقم كلما كانت نقطة الدخول ادق عند سعر الاغلاق ولكن قد لا يتم فتح الصفقة اذا السعر تحرك بسرعة او بعد انقطاع النت لفترة وجيزة وهكذا...
لهذا 5 تكات بل في كثير من الاحيان اضع 20 تكة اي نقطتين فقط، حتى اعطي المجال لتحرك السعر واضمن فتح الصفقة بنسبة عالية.

simba2000
14-07-2021, 06:52 PM
بارك الله فيك

كده معناه مفيش حل للدخول عند سعرالإغلاق اوأقرب ما يكون منه
لإن إحنا كده هنبقى تحت رحمه الفوليوم والإنترنت وسرعه حركه السعر

أخى الفاضل
مفيش طريقه ثانيه مضمونه للدخول عند سعر الإغلاق اواقرب ما يكون منه ؟


نعم ممكن


بالعكس كلما كبر الرقم كلما ضمنت دخول الصفقة ولكن قد تفتح الصفقة بعيدا عن سعر الاغلاق
والعكس صحيح كلما صغر الرقم كلما كانت نقطة الدخول ادق عند سعر الاغلاق ولكن قد لا يتم فتح الصفقة اذا السعر تحرك بسرعة او بعد انقطاع النت لفترة وجيزة وهكذا...
لهذا 5 تكات بل في كثير من الاحيان اضع 20 تكة اي نقطتين فقط، حتى اعطي المجال لتحرك السعر واضمن فتح الصفقة بنسبة عالية.

kira-h
14-07-2021, 07:44 PM
بارك الله فيك

كده معناه مفيش حل للدخول عند سعرالإغلاق اوأقرب ما يكون منه
لإن إحنا كده هنبقى تحت رحمه الفوليوم والإنترنت وسرعه حركه السعر

أخى الفاضل
مفيش طريقه ثانيه مضمونه للدخول عند سعر الإغلاق اواقرب ما يكون منه ؟
وإياك أخي الكريم
اخي كل شيء بهذا المجال تحت رحمة السوق
شرط الفوليوم الطريقة الوحيدة لفتح الصفقة عند اغلاق الشمعة

simba2000
15-07-2021, 05:46 PM
السلام عليكم أخى الكريم

أشكرك على كل ردودك ومساعدتك الطيبه المحترفه

عيد أضحى مبارك عليكم وعلى كل من فى هذا المنتدى الرائع، بارك الله فيكم ولكم


لوسمحتم تكرما منكم عاوز كود يعمل الأتى:

1- يضع أمرين معلقين على بعد x (بالنقاط) من إفتتاح الشمعه الحاليه، واحد شراء والثانى بيع التيك بروفيت والستوب لوز لكل من الأمرين يساوى x (بالنقاط) ، الأمر الذى هوأعلى من سعر إفتتاح الشمعه الحاليه هيبقى شراء والأمر الذى تحت سعر إفتتاح الشمعه الحاليه هيبقى بيع
2- لوتفعل أحد الأمرين نحذف الأمرالثانى الذى لم يتفعل

شكرا مقدما ،بارك الله فيكم

kira-h
17-07-2021, 12:00 AM
السلام عليكم أخى الكريم

أشكرك على كل ردودك ومساعدتك الطيبه المحترفه

عيد أضحى مبارك عليكم وعلى كل من فى هذا المنتدى الرائع، بارك الله فيكم ولكم


لوسمحتم تكرما منكم عاوز كود يعمل الأتى:

1- يضع أمرين معلقين على بعد x (بالنقاط) من إفتتاح الشمعه الحاليه، واحد شراء والثانى بيع التيك بروفيت والستوب لوز لكل من الأمرين يساوى x (بالنقاط) ، الأمر الذى هوأعلى من سعر إفتتاح الشمعه الحاليه هيبقى شراء والأمر الذى تحت سعر إفتتاح الشمعه الحاليه هيبقى بيع
2- لوتفعل أحد الأمرين نحذف الأمرالثانى الذى لم يتفعل

شكرا مقدما ،بارك الله فيكم
وعليكم السلام
العفو اخي الكريم
بالنسبة لطلبك عبارة عن عمل اكسبيرت والموضوع هنا مخصص فقط للأسئلة البرمجية
يمكنك مراجعة الموضوع التالي :
أهم الدوال البرمجية وتطبيقات لغة mql4 (https://www.fxprg.com/vb/showthread.php?t=31456)

simba2000
22-07-2021, 07:10 PM
لا ابدا مش إكسبيرت

مجرد أوامر علشان اتعلم ازاى بنحذف امر لولم يتفعل

شكرا مقدما


وعليكم السلام
العفو اخي الكريم
بالنسبة لطلبك عبارة عن عمل اكسبيرت والموضوع هنا مخصص فقط للأسئلة البرمجية
يمكنك مراجعة الموضوع التالي :
أهم الدوال البرمجية وتطبيقات لغة mql4 (https://www.fxprg.com/vb/showthread.php?t=31456)

kira-h
22-07-2021, 07:26 PM
لا ابدا مش إكسبيرت

مجرد أوامر علشان اتعلم ازاى بنحذف امر لولم يتفعل

شكرا مقدما
بسيطة ستقوم بحذفه باستخدام دالة الاغلاق الموجودة بموضوع التطبيقات
دالة إغلاق الصفقات بدلالة النوع أو بدونها (https://www.fxprg.com/vb/showthread.php?t=31456&p=844589&viewfull=1#post844589)

simba2000
22-07-2021, 09:16 PM
الأمر المعلق الذى لم يتفعل

مش شايف الداله دى تفيد
لو ممكن مثال على اللى طلبته ابقى شاكر لك
شكرامقدما

بسيطة ستقوم بحذفه باستخدام دالة الاغلاق الموجودة بموضوع التطبيقات
دالة إغلاق الصفقات بدلالة النوع أو بدونها (https://www.fxprg.com/vb/showthread.php?t=31456&p=844589&viewfull=1#post844589)

kira-h
23-07-2021, 06:15 PM
الأمر المعلق الذى لم يتفعل

مش شايف الداله دى تفيد
لو ممكن مثال على اللى طلبته ابقى شاكر لك
شكرامقدما
الشروط كالتالي :


if(Orderscnt(OP_BUY)>0)CloseOrders(OP_SELLSTOP);
if(Orderscnt(OP_SELL)>0)CloseOrders(OP_BUYSTOP);


بحيث Orderscnt دالة عدد الصفقات حسب النوع
و ِCloseOrders دالة اغلاق الصفقات حسب النوع


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()&&(OrderType()==type||type==-1))
{
cnt++;
}
}
}
return(cnt);
}

void CloseOrders(int type=-1)
{
bool select,clos;
for(int i=OrdersTotal()-1; i>=0; i--)
{
select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
int tt=OrdersTotal(),
tk=OrderTicket(),
ot=OrderType(),
mn=OrderMagicNumber();
double lo=OrderLots(),
pt=OrderProfit();
if(tt>0&&sy==Symbol())
{
if(ot==type||type==-1)
{
if(ot==OP_BUY)
clos=OrderClose(tk,lo,Bid,5);
if(ot==OP_SELL)
clos=OrderClose(tk,lo,Ask,5);
else
if(ot>OP_SELL)
clos=OrderDelete(tk,Red);
}
}
}
}

Waddah
23-07-2021, 07:18 PM
السلام عليكم ....لو تكرمت المساعدة في الكود التالي :
1- يوجد أمر معلق SellLimit له هدف وستوب
2- تفعل الأمر ووصل للهدف
3- المطلوب كود يعيد وضع أمر معلق جديد SellLimit بنفس السعر والهدف والستوب للأمر الأول الذي أغلق (لا يضع أمر في في حال وجود أمر معلق أو الأمر مفعل )

مع جزيل الشكر

simba2000
23-07-2021, 08:17 PM
شكرا يا أفندم
بارك الله فيك

kira-h
23-07-2021, 08:54 PM
السلام عليكم ....لو تكرمت المساعدة في الكود التالي :
1- يوجد أمر معلق SellLimit له هدف وستوب
2- تفعل الأمر ووصل للهدف
3- المطلوب كود يعيد وضع أمر معلق جديد SellLimit بنفس السعر والهدف والستوب للأمر الأول الذي أغلق (لا يضع أمر في في حال وجود أمر معلق أو الأمر مفعل )

مع جزيل الشكر
وعليكم السلام
سنحتاج إلى:
- دالة توقيت آخر صفقة مغلقة كالتالي :


datetime CloseTime(int type=-1)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string sy=OrderSymbol();
int mn=OrderMagicNumber(),
ty=OrderType();
datetime tm=OrderCloseTime();
if(sy==Symbol()&&mn==MagicNo&&ty<=OP_SELL)
{
if(ty==type||type==-1)
{
return(tm);
}
}
}
return(0);
}



- دالة تستخرج بعض خواص الصفقة المغلقة كالتالي:


double Closed(string info,int type=-1)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
string sy=OrderSymbol();
int mn=OrderMagicNumber(),
ty=OrderType();
double lo=OrderLots(),
pt=OrderProfit(),
op=OrderOpenPrice(),
sl=OrderStopLoss(),
tp=OrderTakeProfit();
if(sy==Symbol()&&mn==MagicNo&&ty<=OP_SELL)
{
if(ty==type||type==-1)
{
if(info=="Lots")
return(lo);
else
if(info=="Profit")
return(pt);
else
if(info=="Type")
return(ty);
else
if(info=="Price")
return(op);
else
if(info=="SL")
return(sl);
else
if(info=="TP")
return(tp);
}
}
}
return(0);
}



- دالة عدد الصفقات المفتوحة كالتالي:


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() && MagicNo==OrderMagicNumber() && (OrderType()==type || type==-1))
{
cnt++;
}
}
}
return(cnt);
}


فتكون الشروط لاعادة وضع أمر الشراء كالتالي :


if((Orderscnt(OP_BUY)+Orderscnt(OP_BUYSTOP)+Orders cnt(OP_BUYLIMIT))==0&&CloseTime(OP_BUY)>=iTime(Symbol(),1,0))
{
int type=-1;
if(Closed("Profit",OP_BUY)>0)type=OP_BUYLIMIT;else type=OP_BUYSTOP;
int tk=OrderSend(Symbol(),type,Closed("Lots",OP_BUY),Closed("Price",OP_BUY),5*Q,Closed("SL",OP_BUY),Closed("TP",OP_BUY),"Kira-h",MagicNo,0,Blue);
}

kira-h
23-07-2021, 08:59 PM
شكرا يا أفندم
بارك الله فيك
العفو أخي الكريم

Ghassebd
30-07-2021, 05:13 PM
السلام عليكم ....

how to convert mt4 indicator to mt5

هل من برنامج للتحويل

اشكرك مقدما

shivaa
13-08-2021, 12:38 AM
السلام عليكم
ممكن داله ترجع وقت أعلى هاي فى 20 شمعه سابقه

kira-h
13-08-2021, 01:04 AM
السلام عليكم
ممكن داله ترجع وقت أعلى هاي فى 20 شمعه سابقه
وعليكم السلام
مثال :


datetime HighPos=Time[iHighest(Symbol(),0,MODE_HIGH,20,1)];//وقت أعلى هاي لـ 20 شمعة سابقة
datetime LowPos=Time[iLowest(Symbol(),0,MODE_LOW,20,1)];//وقت أقل لو لـ 20 شمعة سابقة

shivaa
15-08-2021, 12:43 AM
السلام عليكم
ممكن داله
اريد رسم عدد متغير من خطوط عموديه على الشرط بحيث تكون على الشموع الخضرا من بدايه الشمعه 1
اذا كان فى شمعه حمراء بين الشموع الخضراء يتخطها يرسم على الخضراء فقط
عدد العمده انا احددها فى متغير خارجى
اكون شاكر

shivaa
15-08-2021, 04:13 PM
السلام عليكم
ممكن داله
اريد رسم عدد متغير من خطوط عموديه على الشرط بحيث تكون على الشموع الخضرا من بدايه الشمعه 1
اذا كان فى شمعه حمراء بين الشموع الخضراء يتخطها يرسم على الخضراء فقط
عدد العمده انا احددها فى متغير خارجى
اكون شاكر

ممكن طلب اضافى اكون شاكر
عاوز مجموعاتين شموع تكون خضراء مكون من ثلاث شموع ارجع رقم احدث شمعه
كما فى الصوره

{Open[1] < Close[1]&&Open[2] < Close[2]&&Open[3] < Close[3]}
عاوز رقم الشمعه [1] فى كل مجموعه من المجموعتين

kira-h
15-08-2021, 06:10 PM
السلام عليكم
ممكن داله
اريد رسم عدد متغير من خطوط عموديه على الشرط بحيث تكون على الشموع الخضرا من بدايه الشمعه 1
اذا كان فى شمعه حمراء بين الشموع الخضراء يتخطها يرسم على الخضراء فقط
عدد العمده انا احددها فى متغير خارجى
اكون شاكر
وعليكم السلام
هذا مؤشر وليس دالة فقط
ارفق الكود للتصحيح


ممكن طلب اضافى اكون شاكر
عاوز مجموعاتين شموع تكون خضراء مكون من ثلاث شموع ارجع رقم احدث شمعه
كما فى الصوره

{Open[1] < Close[1]&&Open[2] < Close[2]&&Open[3] < Close[3]}
عاوز رقم الشمعه [1] فى كل مجموعه من المجموعتين
كالتالي:


int LastUP1()//رقم الشمعة 1 بآخر مجموعة
{
for(int i=1; i<500; i++)
{
if(Close[i]<Open[i]&&Close[i+1]>Open[i+1]&&Close[i+2]>Open[i+2]&&Close[i+3]>Open[i+3])
return(i+1);
}
return(0)
}

int LastUP2()//رقم الشمعة 1 بالمجموعة قبل الاخيرة
{
for(int i=LastUP1(); i<500+LastUP1(); i++)
{
if(Close[i]<Open[i]&&Close[i+1]>Open[i+1]&&Close[i+2]>Open[i+2]&&Close[i+3]>Open[i+3])
return(i+1);
}
return(0)
}

shivaa
19-08-2021, 02:20 AM
السلام عليكم
ممكن دالة
عندي اثنين موفينج 50
1- سمبيل هاى
2- سمبيل لو
عاوز تظليل لمسافه اللي موجوده بينهم
معنى اصح هو عمل قناه بين الاثنين موفينج

kira-h
19-08-2021, 07:35 PM
السلام عليكم
ممكن دالة
عندي اثنين موفينج 50
1- سمبيل هاى
2- سمبيل لو
عاوز تظليل لمسافه اللي موجوده بينهم
معنى اصح هو عمل قناه بين الاثنين موفينج
وعليكم السلام
هذا يحتاج إلى مؤشر وليس دالة فقط
بالمرفق

rambo
22-08-2021, 10:59 AM
صباح النور أخي حسن
لدي إستفسارين مختلفين ليس لها علاقة ببعض :
1- لدي صفقة شراء مفتوحة ، ولدي أيضا 4 أوامر معلقة من نوع ليميت وكل أمر معلق له هدف مختلف عند سعر محدد (الأهداف أضعها كمتغيرات خارجية).
الآن المطلوب هو ما يلي:
إذا تفعل الأمر المعلق الأول قم بتعديل الأهداف لكل صفقات الشراء المفتوحة عند السعر a
إذا تفعل الأمر المعلق الثاني قم بتعديل الأهداف لكل صفقات الشراء المفتوحة عند السعر b
إذا تفعل الأمر المعلق الثالث قم بتعديل الأهداف لكل صفقات الشراء المفتوحة عند السعر c
إذا تفعل الأمر المعلق الرابع قم بتعديل الأهداف لكل صفقات الشراء المفتوحة عند السعر d
ونفس المثال بالنسبة لصفقات البيع

إستفساري الآخر بخصوص:
2- ما هو الكود الخاص بـ : إذا تم ضرب التيك بروفيت لأي صفقة مفتوحة قم بتنفيذ الشروط البرمجية
وأيضا إذا تفعلت دالة البريك إيفين (تم تقديم الستوب لوس) لأي صفقة مفتوحة قم بتنفيذ الشروط البرمجية
أشكرك جزيل الشكر مقدما
تحياتي وتقديري لك

kira-h
22-08-2021, 05:38 PM
صباح النور أخي حسن
لدي إستفسارين مختلفين ليس لها علاقة ببعض :
1- لدي صفقة شراء مفتوحة ، ولدي أيضا 4 أوامر معلقة من نوع ليميت وكل أمر معلق له هدف مختلف عند سعر محدد (الأهداف أضعها كمتغيرات خارجية).
الآن المطلوب هو ما يلي:
إذا تفعل الأمر المعلق الأول قم بتعديل الأهداف لكل صفقات الشراء المفتوحة عند السعر a
إذا تفعل الأمر المعلق الثاني قم بتعديل الأهداف لكل صفقات الشراء المفتوحة عند السعر b
إذا تفعل الأمر المعلق الثالث قم بتعديل الأهداف لكل صفقات الشراء المفتوحة عند السعر c
إذا تفعل الأمر المعلق الرابع قم بتعديل الأهداف لكل صفقات الشراء المفتوحة عند السعر d
ونفس المثال بالنسبة لصفقات البيع

إستفساري الآخر بخصوص:
2- ما هو الكود الخاص بـ : إذا تم ضرب التيك بروفيت لأي صفقة مفتوحة قم بتنفيذ الشروط البرمجية
وأيضا إذا تفعلت دالة البريك إيفين (تم تقديم الستوب لوس) لأي صفقة مفتوحة قم بتنفيذ الشروط البرمجية
أشكرك جزيل الشكر مقدما
تحياتي وتقديري لك

مرحبا اخي الكريم
1- قم بعمل الشروط بناء على عدد الصفقات المفعلة شراء او بيع لتنفيذ OrderModify
مثال:


if(Orderscnt(OP_BUY)==1&&Takeprofit1>0)OrdersModify(Takeprofit1,OP_BUY));
if(Orderscnt(OP_BUY)==2&&Takeprofit2>0)OrdersModify(Takeprofit2,OP_BUY));
....//
void OrdersModify(double TP,int type)
{
bool s,m;
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
double op=OrderOpenPrice(),
tp=OrderTakeProfit();
int tk=OrderTicket(),
ty=OrderType(),
mn=OrderMagicNumber() ;


if(sy==Symbol()&&mn==MagicNo)
{
if(ty==OP_BUY||ty==OP_BUYSTOP||ty==OP_BUYLIMIT)
{
if(type==OP_BUY&&NormalizeDouble(tp,Digits)!=NormalizeDouble(TP,Dig its))
m=OrderModify(tk,op,sl,TP,0,Blue);
}
if(ty==OP_SELL||ty==OP_SELLSTOP||ty==OP_SELLLIMIT)
{
if(type==OP_SELL&&NormalizeDouble(tp,Digits)!=NormalizeDouble(TP,Dig its))
m=OrderModify(tk,op,sl,TP,Red);
}
}
}
}


2-
- ستقارن توقيت اغلاق الصفقة الرابحة مع توقيت اخر دقيقة، للتحقق من ان الصفقة ضربت الهدف ليتم تنفيذ الشرط
مثال :


datetime CloseTime(int type)
{
int c;
string comment;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
comment=OrderComment();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderProfit()>0&&OrderType()==type)
{
return(OrderCloseTime());
}
}
return(c);
}


if(CloseTime(OP_BUY)>=iTime(Symbol(),1,1))//....


- ستضع الشروط البرمجية ضمن دالة البريك ايفن بعد سطر الموديفاي مباشرة OrderModify

rambo
23-08-2021, 07:51 AM
مرحبا اخي الكريم
1- قم بعمل الشروط بناء على عدد الصفقات المفعلة شراء او بيع لتنفيذ OrderModify
مثال:


if(Orderscnt(OP_BUY)==1&&Takeprofit1>0)OrdersModify(Takeprofit1,OP_BUY));
if(Orderscnt(OP_BUY)==2&&Takeprofit2>0)OrdersModify(Takeprofit2,OP_BUY));
....//
void OrdersModify(double TP,int type)
{
bool s,m;
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
double op=OrderOpenPrice(),
tp=OrderTakeProfit();
int tk=OrderTicket(),
ty=OrderType(),
mn=OrderMagicNumber() ;


if(sy==Symbol()&&mn==MagicNo)
{
if(ty==OP_BUY||ty==OP_BUYSTOP||ty==OP_BUYLIMIT)
{
if(type==OP_BUY&&NormalizeDouble(tp,Digits)!=NormalizeDouble(TP,Dig its))
m=OrderModify(tk,op,sl,TP,0,Blue);
}
if(ty==OP_SELL||ty==OP_SELLSTOP||ty==OP_SELLLIMIT)
{
if(type==OP_SELL&&NormalizeDouble(tp,Digits)!=NormalizeDouble(TP,Dig its))
m=OrderModify(tk,op,sl,TP,Red);
}
}
}
}


الشكر الجزيل لك أخي حسن
الكود يعمل بشكل سليم 100% والحمد لله
ولكن عندما أردت أن يكون الستوب موحد لكل الصفقات (الستوب عند سعر معين أضعه كمتغير خارجي)
قمت بتعديل الكود ولكن ظهر لي الخطأ رقم 130
حاولت وجربت ولكن لم أصل إلى الحل السليم، فضلا منك التصحيح
الكود كما يلي:




void OrdersModify(double TP,int type)
{
bool s,m;
double SL = 0;
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
double op=OrderOpenPrice(),
sl=OrderStopLoss(),
tp=OrderTakeProfit();
int tk=OrderTicket(),
ty=OrderType(),
mn=OrderMagicNumber() ;




if(sy==Symbol()&& mn == MagicNumber)
{
if(ty==OP_BUY ||ty==OP_BUYSTOP||ty==OP_BUYLIMIT)
{
SL=NormalizeDouble(StoplossAll,Digits);
if(type==OP_BUY && ((NormalizeDouble(sl,Digits)!=NormalizeDouble(sl,D igits)) || (NormalizeDouble(tp,Digits)!=NormalizeDouble(TP,Di gits))))
m=OrderModify(tk,op,SL,TP,0,Blue);
}
SL=NormalizeDouble(StoplossAll,Digits);
if(ty==OP_SELL||ty==OP_SELLSTOP||ty==OP_SELLLIMIT)
{
if(type==OP_SELL && ((NormalizeDouble(sl,Digits)!=NormalizeDouble(sl,D igits)) || (NormalizeDouble(tp,Digits)!=NormalizeDouble(TP,Di gits))))
m=OrderModify(tk,op,SL,TP,Red);
}
}
}
}





2-
- ستقارن توقيت اغلاق الصفقة الرابحة مع توقيت اخر دقيقة، للتحقق من ان الصفقة ضربت الهدف ليتم تنفيذ الشرط
مثال :


datetime CloseTime(int type)
{
int c;
string comment;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
comment=OrderComment();
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderProfit()>0&&OrderType()==type)
{
return(OrderCloseTime());
}
}
return(c);
}


if(CloseTime(OP_BUY)>=iTime(Symbol(),1,1))//....


من عند السطر return(c) ظهرت لي علامة التحذير التالية:
possible use of the uninitialized variable c

- ستضع الشروط البرمجية ضمن دالة البريك ايفن بعد سطر الموديفاي مباشرة OrderModify
تمام فهمت قصدك أخي حسن وإن شاء الله سأضع الشروط في هذا المكان



صباح النور أخي حسن
وضعت الرد داخل الإقتباس
بارك الله فيك وجزاك خير الجزاء

kira-h
23-08-2021, 11:13 AM
صباح النور أخي حسن
وضعت الرد داخل الإقتباس
بارك الله فيك وجزاك خير الجزاء
صباح الخير اخي الكريم
الصحيح كالتالي :


void OrdersModify(double TP,int type)
{
bool s,m;
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
double op=OrderOpenPrice(),
sl=OrderStopLoss(),
tp=OrderTakeProfit();
int tk=OrderTicket(),
ty=OrderType(),
mn=OrderMagicNumber();
if(sy==Symbol()&& mn == MagicNumber)
{
if(ty==OP_BUY ||ty==OP_BUYSTOP||ty==OP_BUYLIMIT)
{
if(type==OP_BUY && (NormalizeDouble(sl,Digits)!=NormalizeDouble(Stopl ossAll,Digits)||NormalizeDouble(tp,Digits)!=Normal izeDouble(TP,Digits)))
m=OrderModify(tk,op,StoplossAll,TP,0,Blue);
}
SL=NormalizeDouble(StoplossAll,Digits);
if(ty==OP_SELL||ty==OP_SELLSTOP||ty==OP_SELLLIMIT)
{
if(type==OP_SELL && (NormalizeDouble(sl,Digits)!=NormalizeDouble(Stopl ossAll,Digits)||NormalizeDouble(tp,Digits)!=Normal izeDouble(TP,Digits)))
m=OrderModify(tk,op,StoplossAll,TP,Red);
}
}
}
}




datetime CloseTime(int type)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderProfit()>0&&OrderType()==type)
{
return(OrderCloseTime());
}
}
return(0);
}

Ghassebd
23-08-2021, 07:13 PM
convert mt4 indicator to mt5


السلام عليكم ....

how to convert mt4 indicator to mt5

هل من برنامج للتحويل

اشكرك مقدما

هل من جواب

kira-h
24-08-2021, 02:03 AM
convert mt4 indicator to mt5


السلام عليكم ....

how to convert mt4 indicator to mt5

هل من برنامج للتحويل

اشكرك مقدما

هل من جواب
وعليكم السلام
اعتقد ان معظم (ربما كل) برامج التحويل بها اخطاء لا حصر لها ويصعب تصحيحها
عموما راجع هذا الموضوع https://www.mql5.com/en/forum/179991

rambo
24-08-2021, 06:58 AM
صباح الخير اخي الكريم
الصحيح كالتالي :


void OrdersModify(double TP,int type)
{
bool s,m;
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
double op=OrderOpenPrice(),
sl=OrderStopLoss(),
tp=OrderTakeProfit();
int tk=OrderTicket(),
ty=OrderType(),
mn=OrderMagicNumber();
if(sy==Symbol()&& mn == MagicNumber)
{
if(ty==OP_BUY ||ty==OP_BUYSTOP||ty==OP_BUYLIMIT)
{
if(type==OP_BUY && (NormalizeDouble(sl,Digits)!=NormalizeDouble(Stopl ossAll,Digits)||NormalizeDouble(tp,Digits)!=Normal izeDouble(TP,Digits)))
m=OrderModify(tk,op,StoplossAll,TP,0,Blue);
}
SL=NormalizeDouble(StoplossAll,Digits);
if(ty==OP_SELL||ty==OP_SELLSTOP||ty==OP_SELLLIMIT)
{
if(type==OP_SELL && (NormalizeDouble(sl,Digits)!=NormalizeDouble(Stopl ossAll,Digits)||NormalizeDouble(tp,Digits)!=Normal izeDouble(TP,Digits)))
m=OrderModify(tk,op,StoplossAll,TP,Red);
}
}
}
}




datetime CloseTime(int type)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo&&OrderProfit()>0&&OrderType()==type)
{
return(OrderCloseTime());
}
}
return(0);
}


صباح النور أخي حسن
أشكرك جزيل الشكر
فيما يخص الكود بمعرفة هل الصفقة المفتوحة حاليا أغلقت على ربح ليتم تنفيذ الشروط البرمجية فقد كتبت ما يلي:




datetime CloseTime(int type)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderProfit()>0&&OrderType()==type)
{
return(OrderCloseTime());
}
}
return(0);
}


void OnTick()
{


if(CloseTime(OP_BUY)>=iTime(Symbol(),1,1))

{
CloseOrders(OP_BUYLIMIT);
CloseOrders(OP_SELLLIMIT);
return;
}



والملاحظ هو تنفيذ الشروط البرمجية مباشرة من دون الإنتظار إلى أن تغلق الصفقة المفتوحة حاليا
وحسب فهمي فالمفترض أن ننتظر إغلاق الصفقة المفتوحة حاليا، ومن ثم يتم البحث عن هل أغلقت على ربح أو لا
إذا أغلقت على ربح يتم تنفيذ الشروط البرمجية
أين خطئي أخي حسن
أشكرك مرة أخرى
بارك الله فيك

kira-h
24-08-2021, 07:56 PM
صباح النور أخي حسن
أشكرك جزيل الشكر
فيما يخص الكود بمعرفة هل الصفقة المفتوحة حاليا أغلقت على ربح ليتم تنفيذ الشروط البرمجية فقد كتبت ما يلي:




datetime CloseTime(int type)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderProfit()>0&&OrderType()==type)
{
return(OrderCloseTime());
}
}
return(0);
}


void OnTick()
{


if(CloseTime(OP_BUY)>=iTime(Symbol(),1,1))

{
CloseOrders(OP_BUYLIMIT);
CloseOrders(OP_SELLLIMIT);
return;
}



والملاحظ هو تنفيذ الشروط البرمجية مباشرة من دون الإنتظار إلى أن تغلق الصفقة المفتوحة حاليا
وحسب فهمي فالمفترض أن ننتظر إغلاق الصفقة المفتوحة حاليا، ومن ثم يتم البحث عن هل أغلقت على ربح أو لا
إذا أغلقت على ربح يتم تنفيذ الشروط البرمجية
أين خطئي أخي حسن
أشكرك مرة أخرى
بارك الله فيك

جرب المقارنة مع توقيت شمعة الدقيقة الحالية 0 الحل الوحيد الممكن فلا يوجد وظيفة مباشرة لمعرفة اغلاق الصفقة.

if(CloseTime(OP_BUY)>=iTime(Symbol(),1,0))

rambo
25-08-2021, 06:03 AM
جرب المقارنة مع توقيت شمعة الدقيقة الحالية 0 الحل الوحيد الممكن فلا يوجد وظيفة مباشرة لمعرفة اغلاق الصفقة.

if(CloseTime(OP_BUY)>=iTime(Symbol(),1,0))

الشكر الجزيل لك أخي حسن
جربته وما زلت نفس المشكلة قائمة
لذلك سأحاول التجربة أكثر وأضيف شروط أخرى أو أن أستخدم متغير من نوع bool وأضيفه بطريقة ما لكي يؤدي الغرض
وفي حال طرأ أي إستفسار آخر سأعود وأسألك إن شاء الله
مع خالص الشكر والتقدير والعرفان

kira-h
25-08-2021, 04:19 PM
الشكر الجزيل لك أخي حسن
جربته وما زلت نفس المشكلة قائمة
لذلك سأحاول التجربة أكثر وأضيف شروط أخرى أو أن أستخدم متغير من نوع bool وأضيفه بطريقة ما لكي يؤدي الغرض
وفي حال طرأ أي إستفسار آخر سأعود وأسألك إن شاء الله
مع خالص الشكر والتقدير والعرفان
يجب شرح طريقة العمل حتى نضع شروط اغلاق لا تتعارض مع شروط الفتح
فمثلا لو كان فتح الصفقة لا يتم الا عند اغلاق سابقتها مع وجود صفقات مفتوحة فيمكن مقارنة توقيت الصفقة المغلقة مع توقيت الصفقة المفتوحة

rambo
25-08-2021, 10:32 PM
يجب شرح طريقة العمل حتى نضع شروط اغلاق لا تتعارض مع شروط الفتح
فمثلا لو كان فتح الصفقة لا يتم الا عند اغلاق سابقتها مع وجود صفقات مفتوحة فيمكن مقارنة توقيت الصفقة المغلقة مع توقيت الصفقة المفتوحة

تمام أخي حسن
فمن نصيحتك هذه وتوجيهك عرفت أين أين خطئي وتم حل المشكلة
أضفت شرط لا بد من وجود صفقة واحدة مفعلة على الأقل والحمد لله على الباك تست يعمل وفق ما قصدته ليصبح الكود في شكله النهائي كما يلي:




datetime CloseTime(int type)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderProfit()>0&&OrderType()==type)
{
return(OrderCloseTime());
}
}
return(0);
}


void OnTick()
{


if(Orderscnt()> 0 && CloseTime(OP_BUY) > iTime(Symbol(),1,1))

{
CloseOrders(OP_BUYLIMIT);
CloseOrders(OP_SELLLIMIT);
return;
}



أشكرك جزيل الشكر مرة أخرى
مع خالص الشكر والتقدير والعرفان

kira-h
26-08-2021, 02:14 AM
تمام أخي حسن
فمن نصيحتك هذه وتوجيهك عرفت أين أين خطئي وتم حل المشكلة
أضفت شرط لا بد من وجود صفقة واحدة مفعلة على الأقل والحمد لله على الباك تست يعمل وفق ما قصدته ليصبح الكود في شكله النهائي كما يلي:




datetime CloseTime(int type)
{
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderProfit()>0&&OrderType()==type)
{
return(OrderCloseTime());
}
}
return(0);
}


void OnTick()
{


if(Orderscnt()> 0 && CloseTime(OP_BUY) > iTime(Symbol(),1,1))

{
CloseOrders(OP_BUYLIMIT);
CloseOrders(OP_SELLLIMIT);
return;
}



أشكرك جزيل الشكر مرة أخرى
مع خالص الشكر والتقدير والعرفان
العفو اخي الكريم
وبالتوفيق إن شاء الله

Mohamed Nasr
01-09-2021, 01:43 AM
سلام عليكم اخى حسن

لو أمكن دالة اقصي لوت واكبر لوت وصل اليه الاكسبيرت .. MaxLot أكون لك من الشاكريين

وجزاكم الله تعالى حيرا مقدما

kira-h
01-09-2021, 06:22 PM
سلام عليكم اخى حسن

لو أمكن دالة اقصي لوت واكبر لوت وصل اليه الاكسبيرت .. MaxLot أكون لك من الشاكريين

وجزاكم الله تعالى حيرا مقدما
وعليكم السلام
المرجو التوضيح أكثر،
وهل للصفقات المغلقة ام المفتوحة؟

Mohamed Nasr
02-09-2021, 03:24 PM
وعليكم السلام
المرجو التوضيح أكثر،
وهل للصفقات المغلقة ام المفتوحة؟

اقصي لوت او أكبر لوت وصل اليه الاكسبيرت سواء مغلق او مفتوح اخى حسن

kira-h
02-09-2021, 07:35 PM
اقصي لوت او أكبر لوت وصل اليه الاكسبيرت سواء مغلق او مفتوح اخى حسن
الدوال كالتالي :


double MaxLotsH(int type=-1)//اقصى لوت بالصفقات المغلقة
{
double c=0;
for(int cnt=0; cnt<OrdersHistoryTotal(); cnt++)
{
bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
{
if(OrderType()==type||type==-1)
{
if(OrderLots()>c)
c=OrderLots();
}
}
}
return(c);
}


double MaxLotsT(int type=-1)//اقصى لوت بالصفقات المفتوحة
{
double c=0;
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
{
if(OrderType()==type||type==-1)
{
if(OrderLots()>c)
c=OrderLots();
}
}
}
return(c);
}


double MaxLots=MathMax(MaxLotsH(),MaxLotsT());//اقصى لوت بالصفقات المغلقة والمفتوحة

Mohamed Nasr
02-09-2021, 07:50 PM
الدوال كالتالي :


double MaxLotsH(int type=-1)//اقصى لوت بالصفقات المغلقة
{
double c=0;
for(int cnt=0; cnt<OrdersHistoryTotal(); cnt++)
{
bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
{
if(OrderType()==type||type==-1)
{
if(OrderLots()>c)
c=OrderLots();
}
}
}
return(c);
}


double MaxLotsT(int type=-1)//اقصى لوت بالصفقات المفتوحة
{
double c=0;
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
{
if(OrderType()==type||type==-1)
{
if(OrderLots()>c)
c=OrderLots();
}
}
}
return(c);
}


double MaxLots=MathMax(MaxLotsH(),MaxLotsT());//اقصى لوت بالصفقات المغلقة والمفتوحة


الله يعزك يارب مهندس حسن

جزاك الله تعالى كل الخير يارب فى الدنيا والاخرة ...

kira-h
02-09-2021, 11:38 PM
الله يعزك يارب مهندس حسن

جزاك الله تعالى كل الخير يارب فى الدنيا والاخرة ...
وإياك أخي الكريم ، آمين

ammar
10-09-2021, 01:08 PM
السلام عليكم
استاذنا العزيز
كيف يمكن قفل الاكسبيرت بحيث لايمكن استعماله الا لصاحب الاكسبيرت

kira-h
10-09-2021, 09:11 PM
السلام عليكم
استاذنا العزيز
كيف يمكن قفل الاكسبيرت بحيث لايمكن استعماله الا لصاحب الاكسبيرت

وعليكم السلام
تستخدم رقم الحساب كشرط لعمل الاكسبيرت بحيث تضعه ببداية الدالة الرئيسية
مثال :


void OnTick()
{
if(AccountNumber()!=123456)return;//اذا رقم الحساب مخالف للرقم المكتوب يعود الى البداية
//تتمة الكود
}

ammar
11-09-2021, 01:11 PM
وعليكم السلام
تستخدم رقم الحساب كشرط لعمل الاكسبيرت بحيث تضعه ببداية الدالة الرئيسية
مثال :



void OnTick()
{
if(AccountNumber()!=123456)//اذا رقم الحساب مخالف للرقم المكتوب يعود الى البداية
//تتمة الكود
}


شكرا استاذ على الاجابة

kira-h
11-09-2021, 03:27 PM
شكرا استاذ على الاجابة
العفو
قم باضافة return بعد الشرط

Mohamed Nasr
12-09-2021, 03:56 PM
سلام عليكم استاذ حسن

اقوم بعمل اكسبيرت بسيط يقوم بفتح صفقات كل Step معين مع بعض الشروط وأريد ان اقوم بزيادة مساحه الاستيب مع كل صفقه جديده

فهل ممكن عمل داله تأتى بأقصي استيب تم الوصول اليه وبعد ذلك أضيف انا رقم على هذه الداله من خلال متغير خارجى ..

هل طلبى واضح استاذ حسن ؟



وعليكم السلام
يمكنك حفظ الستيب الاخير مباشرة بعد فتح الصفقة ثم استدعائه بشروط الفتح
مثال :


input double Step=200,//الستيب الاساسي
Step_plus=10;//الستيب الاضافي
static double newstep=Step;//اخر ستيب محفوظ


void OnTick()
{
if(!IsTesting()&&GlobalVariableGet(Symbol()+"step")>0)
newstep=GlobalVariableGet(Symbol()+"step");

if(Ask>=OrderOpenPrice()+newstep*Point)
{
//Open BUY
newstep=newstep+Step_plus;
if(!IsTesting())
GlobalVariableSet(Symbol()+"step",newstep);//في حال استخدام حساب لايف او ديمو يجب حفظ القيم بدالة جلوبال حتى لا تضيع عند اغلاق الشارت او المنصة
}
}


راجع المشاركة التالية حول دوال الجلوبال :
https://www.fxprg.com/vb/showthread.php?t=31457&page=9&p=846193&viewfull=1#post846193

سلام عليكم استاذ حسن ..

لو أمكن حضرتك تعيد شرح هذا الكود لانه لم يعمل معى .. او يمكن لم يعمل لانى لم اضع الشروط بطريقة صحيحه فى مكانها ..

لو أمكن حضرتك توضع الكود جزء جزء لان الامر تخبط على .. بعد أذن حضرتك طبعا استاذنا الكريم

وجزاك الله تعالى كل الخير والله على ماتقدمه من دعم لاخوانك ... ربنا يعزك يارب ويرفع قدرك فى كل زمان ومكان

kira-h
13-09-2021, 12:01 AM
سلام عليكم استاذ حسن ..

لو أمكن حضرتك تعيد شرح هذا الكود لانه لم يعمل معى .. او يمكن لم يعمل لانى لم اضع الشروط بطريقة صحيحه فى مكانها ..

لو أمكن حضرتك توضع الكود جزء جزء لان الامر تخبط على .. بعد أذن حضرتك طبعا استاذنا الكريم

وجزاك الله تعالى كل الخير والله على ماتقدمه من دعم لاخوانك ... ربنا يعزك يارب ويرفع قدرك فى كل زمان ومكان

وعليكم السلام
جزاك الله خيرا
اخي الكريم الشرح واضح بالرد السابق ووضعت لينك به شرح دوال الجلوبال
وهذا شرح اكثر للكود
إذا لم يعمل معك الكود فربما طريقة استخدامك له خاطئة او لا يتناسب مع ما تريد مثل ان يكون صفقات بيع وشراء مفتوحة ففي هذه الحالة يجب استخدام دالة تستخرج سعر الصفقة بدلالة نوعها وليس باستدعاء الوظيفة OrderOpenPrice ،
عموما يمكنك ان ترفق الكود للمراجعة

void OnTick()
{
if(!IsTesting()&&GlobalVariableGet(Symbol()+"step")>0)//إذا كان العمل ديمو او لايف ويوجد ستيب محفوظ
newstep=GlobalVariableGet(Symbol()+"step");//يتم استدعاء الستيب الجديد الذي قمنا بحفظه سابقا

if(Ask>=OrderOpenPrice()+newstep*Point)//شرط الستيب الجديد
{
//Open BUY
newstep=newstep+Step_plus;//يتم حفظ ستيب جديد
if(!IsTesting())//وإذا كان العمل ديمو او لايف
GlobalVariableSet(Symbol()+"step",newstep);//في حال استخدام حساب لايف او ديمو يجب حفظ القيم بدالة جلوبال حتى لا يضيع عند اغلاق الشارت او المنصة او لأي خلل تفني
}
}

ammar
29-09-2021, 01:43 PM
السلام عليكم
استاذنا العزيز كيف يمكن عمل مدة تجريبة للاكسبيرت يعني يعمل الاكسبيرت ضمن مدة معينه بعد تلك المدة الاكسبيرت لايعمل
مع الشكر على المجهود الرائع

kira-h
29-09-2021, 04:13 PM
السلام عليكم
استاذنا العزيز كيف يمكن عمل مدة تجريبة للاكسبيرت يعني يعمل الاكسبيرت ضمن مدة معينه بعد تلك المدة الاكسبيرت لايعمل
مع الشكر على المجهود الرائع
وعليكم السلام
مثال بحيث تضع الشروط ببداية الدالة الرئيسية :


void OnTick()
{
if(!IsTesting())return;//اذا كان الحساب حقيقي لا يعمل الاكسبيرت

if(TimeCurrent()>=StrToTime("2021.12.01 00:00"))//تاريخ الصلاحية لعمل الاكسبيرت
{
Comment("EA Expired!");
return;
}
//ثم بعدها تضع بقية كود الاكسبيرت
}

ammar
01-10-2021, 12:53 PM
وعليكم السلام
مثال بحيث تضع الشروط ببداية الدالة الرئيسية :


void OnTick()
{
if(!IsTesting())return;//اذا كان الحساب حقيقي لا يعمل الاكسبيرت

if(TimeCurrent()>=StrToTime("2021.12.01 00:00"))//تاريخ الصلاحية لعمل الاكسبيرت
{
Comment("EA Expired!");
return;
}
//ثم بعدها تضع بقية كود الاكسبيرت
}

الف شكرا على الاجابات الراقية والمفيدة مع التمنيات لكم بالتوفيق

sabil
01-10-2021, 02:41 PM
اخي حسن
خطوط الهيستوجرام الخاصة بالماكد للشمعة الاولى والثانية
كيف يتم استدعائها؟

kira-h
01-10-2021, 05:51 PM
الف شكرا على الاجابات الراقية والمفيدة مع التمنيات لكم بالتوفيق
العفو اخي الكريم

kira-h
01-10-2021, 05:53 PM
اخي حسن
خطوط الهيستوجرام الخاصة بالماكد للشمعة الاولى والثانية
كيف يتم استدعائها؟

السلام عليكم
كالتالي :


double md1=iMACD(Symbol(),0,12,26,9,0,MODE_MAIN,1);
double md2=iMACD(Symbol(),0,12,26,9,0,MODE_MAIN,2);

sabil
02-10-2021, 03:49 AM
دالة اغلاق الصفقة عند اغلاق الشمعة كالتالي:


void CloseAtNextBar()
{
if(Time[0]!=Time[1])
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
{
if(OrderType()<=OP_SELL)
{
if(OrderOpenTime()<Time[0])
{
bool close=OrderClose(OrderTicket(),OrderLots(),OrderOp enPrice(),5*Q,Red);
}
}
}
}
}
}

جربتها لكن لقيته بيقفل الصفقة ف نفس الشمعة
وجايب ف الجورنال خطأ ف اغلاق الصفقة
ما المشكلة؟

kira-h
02-10-2021, 04:11 PM
جربتها لكن لقيته بيقفل الصفقة ف نفس الشمعة
وجايب ف الجورنال خطأ ف اغلاق الصفقة
ما المشكلة؟
الدالة سليمة ولا يمكن ان تغلق الصفقة بنفس شمعة الفتح،
قد يكون السبب شيء آخر

sabil
02-10-2021, 09:23 PM
الدالة سليمة ولا يمكن ان تغلق الصفقة بنفس شمعة الفتح،
قد يكون السبب شيء آخر
تمام
هجرب الاستراتيجية الاول ولو نجحت ابقى اشوف المشكلة دي

ahmed mohsen27
04-10-2021, 08:15 AM
لو الاكسبرت يعتمد على مؤشر خارجى للدخول مفتوح الكود هل هناك طريقة لجعل المؤشر bulit in داخل الاكسبرت بحيث لا يهم وجود المؤشر على المنصة و الاكسبرت يعمل بدونه

kira-h
04-10-2021, 08:36 AM
لو الاكسبرت يعتمد على مؤشر خارجى للدخول مفتوح الكود هل هناك طريقة لجعل المؤشر bulit in داخل الاكسبرت بحيث لا يهم وجود المؤشر على المنصة و الاكسبرت يعمل بدونه
السلام عليكم
نعم ممكن بوضع شروط المؤشر ضمن شروط فتح الصفقات مباشرة
إلا اذا الشروط تحليلية معقدة او تسبب تهنيج للمنصة او ضعف التنفيذ عند استخدامها بالاكسبيرت، ففي هذه الحالة غير ممكن ولابد من استخدام المؤشر

Mohamed Nasr
04-10-2021, 03:55 PM
وعليكم السلام
جزاك الله خيرا
اخي الكريم الشرح واضح بالرد السابق ووضعت لينك به شرح دوال الجلوبال
وهذا شرح اكثر للكود
إذا لم يعمل معك الكود فربما طريقة استخدامك له خاطئة او لا يتناسب مع ما تريد مثل ان يكون صفقات بيع وشراء مفتوحة ففي هذه الحالة يجب استخدام دالة تستخرج سعر الصفقة بدلالة نوعها وليس باستدعاء الوظيفة OrderOpenPrice ،
عموما يمكنك ان ترفق الكود للمراجعة

void OnTick()
{
if(!IsTesting()&&GlobalVariableGet(Symbol()+"step")>0)//إذا كان العمل ديمو او لايف ويوجد ستيب محفوظ
newstep=GlobalVariableGet(Symbol()+"step");//يتم استدعاء الستيب الجديد الذي قمنا بحفظه سابقا

if(Ask>=OrderOpenPrice()+newstep*Point)//شرط الستيب الجديد
{
//Open BUY
newstep=newstep+Step_plus;//يتم حفظ ستيب جديد
if(!IsTesting())//وإذا كان العمل ديمو او لايف
GlobalVariableSet(Symbol()+"step",newstep);//في حال استخدام حساب لايف او ديمو يجب حفظ القيم بدالة جلوبال حتى لا يضيع عند اغلاق الشارت او المنصة او لأي خلل تفني
}
}


سلام عليكم مهندس حسن ..

اسف والله كنت غير متابع المنتدى الايام الماضيه لظروف خاصة بى ... ولم ارى رد حضرتك على طلبى هنا الا الان

هنا طلبى السابق

https://www.fxprg.com/vb/showthread.php?t=31457&page=345&p=929372&viewfull=1#post929372

فعلا حاولت اطبق الشروط دى زى ماحضرتك كتبتها بالظبط لكن لم تفلح ولم تعمل ...

انا ارسلت لحضرتك رسالة على الخاص ... أرجوا من حضرتك تقرأها

kira-h
04-10-2021, 06:28 PM
سلام عليكم مهندس حسن ..

اسف والله كنت غير متابع المنتدى الايام الماضيه لظروف خاصة بى ... ولم ارى رد حضرتك على طلبى هنا الا الان

هنا طلبى السابق

https://www.fxprg.com/vb/showthread.php?t=31457&page=345&p=929372&viewfull=1#post929372

فعلا حاولت اطبق الشروط دى زى ماحضرتك كتبتها بالظبط لكن لم تفلح ولم تعمل ...

انا ارسلت لحضرتك رسالة على الخاص ... أرجوا من حضرتك تقرأها
وعليكم السلام
تم الرد برسالة خاصة اخي الكريم

metmet
05-10-2021, 10:05 PM
السلام عليكم
لدي مشكلة برمجية وأرجو المساعدة
الاكسيبرت يعمل بنظام المضاعفات ضرب اللوت في 1.5 أو 1,8 أو 2 أو غير ذلك
والكود كله يعمل بكفاءة
ولكن هناك مشكلة في نظام المضاعفات
المشكلة هي
أن نظام المضاعفات إذا كان 1.5 أو أكثر فهو يعمل تمام التمام
أما إذا كانت المضاعفات أقل من 1.5 فلا تعمل ويظل اللوت ثابت 0.01

عايز لما أغير نظام المضاعفات الى 1.2 أو 1.3 أو 1.4 ----أو 1.234 فيعمل ولا يظل اللوت ثابت

وأرجو شرح الخطأ
وجزاك الله الجنة

مرفق الكود



#property copyright "MUMM69"
#property link "Gi67sa@yahoo.com"

extern string Seting_Parameter = "=>Parameter Pro+v2.5<<";
extern string StopTrade_Info = "=>Model Stop Profit / Take Loss EA<<";
extern string Khusus_Closing = "=>Gunakan sesuai Kebutuhan<<";
extern bool Close_Panic = TRUE;
extern bool Close_Buy_Trend = TRUE;
extern bool Close_Sell_Trend = TRUE;
extern bool Close_Buy_Counter = TRUE;
extern bool Close_Sell_Counter = TRUE;
extern string Seting_Risk_Target = "=>Gunakan sesuai Kebutuhan<<";
extern bool Risk_In_Money = TRUE;
extern double Risk_in_money = 1000.0;
extern double Target_Persen = 1000.0;
extern string Seting_Mode_Trend = "=>Seting Trade trend<<";
extern int StartHour = 0;
extern int StopHour = 24;
extern bool Buy_Trend = TRUE;
extern bool Sell_Trend = TRUE;
extern string Seting_Mode_Conter = "=>Seting Trade Counter Trend<<";
extern int Start_Hour = 0;
extern int Stop_Hour = 24;
extern bool Buy_Counter = TRUE;
extern bool Sell_Counter = TRUE;
extern string Seting_MM = "=>Seting sesuai selera<<";
extern string Lot_info = "Lot Mode = 1 -> Compound; Mode = 2 -> Fix Lot)";
extern int Lot_mode = 2;
extern string Lot_info2 = "Rumus Compound = Balance/Manage_Lot";
extern double Manage_Lot = 10000.0;
extern double Fix_lot = 0.01;
extern int Magic = 69;
extern double Range = 21.0;
extern int Level_Max = 12;
extern double DiMarti = 1.5;
extern double SL = 253.0;
extern double TP = 30.0;
extern int Star_ModifTp_Bep = 3;
extern double Tp_from_Bep = 11.0;
extern bool Tp_In_money = TRUE;
extern double Tp_in_money = 7.0;
extern bool Dtrailing = TRUE;
extern int StartTrail = 10;
extern int Trailing = 7;
extern string Indi_Seting = "==>Stockhastic trend & MA Seting<<=";
extern int kperiod = 32;
extern int dperiod = 12;
extern int slowing = 12;
extern int lo_level = 25;
extern int up_level = 75;
extern int maPereode = 200;
extern string Indi_Stoch_2 = "==>Stockhastic counter trend<<=";
extern int k_period = 32;
extern int d_period = 12;
extern int s_lowing = 12;
extern int lolevel = 30;
extern int uplevel = 70;
double Gd_376;
double Gd_384;
double G_lots_392;
double Gd_400;
int G_ticket_408 = 0;
int G_magic_412;
int G_magic_416;
int G_magic_420;
int G_magic_424;
string Gs_428 = "+ZAZ+SON-1+";
string Gs_436 = "+ZAZ+SON-2+";
string Gs_444 = "+ZAZ+SON-3+";
string Gs_452 = "+ZAZ+SON-4+";
string Gs_dummy_460;
string Gs_dummy_468;
string Gs_dummy_476;
string Gs_dummy_484;
string Gsa_492[10];

// E37F0136AA3FFAF149B351F6A4C948E9
int init() {
Gd_400 = AccountBalance();
Gd_376 = MarketInfo(Symbol(), MODE_TICKSIZE);
int Li_0 = 1;
if (Digits == 3 || Digits == 5) {
Gd_376 = 10.0 * Gd_376;
Li_0 = 10 * Li_0;
}
Gd_384 = MarketInfo(Symbol(), MODE_STOPLEVEL) / Li_0;
if (SL > 0.0 && SL < Gd_384) {
Print("stoploss is too tight.");
SL = Gd_384;
}
if (TP > 0.0 && TP < Gd_384) {
Print("takeprofit is too tight.");
TP = Gd_384;
}
if (Trailing < Gd_384) {
Print("trailing is too tight.");
Trailing = Gd_384;
}
G_magic_412 = Magic + 9;
G_magic_416 = Magic + 99;
G_magic_420 = Magic + 999;
G_magic_424 = Magic + 9999;
if (Lot_mode == 2) G_lots_392 = f0_7(Fix_lot);
return (0);
}

// 52D46093050F38C27267BCE42543EF60
int deinit() {
ObjectDelete("ObjLabel1");
ObjectDelete("ObjLabel2");
ObjectDelete("ObjLabel3");
ObjectDelete("ObjLabel4");
ObjectDelete("ObjLabel5");
ObjectDelete("ObjLabel6");
ObjectDelete("ObjLabel7");
ObjectDelete("ObjLabel8");
return (0);
}

// EA2B2676C28C0DB26D39331A336C6B92
int start() {
if (Lot_mode == 1) G_lots_392 = f0_7(AccountBalance() / Manage_Lot);
if (Lot_mode < 1 || Lot_mode > 2) {
Comment("invalid Lot_Mode");
return (0);
}
f0_2();
f0_5();
double Ld_0 = Gd_400 * Target_Persen / 100.0;
if (AccountEquity() >= Gd_400 + Ld_0 || (Risk_In_Money && AccountEquity() <= Gd_400 - Risk_in_money) || Close_Panic) {
f0_3(G_magic_412);
f0_3(G_magic_416);
f0_3(G_magic_420);
f0_3(G_magic_424);
return;
}
if (Close_Buy_Trend) f0_3(G_magic_412);
if (Close_Sell_Trend) f0_3(G_magic_416);
if (Close_Buy_Counter) f0_3(G_magic_420);
if (Close_Sell_Counter) f0_3(G_magic_424);
if (Tp_In_money && f0_6(G_magic_412) + f0_6(G_magic_416) + f0_6(G_magic_420) + f0_6(G_magic_424) >= Tp_in_money) {
f0_3(G_magic_412);
f0_3(G_magic_416);
f0_3(G_magic_420);
f0_3(G_magic_424);
}
f0_8(G_magic_412, Gs_428);
f0_8(G_magic_416, Gs_436);
f0_8(G_magic_420, Gs_444);
f0_8(G_magic_424, Gs_452);
f0_9(G_magic_412);
f0_9(G_magic_416);
f0_9(G_magic_420);
f0_9(G_magic_424);
if (Dtrailing) {
f0_14(G_magic_412);
f0_14(G_magic_416);
f0_14(G_magic_420);
f0_14(G_magic_424);
}
if (!Close_Panic) {
if ((!Close_Buy_Trend) && Buy_Trend && f0_13(G_magic_412) == 0 && f0_1(1) == -2) G_ticket_408 = OrderSend(Symbol(), OP_BUY, G_lots_392, Ask, 3, Ask - SL * Gd_376, 0, Gs_428 + 0, G_magic_412, 0, White);
if ((!Close_Sell_Trend) && Sell_Trend && f0_13(G_magic_416) == 0 && f0_1(1) == 2) G_ticket_408 = OrderSend(Symbol(), OP_SELL, G_lots_392, Bid, 3, Bid + SL * Gd_376, 0, Gs_436 + 0, G_magic_416, 0, Aqua);
if ((!Close_Buy_Counter) && Buy_Counter && f0_13(G_magic_420) == 0 && f0_1(-1) == -2) G_ticket_408 = OrderSend(Symbol(), OP_BUY, G_lots_392, Ask, 3, Ask - SL * Gd_376, 0, Gs_444 + 0, G_magic_420, 0, Blue);
if ((!Close_Sell_Counter) && Sell_Counter && f0_13(G_magic_424) == 0 && f0_1(-1) == 2) G_ticket_408 = OrderSend(Symbol(), OP_SELL, G_lots_392, Bid, 3, Bid + SL * Gd_376, 0, Gs_452 + 0, G_magic_424, 0, Red);
}
return (0);
}

// 521345A9FB579F52117F27BE6E0673EE
int f0_1(int Ai_0) {
double ima_4 = iMA(Symbol(), 0, maPereode, 0, MODE_LWMA, PRICE_CLOSE, 0);
double istochastic_12 = iStochastic(NULL, 0, kperiod, dperiod, slowing, MODE_SMA, 0, MODE_MAIN, 0);
double istochastic_20 = iStochastic(NULL, 0, k_period, d_period, s_lowing, MODE_SMA, 0, MODE_MAIN, 0);
if (Ai_0 == 1 && f0_0() == 1) {
if (Close[1] < ima_4 && istochastic_12 > lo_level) return (2);
if (Close[1] > ima_4 && istochastic_12 < up_level) return (-2);
}
if (Ai_0 == -1 && f0_4() == 1) {
if (istochastic_20 > uplevel) return (2);
if (istochastic_20 < lolevel) return (-2);
}
return (0);
}

// B20F59B3985C5F3854AB7E260249C6B0
double f0_6(int A_magic_0) {
double Ld_ret_4 = 0;
for (int pos_12 = 0; pos_12 < OrdersTotal(); pos_12++) {
OrderSelect(pos_12, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderType() > OP_SELL) continue;
if (A_magic_0 == OrderMagicNumber()) Ld_ret_4 += OrderProfit();
}
return (Ld_ret_4);
}

// 799B6F2C43F9E173C5420064357F04E6
void f0_3(int A_magic_0) {
for (int pos_4 = OrdersTotal() - 1; pos_4 >= 0; pos_4--) {
OrderSelect(pos_4, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (A_magic_0 == OrderMagicNumber()) {
if (OrderType() > OP_SELL) {
OrderDelete(OrderTicket());
continue;
}
if (OrderType() == OP_BUY) {
OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
continue;
}
OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
}
}
}
}

// D2C24D8988C79CBCD26CAA5360E70D3B
void f0_8(int A_magic_0, string As_4) {
int cmd_16;
double order_open_price_20;
double order_lots_28;
double Ld_40;
int Li_12 = f0_13(A_magic_0);
if (Li_12 > 0 && Li_12 < Level_Max) {
for (int pos_36 = 0; pos_36 < OrdersTotal(); pos_36++) {
if (OrderSelect(pos_36, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() != Symbol() || OrderMagicNumber() != A_magic_0) continue;
cmd_16 = OrderType();
order_open_price_20 = OrderOpenPrice();
order_lots_28 = OrderLots();
}
}
Ld_40 = order_open_price_20 - Range * Gd_376;
if (cmd_16 == OP_BUY && Ask <= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_BUY, f0_7(order_lots_28 * DiMarti), Ask, 3, Ask - SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Green);
Ld_40 = order_open_price_20 + Range * Gd_376;
if (cmd_16 == OP_SELL && Bid >= Ld_40) G_ticket_408 = OrderSend(Symbol(), OP_SELL, f0_7(order_lots_28 * DiMarti), Bid, 3, Bid + SL * Gd_376, 0, As_4 + Li_12, A_magic_0, 0, Yellow);
}
}

// E537BD21FFFF2D1921BD631DBE4E5641
void f0_9(int A_magic_0) {
double Ld_8;
double price_16;
int Li_4 = f0_13(A_magic_0);
if (Li_4 != 0) {
if (Tp_from_Bep == 0.0 || TP == 0.0) return;
Ld_8 = MathMax(f0_12(A_magic_0, OP_SELL), f0_12(A_magic_0, OP_BUY));
for (int pos_24 = OrdersTotal() - 1; pos_24 >= 0; pos_24--) {
if (OrderSelect(pos_24, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol()) {
if (OrderMagicNumber() == A_magic_0) {
if (Li_4 < Star_ModifTp_Bep) price_16 = f0_11(OrderType(), TP, OrderOpenPrice());
else price_16 = f0_11(OrderType(), Tp_from_Bep, Ld_8);
if (!f0_10(price_16, OrderTakeProfit())) OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), price_16, 0, CLR_NONE);
}
}
}
}
}
}

// FBB44B4487415B134BCE9C790A27FE5E
int f0_13(int A_magic_0) {
int count_4 = 0;
for (int pos_8 = 0; pos_8 < OrdersTotal(); pos_8++) {
OrderSelect(pos_8, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol())
if (A_magic_0 == OrderMagicNumber()) count_4++;
}
return (count_4);
}

// 212452DE8DD4E3765FBFA3DF557BA7EC
int f0_0() {
bool Li_ret_0 = TRUE;
if (StartHour > StopHour) {
if (TimeHour(TimeCurrent()) >= StartHour || TimeHour(TimeCurrent()) < StopHour) Li_ret_0 = TRUE;
} else
if (TimeHour(TimeCurrent()) >= StartHour && TimeHour(TimeCurrent()) < StopHour) Li_ret_0 = TRUE;
return (Li_ret_0);
}

// 98B03CD06244C904E7BE6CEDC0959B37
int f0_4() {
bool Li_ret_0 = TRUE;
if (Start_Hour > Stop_Hour) {
if (TimeHour(TimeCurrent()) >= Start_Hour || TimeHour(TimeCurrent()) < Stop_Hour) Li_ret_0 = TRUE;
} else
if (TimeHour(TimeCurrent()) >= Start_Hour && TimeHour(TimeCurrent()) < Stop_Hour) Li_ret_0 = TRUE;
return (Li_ret_0);
}

// 551B723EAFD6A31D444FCB2F5920FBD3
void f0_2() {
Comment(" ---------------------------------------------",
"\n :: ===>ZAZ+SON+V2.5F+<===",
"\n :: Spread : ", MarketInfo(Symbol(), MODE_SPREAD),
"\n :: Leverage : 1 : ", AccountLeverage(),
"\n :: Equity : ", AccountEquity(),
"\n ------------------------------------------------",

"\n ------------------------------------------------");
}

// FDD5E0C68EEEAC73C07299767285F173
void f0_14(int A_magic_0) {
int Li_4;
double price_24;
double Ld_8 = f0_12(A_magic_0, OP_BUY);
double Ld_16 = f0_12(A_magic_0, OP_SELL);
for (int pos_32 = OrdersTotal() - 1; pos_32 >= 0; pos_32--) {
if (OrderSelect(pos_32, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol()) {
if (OrderMagicNumber() == A_magic_0) {
if (OrderType() == OP_BUY) {
Li_4 = NormalizeDouble((Bid - Ld_8) / Gd_376, 0);
if (Li_4 < StartTrail) break;
price_24 = NormalizeDouble(Bid - Trailing * Gd_376, Digits);
if (OrderStopLoss() == 0.0 || price_24 > OrderStopLoss()) OrderModify(OrderTicket(), OrderOpenPrice(), price_24, OrderTakeProfit(), 0, Aqua);
}
if (OrderType() == OP_SELL) {
Li_4 = NormalizeDouble((Ld_16 - Ask) / Gd_376, 0);
if (Li_4 < StartTrail) break;
price_24 = NormalizeDouble(Ask + Trailing * Gd_376, Digits);
if (OrderStopLoss() == 0.0 || price_24 < OrderStopLoss()) OrderModify(OrderTicket(), OrderOpenPrice(), price_24, OrderTakeProfit(), 0, Pink);
}
}
}
}
}
}

// F13FBEA2A572A0F4C0E556A78DEBE130
double f0_12(int A_magic_0, int A_cmd_4) {
double Ld_ret_8 = 0;
double Ld_16 = 0;
for (int pos_24 = OrdersTotal() - 1; pos_24 >= 0; pos_24--) {
Sleep(1);
if (OrderSelect(pos_24, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol()) {
if (A_cmd_4 == OrderType()) {
if (A_magic_0 == OrderMagicNumber()) {
Ld_ret_8 += OrderOpenPrice() * OrderLots();
Ld_16 += OrderLots();
}
}
}
}
}
if (Ld_16 > 0.0) Ld_ret_8 = NormalizeDouble(Ld_ret_8 / Ld_16, Digits);
return (Ld_ret_8);
}

// F118561F66E8842F90A7F72983FC298F
double f0_11(int Ai_0, int Ai_4, double Ad_8) {
if (Ai_4 == 0) return (0);
if (MathMod(Ai_0, 2) == 0.0) return (Ad_8 + Gd_376 * Ai_4);
return (Ad_8 - Gd_376 * Ai_4);
}

// CF699EF5D42DEFC5E2D9E4610AFDF822
double f0_7(double Ad_0) {
double maxlot_8 = MarketInfo(Symbol(), MODE_MAXLOT);
double minlot_16 = MarketInfo(Symbol(), MODE_MINLOT);
double lotstep_24 = MarketInfo(Symbol(), MODE_LOTSTEP);
double Ld_32 = lotstep_24 * NormalizeDouble(Ad_0 / lotstep_24, 0);
Ld_32 = MathMax(MathMin(maxlot_8, Ld_32), minlot_16);
return (Ld_32);
}

// EA6A96F8F1079FD551A37FB62C23AE0D
bool f0_10(double Ad_0, double Ad_8) {
bool bool_16 = NormalizeDouble(Ad_0 / Point, 0) == NormalizeDouble(Ad_8 / Point, 0);
return (bool_16);
}

// B021DF6AAC4654C454F46C77646E745F
void f0_5() {
Gsa_492[0] = "-------------------------------------------";
Gsa_492[1] = "";
Gsa_492[4] = "";
Gsa_492[5] = "";
Gsa_492[6] = "";
Gsa_492[7] = "";
Gsa_492[2] = "==>>gifaesa@yahoo,com==";
Gsa_492[3] = "-------------------------------------------";
double irsi_0 = iRSI(NULL, PERIOD_M1, 3, PRICE_CLOSE, 0);
if (irsi_0 < 15.0) Gsa_492[1] = "::::+ZAZ+SON+::::";
else {
if (irsi_0 >= 15.0 && irsi_0 < 30.0) Gsa_492[4] = "::::+ZAZ+SON+::::";
else {
if (irsi_0 >= 30.0 && irsi_0 <= 60.0) Gsa_492[5] = "::::+ZAZ+SON+::::";
else {
if (irsi_0 >= 60.0 && irsi_0 <= 80.0) Gsa_492[6] = "::::+ZAZ+SON+::::";
else Gsa_492[7] = "::::+ZAZ+SON+::::";
}
}
}
ObjectCreate("ObjLabel1", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel1", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel1", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel1", OBJPROP_YDISTANCE, 17);
ObjectSetText("ObjLabel1", Gsa_492[0], 10, "Arial", Yellow);
ObjectCreate("ObjLabel2", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel2", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel2", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel2", OBJPROP_YDISTANCE, 30);
ObjectSetText("ObjLabel2", Gsa_492[1], 17, "Arial", Aqua);
ObjectCreate("ObjLabel5", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel5", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel5", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel5", OBJPROP_YDISTANCE, 30);
ObjectSetText("ObjLabel5", Gsa_492[4], 17, "Arial", Red);
ObjectCreate("ObjLabel6", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel6", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel6", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel6", OBJPROP_YDISTANCE, 30);
ObjectSetText("ObjLabel6", Gsa_492[5], 17, "Arial", Blue);
ObjectCreate("ObjLabel7", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel7", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel7", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel7", OBJPROP_YDISTANCE, 30);
ObjectSetText("ObjLabel7", Gsa_492[6], 17, "Arial", Yellow);
ObjectCreate("ObjLabel8", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel8", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel8", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel8", OBJPROP_YDISTANCE, 30);
ObjectSetText("ObjLabel8", Gsa_492[7], 17, "Arial", DarkOrange);
ObjectCreate("ObjLabel4", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel4", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 50);
ObjectSetText("ObjLabel4", Gsa_492[2], 10, "Arial", Lime);
ObjectCreate("ObjLabel3", OBJ_LABEL, 0, 0, 0);
ObjectSet("ObjLabel3", OBJPROP_CORNER, 1);
ObjectSet("ObjLabel3", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel3", OBJPROP_YDISTANCE, 63);
ObjectSetText("ObjLabel3", Gsa_492[0], 10, "Arial", Yellow);
int Li_16 = Time[0] + 60 * Period() - TimeCurrent();
double Ld_8 = Li_16 / 60.0;
int Li_20 = Li_16 % 60;
Li_16 = (Li_16 - Li_16 % 60) / 60;
ObjectDelete("time");
if (ObjectFind("time") != 0) {
ObjectCreate("time", OBJ_TEXT, 0, Time[0], Close[0] + 0.0005);
ObjectSetText("time", " " + Li_16 + ":" + Li_20, 14, "Arial", Orange);
return;
}
ObjectMove("time", 0, Time[0], Close[0] + 0.0005);
}

kira-h
06-10-2021, 12:34 AM
السلام عليكم
لدي مشكلة برمجية وأرجو المساعدة
الاكسيبرت يعمل بنظام المضاعفات ضرب اللوت في 1.5 أو 1,8 أو 2 أو غير ذلك
والكود كله يعمل بكفاءة
ولكن هناك مشكلة في نظام المضاعفات
المشكلة هي
أن نظام المضاعفات إذا كان 1.5 أو أكثر فهو يعمل تمام التمام
أما إذا كانت المضاعفات أقل من 1.5 فلا تعمل ويظل اللوت ثابت 0.01

عايز لما أغير نظام المضاعفات الى 1.2 أو 1.3 أو 1.4 ----أو 1.234 فيعمل ولا يظل اللوت ثابت

وأرجو شرح الخطأ
وجزاك الله الجنة


وعليكم السلام
نظام المضاعفات سليم
ذلك ليس بخطأ بل لأن الناتج يتم تقريبه الى لوت مثبول بالمنصة وهو 0.01 نفسه
لاحظ عند ضرب 0.01 في 1.4 = 0.014 يتم تقريبه تلقائيا إلى 0.01

جرب لوت اساسي اكبر من 0.01 وسترى انه سليم
مثلا 0.02 ضرب 1.4= 0.028 يتم تقريبه الى 0.03 (لأنه اكبر من النصف x.xx5)

metmet
06-10-2021, 08:20 AM
وعليكم السلام
نظام المضاعفات سليم
ذلك ليس بخطأ بل لأن الناتج يتم تقريبه الى لوت مثبول بالمنصة وهو 0.01 نفسه
لاحظ عند ضرب 0.01 في 1.4 = 0.014 يتم تقريبه تلقائيا إلى 0.01

جرب لوت اساسي اكبر من 0.01 وسترى انه سليم
مثلا 0.02 ضرب 1.4= 0.028 يتم تقريبه الى 0.03 (لأنه اكبر من النصف x.xx5)


مشكور جدا اخي
فعلا لقد لاحظت ذلك من قبل فعلا
ولكن ما هو الجزء المسئول عن التقريب
فأنا لا اود ان يكون هناك تقريب

فنظام المضاعفات معلوم انه خطر جدا
ولابد من محاولة ضبضه

اريد الغاء نظام التقريب

وجزاك الله الجنة

kira-h
06-10-2021, 05:37 PM
مشكور جدا اخي
فعلا لقد لاحظت ذلك من قبل فعلا
ولكن ما هو الجزء المسئول عن التقريب
فأنا لا اود ان يكون هناك تقريب

فنظام المضاعفات معلوم انه خطر جدا
ولابد من محاولة ضبضه

اريد الغاء نظام التقريب

وجزاك الله الجنة
إذا الغيت التقريب لن يتم فتح اي صفقة سيظهر خطأ بحجم العقد لأن المنصة لا تقبل حجم لوت ب 3 أعشار

metmet
07-10-2021, 09:06 AM
فعلا جربت ان ابدأ ب 0.02 ومضاعفة 1.25
وقد كان مضبوطا ويسير طبقا للمضاعفة الموجودة
اما 0.01 فان اللوت يكون ثابتا حتى بعد عدد 15 صفقة ولا يزيد

علما بأن هناك اكسيبرتات اخرى عندما اضع لها 0.01
ومضاعفة 1.25
فإنه يفتح الصفقة الاولى والثانية والثالثة والرابعة 0.01 ثم يصل الى 0.02 مرة او مرتين ثم 0
0.03
على نفس المنصة

اما هذا الكود فيثبت اللوت تماما ولا يتغير حتى بعد 15 صفقة فان اللوت ثابت

Waddah
07-10-2021, 02:39 PM
السلام عليكم ..... في حال رسمت مستطيل rectangle على الشارت بشكل يدوي ....ماهو الكود الذي يمكن فيه للإكسبرت قراءة قيمة الضلع السفلي والعلوي لهذا المستطيل ؟

kira-h
07-10-2021, 05:05 PM
فعلا جربت ان ابدأ ب 0.02 ومضاعفة 1.25
وقد كان مضبوطا ويسير طبقا للمضاعفة الموجودة
اما 0.01 فان اللوت يكون ثابتا حتى بعد عدد 15 صفقة ولا يزيد

علما بأن هناك اكسيبرتات اخرى عندما اضع لها 0.01
ومضاعفة 1.25
فإنه يفتح الصفقة الاولى والثانية والثالثة والرابعة 0.01 ثم يصل الى 0.02 مرة او مرتين ثم 0
0.03
على نفس المنصة

اما هذا الكود فيثبت اللوت تماما ولا يتغير حتى بعد 15 صفقة فان اللوت ثابت
ذلك ليس تقريب بل بناء على معادلة ما حسب ما يريده صاحب الاكسبيرت
والمعادلات كثيرة لا تعد ولا تحصى
مثلا كأن تقول للاكسبيرت إذا يوجد صفقة خاسرة ولوتها 0.01 فاجعل اللوت الموالي 0.02
وإذا اللوت أكبر من أو يساوي 0.02 استخدم مضاعفات الضرب
وهكذا...

kira-h
07-10-2021, 05:12 PM
السلام عليكم ..... في حال رسمت مستطيل rectangle على الشارت بشكل يدوي ....ماهو الكود الذي يمكن فيه للإكسبرت قراءة قيمة الضلع السفلي والعلوي لهذا المستطيل ؟
وعليكم السلام
ستستخدم الوظيفة ObjectGet بدلالة OBJPROP_PRICE1 و OBJPROP_PRICE2 لمعرفة سعر الضلعين، أيهما العلوي والسفلي؟ هذا على حسب طريقة رسم المستطيل من اعلى لاسفل او العكس
ويمكنك معرفة ذلك من خلال طباعة النتيجة Print
او تستخدم وظيقة رياضية لمعرفة السعر الاعلى والسعر الاقل بالضلعين MathMax و MathMin وبالتالي تستطيع التمييز بينهما

مثال مستطيل اسمه rec



double up=MathMax(ObjectGet("rec",OBJPROP_PRICE1),ObjectGet("rec",OBJPROP_PRICE2));
dn=MathMin(ObjectGet("rec",OBJPROP_PRICE1),ObjectGet("rec",OBJPROP_PRICE2));

sabil
07-10-2021, 09:08 PM
تمام
هجرب الاستراتيجية الاول ولو نجحت ابقى اشوف المشكلة دي

خلاص غلب حماري
تم ارفاق الاكسبرت لتعديل شروط الاغلاق عند اغلاق الشمعة

metmet
08-10-2021, 09:17 AM
ذلك ليس تقريب بل بناء على معادلة ما حسب ما يريده صاحب الاكسبيرت
والمعادلات كثيرة لا تعد ولا تحصى
مثلا كأن تقول للاكسبيرت إذا يوجد صفقة خاسرة ولوتها 0.01 فاجعل اللوت الموالي 0.02
وإذا اللوت أكبر من أو يساوي 0.02 استخدم مضاعفات الضرب
وهكذا...
اتعبتك معي وارهقت حضرتك
الله يجعله في ميزان حسناتك
وجزاك الله الجنة

kira-h
08-10-2021, 06:49 PM
خلاص غلب حماري
تم ارفاق الاكسبرت لتعديل شروط الاغلاق عند اغلاق الشمعة
الكود سليم ويغلق الصفقة بعد اغلاق الشمعة ولا يوجد اخطاء بالجورنال
مع ذلك للتأكيد اضفت شروط بالاغلاق بالنسخة المرفقة

kira-h
08-10-2021, 06:56 PM
اتعبتك معي وارهقت حضرتك
الله يجعله في ميزان حسناتك
وجزاك الله الجنة
وإياك اخي الكريم

مثال برمجي للاقتراح بمشاركتي السابقة :


double newlots=f0_7(order_lots_28 * DiMarti);
if(order_lots_28==0.01&&DiMarti<=1.4)
newlots=0.02;


مرفق الاكسبيرت

sabil
08-10-2021, 11:20 PM
الكود سليم ويغلق الصفقة بعد اغلاق الشمعة ولا يوجد اخطاء بالجورنال
مع ذلك للتأكيد اضفت شروط بالاغلاق بالنسخة المرفقة
تمام
اشتغل كويس رغم ان ما زالت المنصة بتجيبلي خطأ ف الجورنال
خلاص مش مشكلة المهم انه اشتغل
شكراً جزيلاً

kira-h
09-10-2021, 01:22 AM
تمام
اشتغل كويس رغم ان ما زالت المنصة بتجيبلي خطأ ف الجورنال
خلاص مش مشكلة المهم انه اشتغل
شكراً جزيلاً
بالتوفيق إن شاء الله

moamen gaber
12-10-2021, 07:00 AM
السلام عليكم اخى
لماذا هناك اكسبرتات يمكن عمل لها اوبتميزايشن و اكسبرتات لا يمكن و هل هناك حل برمجى لذلك

kira-h
12-10-2021, 10:09 PM
السلام عليكم اخى
لماذا هناك اكسبرتات يمكن عمل لها اوبتميزايشن و اكسبرتات لا يمكن و هل هناك حل برمجى لذلك
وعليكم السلام
كل الاكسبيرتات تقبل الاوبتيميزايشن والباكتيست
إلا إذا بها شرط برمجي يمنع العمل بالباكتيست اساسا
أو تعتمد على مؤشرات خارجية ثقيلة او معقدة حسابيا لا تقبل ذلك

DrIMO
14-10-2021, 01:10 AM
سلام عليكم
اخوتي هل هناك داله لتحديد بدايه ونهايه شمعه
بمعني اخر مثلا ،اريد ان افتح صفقه عند بدايه كل شمعه جديده ماهي الداله التي تقوم بتلك الوظيفه،هل يعرفها احد من اساتذتنا الموجودون هنا

kira-h
14-10-2021, 01:13 AM
سلام عليكم
اخوتي هل هناك داله لتحديد بدايه ونهايه شمعه
بمعني اخر مثلا ،اريد ان افتح صفقه عند بدايه كل شمعه جديده ماهي الداله التي تقوم بتلك الوظيفه،هل يعرفها احد من اساتذتنا الموجودون هنا
وعليكم السلام
ستستخدم حجم الفوليوم بالوظيفة Volume
مثلا :

if(Volume[0]<5)//

معناه شرط ان يكون حجم فوليوم الشمعة الحالية لم تتجاوز 5 تكات، مما يدل على بداية تكون الشمعة
يمكنك ان تضع اي رقم حسب ما تراه مناسب لك كبداية للشمعة

DrIMO
14-10-2021, 01:19 AM
شكرا جزيلا استاذنا حسن
جزاك الله عن مساعدتك لنا كل الخير والتوفيق دائما يارب

kira-h
14-10-2021, 01:50 AM
شكرا جزيلا استاذنا حسن
جزاك الله عن مساعدتك لنا كل الخير والتوفيق دائما يارب
آمين وإياك أخي الكريم

sabil
15-10-2021, 07:52 PM
اخي حسن
اريد دالة التنبيه ع الايميل والموبايل
ودالة اخرى يحدد هدف مجموعة صفقات بيع او شراء عند نقطة محددة اوتوماتيك يكون مجموعهم ربح
وانا احدد مقدار الربح ف متغير خارجي

kira-h
15-10-2021, 08:41 PM
اخي حسن
اريد دالة التنبيه ع الايميل والموبايل
ودالة اخرى يحدد هدف مجموعة صفقات بيع او شراء عند نقطة محددة اوتوماتيك يكون مجموعهم ربح
وانا احدد مقدار الربح ف متغير خارجي
السلام عليكم
التنبيهات كالتالي :


Alert("SELL / ",Symbol()," / ",NormalizeDouble(Close[1],Digits));
SendMail("Alert","SELL "+Symbol()+" / "+DoubleToStr(Close[1],Digits));
SendNotification("SELL /"+Symbol()+" / "+DoubleToStr(Close[1],Digits));


دالة توحيد الهدف او ما يسمى بمتوسط الربح الاجمالي كالتالي :


input double MainProfit=0;
void OnTick()
{
if(MainProfit>0)AvTakeProfit();
}

double Av_Prices(int type)
{
double Price;
double lots;
for(int i=0; i<=OrdersTotal(); i++)
{
bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
double op=OrderOpenPrice(),
lo=OrderLots();
int mn=OrderMagicNumber(),
ty=OrderType();
if(sy==Symbol()&&mn==MagicNo&&ty<=OP_SELL)
{
if(OrderType()==type)
{
Price+=op*lo;
lots+=lo;
}
}
}
if(lots!=0)
return(Price/lots);
else
return(0);
}


void AvTakeProfit()
{
double Av;
bool m;
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
double sl=OrderStopLoss(),
tp=OrderTakeProfit(),
op=OrderOpenPrice();
int tk=OrderTicket(),
mn=OrderMagicNumber(),
ty=OrderType();


if(sy==Symbol()&&mn==MagicNo)
{
if(ty==OP_BUY)
{
Av=Av_Prices(OP_BUY)+MainProfit*point;
if(NormalizeDouble(sl,Digits)!=NormalizeDouble(Av, Digits)&&NormalizeDouble(tp,Digits)!=NormalizeDouble(Av,Dig its))
{
if(Bid>Av)
m=OrderModify(tk,op,Av,tp,0,Blue);
if(Bid<Av)
m=OrderModify(tk,op,sl,Av,0,Blue);
}
}
else
if(ty==OP_SELL)
{
Av=Av_Prices(OP_SELL)-MainProfit*point;
if(NormalizeDouble(sl,Digits)!=NormalizeDouble(Av, Digits)&&NormalizeDouble(tp,Digits)!=NormalizeDouble(Av,Dig its))
{
if(Ask<Av)
m=OrderModify(tk,op,Av,tp,0,Red);
if(Ask>Av)
m=OrderModify(tk,op,sl,Av,0,Red);
}
}
}
}
}

sabil
17-10-2021, 11:21 AM
السلام عليكم
التنبيهات كالتالي :


Alert("SELL / ",Symbol()," / ",NormalizeDouble(Close[1],Digits));
SendMail("Alert","SELL "+Symbol()+" / "+DoubleToStr(Close[1],Digits));
SendNotification("SELL /"+Symbol()+" / "+DoubleToStr(Close[1],Digits));


دالة توحيد الهدف او ما يسمى بمتوسط الربح الاجمالي كالتالي :


input double MainProfit=0;
void OnTick()
{
if(MainProfit>0)AvTakeProfit();
}

double Av_Prices(int type)
{
double Price;
double lots;
for(int i=0; i<=OrdersTotal(); i++)
{
bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
double op=OrderOpenPrice(),
lo=OrderLots();
int mn=OrderMagicNumber(),
ty=OrderType();
if(sy==Symbol()&&mn==MagicNo&&ty<=OP_SELL)
{
if(OrderType()==type)
{
Price+=op*lo;
lots+=lo;
}
}
}
if(lots!=0)
return(Price/lots);
else
return(0);
}


void AvTakeProfit()
{
double Av;
bool m;
for(int cnt=0; cnt<OrdersTotal(); cnt++)
{
bool s=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
double sl=OrderStopLoss(),
tp=OrderTakeProfit(),
op=OrderOpenPrice();
int tk=OrderTicket(),
mn=OrderMagicNumber(),
ty=OrderType();


if(sy==Symbol()&&mn==MagicNo)
{
if(ty==OP_BUY)
{
Av=Av_Prices(OP_BUY)+MainProfit*point;
if(NormalizeDouble(sl,Digits)!=NormalizeDouble(Av, Digits)&&NormalizeDouble(tp,Digits)!=NormalizeDouble(Av,Dig its))
{
if(Bid>Av)
m=OrderModify(tk,op,Av,tp,0,Blue);
if(Bid<Av)
m=OrderModify(tk,op,sl,Av,0,Blue);
}
}
else
if(ty==OP_SELL)
{
Av=Av_Prices(OP_SELL)-MainProfit*point;
if(NormalizeDouble(sl,Digits)!=NormalizeDouble(Av, Digits)&&NormalizeDouble(tp,Digits)!=NormalizeDouble(Av,Dig its))
{
if(Ask<Av)
m=OrderModify(tk,op,Av,tp,0,Red);
if(Ask>Av)
m=OrderModify(tk,op,sl,Av,0,Red);
}
}
}
}
}



شكراً ياغالي
جاري تجربة دالة متوسط الربح
لكن بخصوص التنبيهات مش عارف اكتب الايميل والموبايل فين؟

kira-h
17-10-2021, 04:47 PM
شكراً ياغالي
جاري تجربة دالة متوسط الربح
لكن بخصوص التنبيهات مش عارف اكتب الايميل والموبايل فين؟
راجع المشاركة التالية https://www.fxprg.com/vb/showthread.php?t=33849&p=886918&viewfull=1#post886918
كذلك ستجد شروحات اكثر باليوتيوب...

Harmonic Trader
20-10-2021, 01:04 AM
السلام عليكم اخى الكريم
هل يمكنك مساعدتى فى فهم المعادلات الاتية
هى عبارة عن كود مؤشر لتوضيح قوة العملات و هذه صورته
28510
و هل يمكن تحويل هذه الاكواد الى مؤشر



//Rate of change
function GetVal($v1, $v2)
{
if ($v2 == 0) {
return;
}
return log($v1/$v2)*10000;
}

function GetValM($v1, $v2, $v3, $v4)
{
$v1 = $v1 * $v3;
$v2 = $v2 * $v4;
if ($v2 == 0) {
return;
}
return log($v1/$v2)*10000;
}

function GetValD($v1, $v2, $v3, $v4)
{
if ($v3 == 0 || $v4 == 0) {
return;
}

$v1 = $v1 / $v3;
$v2 = $v2 / $v4;
if ($v2 == 0) {
return;
}
return log($v1/$v2)*10000;
}

//$v1 is the current price, $v2 is the price of the starting point
$EURUSD = GetVal($v1['EURUSD'],$v2['EURUSD']);
$USDJPY = GetVal($v1['USDJPY'],$v2['USDJPY']);
$USDCHF = GetVal($v1['USDCHF'],$v2['USDCHF']);
$GBPUSD = GetVal($v1['GBPUSD'],$v2['GBPUSD']);
$AUDUSD = GetVal($v1['AUDUSD'],$v2['AUDUSD']);
$USDCAD = GetVal($v1['USDCAD'],$v2['USDCAD']);
$NZDUSD = GetVal($v1['NZDUSD'],$v2['NZDUSD']);
$EURJPY = GetValM($v1['EURUSD'],$v2['EURUSD'],$v1['USDJPY'],$v2['USDJPY']);
$EURCHF = GetValM($v1['EURUSD'],$v2['EURUSD'],$v1['USDCHF'],$v2['USDCHF']);
$EURGBP = GetValD($v1['EURUSD'],$v2['EURUSD'],$v1['GBPUSD'],$v2['GBPUSD']);
$CHFJPY = GetValD($v1['USDJPY'],$v2['USDJPY'],$v1['USDCHF'],$v2['USDCHF']);
$GBPCHF = GetValM($v1['GBPUSD'],$v2['GBPUSD'],$v1['USDCHF'],$v2['USDCHF']);
$GBPJPY = GetValM($v1['GBPUSD'],$v2['GBPUSD'],$v1['USDJPY'],$v2['USDJPY']);
$AUDCHF = GetValM($v1['AUDUSD'],$v2['AUDUSD'],$v1['USDCHF'],$v2['USDCHF']);
$AUDJPY = GetValM($v1['AUDUSD'],$v2['AUDUSD'],$v1['USDJPY'],$v2['USDJPY']);
$AUDCAD = GetValM($v1['AUDUSD'],$v2['AUDUSD'],$v1['USDCAD'],$v2['USDCAD']);
$EURCAD = GetValM($v1['EURUSD'],$v2['EURUSD'],$v1['USDCAD'],$v2['USDCAD']);
$GBPCAD = GetValM($v1['GBPUSD'],$v2['GBPUSD'],$v1['USDCAD'],$v2['USDCAD']);
$GBPAUD = GetValD($v1['GBPUSD'],$v2['GBPUSD'],$v1['AUDUSD'],$v2['AUDUSD']);
$EURAUD = GetValD($v1['EURUSD'],$v2['EURUSD'],$v1['AUDUSD'],$v2['AUDUSD']);
$CADCHF = GetValD($v1['USDCHF'],$v2['USDCHF'],$v1['USDCAD'],$v2['USDCAD']);
$CADJPY = GetValD($v1['USDJPY'],$v2['USDJPY'],$v1['USDCAD'],$v2['USDCAD']);
$AUDNZD = GetValD($v1['AUDUSD'],$v2['AUDUSD'],$v1['NZDUSD'],$v2['NZDUSD']);
$EURNZD = GetValD($v1['EURUSD'],$v2['EURUSD'],$v1['NZDUSD'],$v2['NZDUSD']);
$GBPNZD = GetValD($v1['GBPUSD'],$v2['GBPUSD'],$v1['NZDUSD'],$v2['NZDUSD']);
$NZDCAD = GetValM($v1['NZDUSD'],$v2['NZDUSD'],$v1['USDCAD'],$v2['USDCAD']);
$NZDCHF = GetValM($v1['NZDUSD'],$v2['NZDUSD'],$v1['USDCHF'],$v2['USDCHF']);
$NZDJPY = GetValM($v1['NZDUSD'],$v2['NZDUSD'],$v1['USDJPY'],$v2['USDJPY']);

//Calculate the value of each currency
$Pairs = 7;
$EUR = ($EURUSD+$EURJPY+$EURCHF+$EURGBP+$EURAUD+$EURCAD+$ EURNZD)/$Pairs;
$USD = (-$EURUSD+$USDJPY+$USDCHF-$GBPUSD-$AUDUSD+$USDCAD-$NZDUSD)/$Pairs;
$JPY = (-$EURJPY-$USDJPY-$CHFJPY-$GBPJPY-$AUDJPY-$CADJPY-$NZDJPY)/$Pairs;
$CHF = (-$EURCHF-$USDCHF+$CHFJPY-$GBPCHF-$AUDCHF-$CADCHF-$NZDCHF)/$Pairs;
$GBP = (-$EURGBP+$GBPUSD+$GBPCHF+$GBPJPY+$GBPAUD+$GBPCAD+$G BPNZD)/$Pairs;
$AUD = (-$EURAUD+$AUDUSD+$AUDJPY+$AUDCHF-$GBPAUD+$AUDCAD+$AUDNZD)/$Pairs;
$CAD = (-$EURCAD-$USDCAD+$CADJPY+$CADCHF-$GBPCAD-$AUDCAD-$NZDCAD)/$Pairs;
$NZD = (-$EURNZD+$NZDUSD+$NZDJPY+$NZDCHF-$GBPNZD+$NZDCAD-$AUDNZD)/$Pairs;

DrIMO
22-10-2021, 02:42 PM
سلام عليكم اخوتى
هل من داله تقوم بحساب قيمه العقد تلقائيا بناء علي متغير خارجي بقيمه النقطه
يعني انا اريد ان اقول للاكسبيرت احسب قيمه العقد اذا كانت قيمه النقطه المطلوبه كذا(متغير خارجي)،هل هناك داله تقوم بتلك الوظيفه

السؤال الاخر اخوتي
هل هناك داله تقوم بحساب قيمه الاسبريد ويكون الناتج الخاص بها بالدولار وليس بالنقاط

وشكرا جزيلا لكم مقدما

kira-h
22-10-2021, 05:12 PM
سلام عليكم اخوتى
هل من داله تقوم بحساب قيمه العقد تلقائيا بناء علي متغير خارجي بقيمه النقطه
يعني انا اريد ان اقول للاكسبيرت احسب قيمه العقد اذا كانت قيمه النقطه المطلوبه كذا(متغير خارجي)،هل هناك داله تقوم بتلك الوظيفه

السؤال الاخر اخوتي
هل هناك داله تقوم بحساب قيمه الاسبريد ويكون الناتج الخاص بها بالدولار وليس بالنقاط

وشكرا جزيلا لكم مقدما
وعليكم السلام
السؤالين غير منطقيين اخي
قيمة العقد التلقائي يحسب بوجود علاقة بين الخسارة (او الربح) النقطي مع الخسارة (او الربح) الدولارية وليس قيمة النقطة، أما قيمة النقطة موجودة سلقا باللغة mode_tickvalue مع Point مثل Ask و Bid
اما السبريد لا يمكن ان يكون بالدولار لأن القيمة الدولارية مرتبطة بقيمة العقد

sabil
23-10-2021, 05:45 PM
اخي حسن
هناك اكسبرت مضاعفات مكتوب فيه قيمة المضاعفة 1.35 بالمتغيرات الخارجية وبالتالي طبعا لما يكون قيمة اللوت الابتدائي 0.01 سيظل يفتح بنفس هذا العقد دائما ولن تعمل المضاعفات لكن في هذا الاكسبرت يحدث شيء غريب وهو ان بعد الصفقة الثالثة يبدأ يفتح بعقود جديدة تبدأ من 0.02 وهكذا ..
كيف حدث ذلك؟
وما هي الدالة المستخدمة؟

kira-h
23-10-2021, 08:20 PM
اخي حسن
هناك اكسبرت مضاعفات مكتوب فيه قيمة المضاعفة 1.35 بالمتغيرات الخارجية وبالتالي طبعا لما يكون قيمة اللوت الابتدائي 0.01 سيظل يفتح بنفس هذا العقد دائما ولن تعمل المضاعفات لكن في هذا الاكسبرت يحدث شيء غريب وهو ان بعد الصفقة الثالثة يبدأ يفتح بعقود جديدة تبدأ من 0.02 وهكذا ..
كيف حدث ذلك؟
وما هي الدالة المستخدمة؟
السلام عليكم
راجع المشاركة التالية #3469 (https://www.fxprg.com/vb/showthread.php?t=31457&p=929841&viewfull=1#post929841)

Harmonic Trader
27-10-2021, 11:43 PM
السلام عليكم اخى الكريم
هل يمكنك مساعدتى فى فهم المعادلات الاتية
هى عبارة عن كود مؤشر لتوضيح قوة العملات و هذه صورته
28510
و هل يمكن تحويل هذه الاكواد الى مؤشر



//Rate of change
function GetVal($v1, $v2)
{
if ($v2 == 0) {
return;
}
return log($v1/$v2)*10000;
}

function GetValM($v1, $v2, $v3, $v4)
{
$v1 = $v1 * $v3;
$v2 = $v2 * $v4;
if ($v2 == 0) {
return;
}
return log($v1/$v2)*10000;
}

function GetValD($v1, $v2, $v3, $v4)
{
if ($v3 == 0 || $v4 == 0) {
return;
}

$v1 = $v1 / $v3;
$v2 = $v2 / $v4;
if ($v2 == 0) {
return;
}
return log($v1/$v2)*10000;
}

//$v1 is the current price, $v2 is the price of the starting point
$EURUSD = GetVal($v1['EURUSD'],$v2['EURUSD']);
$USDJPY = GetVal($v1['USDJPY'],$v2['USDJPY']);
$USDCHF = GetVal($v1['USDCHF'],$v2['USDCHF']);
$GBPUSD = GetVal($v1['GBPUSD'],$v2['GBPUSD']);
$AUDUSD = GetVal($v1['AUDUSD'],$v2['AUDUSD']);
$USDCAD = GetVal($v1['USDCAD'],$v2['USDCAD']);
$NZDUSD = GetVal($v1['NZDUSD'],$v2['NZDUSD']);
$EURJPY = GetValM($v1['EURUSD'],$v2['EURUSD'],$v1['USDJPY'],$v2['USDJPY']);
$EURCHF = GetValM($v1['EURUSD'],$v2['EURUSD'],$v1['USDCHF'],$v2['USDCHF']);
$EURGBP = GetValD($v1['EURUSD'],$v2['EURUSD'],$v1['GBPUSD'],$v2['GBPUSD']);
$CHFJPY = GetValD($v1['USDJPY'],$v2['USDJPY'],$v1['USDCHF'],$v2['USDCHF']);
$GBPCHF = GetValM($v1['GBPUSD'],$v2['GBPUSD'],$v1['USDCHF'],$v2['USDCHF']);
$GBPJPY = GetValM($v1['GBPUSD'],$v2['GBPUSD'],$v1['USDJPY'],$v2['USDJPY']);
$AUDCHF = GetValM($v1['AUDUSD'],$v2['AUDUSD'],$v1['USDCHF'],$v2['USDCHF']);
$AUDJPY = GetValM($v1['AUDUSD'],$v2['AUDUSD'],$v1['USDJPY'],$v2['USDJPY']);
$AUDCAD = GetValM($v1['AUDUSD'],$v2['AUDUSD'],$v1['USDCAD'],$v2['USDCAD']);
$EURCAD = GetValM($v1['EURUSD'],$v2['EURUSD'],$v1['USDCAD'],$v2['USDCAD']);
$GBPCAD = GetValM($v1['GBPUSD'],$v2['GBPUSD'],$v1['USDCAD'],$v2['USDCAD']);
$GBPAUD = GetValD($v1['GBPUSD'],$v2['GBPUSD'],$v1['AUDUSD'],$v2['AUDUSD']);
$EURAUD = GetValD($v1['EURUSD'],$v2['EURUSD'],$v1['AUDUSD'],$v2['AUDUSD']);
$CADCHF = GetValD($v1['USDCHF'],$v2['USDCHF'],$v1['USDCAD'],$v2['USDCAD']);
$CADJPY = GetValD($v1['USDJPY'],$v2['USDJPY'],$v1['USDCAD'],$v2['USDCAD']);
$AUDNZD = GetValD($v1['AUDUSD'],$v2['AUDUSD'],$v1['NZDUSD'],$v2['NZDUSD']);
$EURNZD = GetValD($v1['EURUSD'],$v2['EURUSD'],$v1['NZDUSD'],$v2['NZDUSD']);
$GBPNZD = GetValD($v1['GBPUSD'],$v2['GBPUSD'],$v1['NZDUSD'],$v2['NZDUSD']);
$NZDCAD = GetValM($v1['NZDUSD'],$v2['NZDUSD'],$v1['USDCAD'],$v2['USDCAD']);
$NZDCHF = GetValM($v1['NZDUSD'],$v2['NZDUSD'],$v1['USDCHF'],$v2['USDCHF']);
$NZDJPY = GetValM($v1['NZDUSD'],$v2['NZDUSD'],$v1['USDJPY'],$v2['USDJPY']);

//Calculate the value of each currency
$Pairs = 7;
$EUR = ($EURUSD+$EURJPY+$EURCHF+$EURGBP+$EURAUD+$EURCAD+$ EURNZD)/$Pairs;
$USD = (-$EURUSD+$USDJPY+$USDCHF-$GBPUSD-$AUDUSD+$USDCAD-$NZDUSD)/$Pairs;
$JPY = (-$EURJPY-$USDJPY-$CHFJPY-$GBPJPY-$AUDJPY-$CADJPY-$NZDJPY)/$Pairs;
$CHF = (-$EURCHF-$USDCHF+$CHFJPY-$GBPCHF-$AUDCHF-$CADCHF-$NZDCHF)/$Pairs;
$GBP = (-$EURGBP+$GBPUSD+$GBPCHF+$GBPJPY+$GBPAUD+$GBPCAD+$G BPNZD)/$Pairs;
$AUD = (-$EURAUD+$AUDUSD+$AUDJPY+$AUDCHF-$GBPAUD+$AUDCAD+$AUDNZD)/$Pairs;
$CAD = (-$EURCAD-$USDCAD+$CADJPY+$CADCHF-$GBPCAD-$AUDCAD-$NZDCAD)/$Pairs;
$NZD = (-$EURNZD+$NZDUSD+$NZDJPY+$NZDCHF-$GBPNZD+$NZDCAD-$AUDNZD)/$Pairs;


هل هذا الاستفسار به شىء خطأ ؟

kira-h
28-10-2021, 01:06 AM
هل هذا الاستفسار به شىء خطأ ؟

اخي الكريم عدم الرد يعني ليس باستطاعتي الرد
فالشروط مبهمة بالكود

sabil
30-10-2021, 06:48 PM
اخي حسن
هل لديك فكرة عن المعادلة الرياضية للمضاعفات المستخدمة داخل المستطيل الاحمر في هذه الصورة المرفقة؟

kira-h
30-10-2021, 10:28 PM
اخي حسن
هل لديك فكرة عن المعادلة الرياضية للمضاعفات المستخدمة داخل المستطيل الاحمر في هذه الصورة المرفقة؟
السلام عليكم
ليست معادلة بل ستكون الشروط تفصيلية بناء على مصفوفة حسب الكومنت او ببساطة حسب عدد الصفقات
يعني مثلا إذا يوجد 3 صفقات أو أقل يفتح بالعقد الاساسي 0.01
إذا عدد الصفقات يساوي 4 يفتح لوت 0.02
إذا 5 صفقات يفتح 0.03
وهكذا...

shivaa
07-11-2021, 12:33 AM
السلام عليكم
ممكن مساعده
عاوز اعرف قائمه باسماء الاكسبيرتات التعمل على منصه عن طريق تنبيه
وكيف اغلق الاكسبرتات كلها الا اكسبيرت واحد فقط
كيف امنع النسخ من الاكسبيرت

kira-h
07-11-2021, 07:18 AM
السلام عليكم
ممكن مساعده
عاوز اعرف قائمه باسماء الاكسبيرتات التعمل على منصه عن طريق تنبيه لا اعتقد ان هذا ممكن
وكيف اغلق الاكسبرتات كلها الا اكسبيرت واحد فقط تحتاج الى تعديل الاكسبيرتات جميعها باضافة شروط تعتمد على دوال الجلوبال للتواصل فيما بينها
كيف امنع النسخ من الاكسبيرت غير ممكن
وعليكم السلام

taayeb
12-11-2021, 05:17 PM
السلام عليكم
من فظلكم كيف يمكن تغير حساب مؤشر زقزاق وأجعله يحسب على افتتاح و اغلاق برمجيا
او ايدا كان هناك شرح لكود مؤشر زقزاق فأكون مشكور لكم
جزاكم الله كل خير

kira-h
12-11-2021, 08:32 PM
السلام عليكم
من فظلكم كيف يمكن تغير حساب مؤشر زقزاق وأجعله يحسب على افتتاح و اغلاق برمجيا
او ايدا كان هناك شرح لكود مؤشر زقزاق فأكون مشكور لكم
جزاكم الله كل خير

وعليكم السلام
راجع كود المؤشر بالمرفق وقارنه مع المؤشر الاصلي وستلاحظ الفرق بينهما

شرح مؤشر الزيجزاج :


val=Low[iLowest(NULL,0,MODE_LOW,InpDepth,shift)];
if(val==lastlow) val=0.0;


val=High[iHighest(NULL,0,MODE_HIGH,InpDepth,shift)];
if(val==lasthigh) val=0.0;

يقوم المؤشر بالبحث عن تكون لو أو هاي جديد

if(val==lastlow) val=0.0;

إذا كان هذا الهاي أو اللو في نفس مدى عدد الشموع الذي يتم تحديده عن طريق المتغير InpDepth يتم إهمال الهاي أو اللو السابق وإعتماد الهاي أو اللو الجديد

if((Low[shift]-val)>(InpDeviation*Point)) val=0.0;

إذا كان لو الشمعه الحاليه أقل من لو الزيجزاج أكبر من InpDeviation وهو عدد النقاط التي يتم تحديدها في خصائص المؤشر يتم إعتماد آخر لو تكون للشمعه

taayeb
12-11-2021, 09:40 PM
وعليكم السلام
راجع كود المؤشر بالمرفق وقارنه مع المؤشر الاصلي وستلاحظ الفرق بينهما

شرح مؤشر الزيجزاج :


val=Low[iLowest(NULL,0,MODE_LOW,ExtDepth,shift)];
if(val==lastlow) val=0.0;


val=High[iHighest(NULL,0,MODE_HIGH,ExtDepth,shift)];
if(val==lasthigh) val=0.0;

يقوم المؤشر بالبحث عن تكون لو أو هاي جديد

if(val==lastlow) val=0.0;

إذا كان هذا الهاي أو اللو في نفس مدى عدد الشموع الذي يتم تحديده عن طريق المتغير ExtDepth يتم إهمال الهاي أو اللو السابق وإعتماد الهاي أو اللو الجديد

if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;

إذا كان لو الشمعه الحاليه أقل من لو الزيجزاج أكبر من ExtDeviation وهو عدد النقاط التي يتم تحديدها في خصائص المؤشر يتم إعتماد آخر لو تكون للشمعه



جزاك الله كل خير
أنا حاليا مبتدأ في برمجة تقبل اعتذاري اذا أكثرت عليك الطلبات
حسانا
InpDepth هيا الفترة الزمنية
لكن ماذا يقصد بهذه :InpDeviation و InpBackstep و ExtLevel=3