رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة EgyptionPro
لدى سؤال بخصوص تحديد قيمة الـ Lot بناء على نسبة مئوية معينة من قيمة رأس المال اريد الدخول بها في الصفقة الواحدة
مثلاً
رأس المال 10000 دولار واريد الدخول بـ 2% من قيمة رأس المال في الصفقة فاريد المعادلات المسؤلة على تحديد قيمة اللوت بناء على النسبة المئوية للدخول ؟
بص يا جميل
هتنشئ طبعاً متغير لقيمة وقف الخسارة وليكن اسمه StopLoss أهم حاجه يكون نوعها Double علشان وقف الخسارة يكون أكثر مرونة
تفضل الكود
كود PHP:
#property copyright "Hero_0"
#property link "www.arabictrader.com"
double StopLoss=1;
//+------------------------------------------------------------------+
//| START |
//+------------------------------------------------------------------+
int start()
{
// لو أردت أن يكون وقف الخسارة بناء على الرصيد العائم الحالي والذي يشمل الصفقات المفتوحة
StopLoss = ( (AccountEquity() * 2)/100 );
// كم النقود الموجوده في الحساب وهذا الأمر لو أدرت أن يكون الحساب بناء على
StopLoss = ( (AccountBalance() * 2)/100 );
Comment (StopLoss);
// لاحظ طبعاً انك لا تستطيع استخدام الإثنين يجب اختيار واحده فقط
//----
return(0);
}
//+------------------------------------------------------------------+
تقبل ودي :eh_s(7):
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة HERO_0
بص يا جميل
هتنشئ طبعاً متغير لقيمة وقف الخسارة وليكن اسمه StopLoss أهم حاجه يكون نوعها Double علشان وقف الخسارة يكون أكثر مرونة
تفضل الكود
كود PHP:
#property copyright "Hero_0"
#property link "www.arabictrader.com"
double StopLoss=1;
//+------------------------------------------------------------------+
//| START |
//+------------------------------------------------------------------+
int start()
{
// لو أردت أن يكون وقف الخسارة بناء على الرصيد العائم الحالي والذي يشمل الصفقات المفتوحة
StopLoss = ( (AccountEquity() * 2)/100 );
// كم النقود الموجوده في الحساب وهذا الأمر لو أدرت أن يكون الحساب بناء على
StopLoss = ( (AccountBalance() * 2)/100 );
Comment (StopLoss);
// لاحظ طبعاً انك لا تستطيع استخدام الإثنين يجب اختيار واحده فقط
//----
return(0);
}
//+------------------------------------------------------------------+
تقبل ودي :eh_s(7):
اشكرك اخى الفاضل على تعبك
اعتقد ان قيمة استوب لوس ستعود بقيمة 2% من رأس المال وما اردته هو قيمة اللوت في حالة الرغبة في الدخول ب2% من راس المال (في حالة الرافعة 1:100 )
رد: موضوع مخصص للأسئلة البرمجية
لدى سؤال آخر
بخصوص الدالة Comment كيف يمكن التحكم في حجم الخط بها ؟
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة EgyptionPro
اشكرك اخى الفاضل على تعبك
اعتقد ان قيمة استوب لوس ستعود بقيمة 2% من رأس المال وما اردته هو قيمة اللوت في حالة الرغبة في الدخول ب2% من راس المال (في حالة الرافعة 1:100 )
الكود اللي كتبته هيجعل حجم اللوت = 2% من إجمالي قيمة رأس المال
انا فقط اخطئت في التسمية المفروض يكون اسم المتغير LotSize وليس StopLoss ويبقى كل شيء كما هو
تحياتي:eh_s(7):
رد: موضوع مخصص للأسئلة البرمجية
السلام عليكم
بعد محاولات عديدة لتعلم البرمجه ,
وبعد الاطلاع على موضوع الاستاذ اسامه لصنع مؤشر iMA
في هذا الموضوع
https://forum.arabictrader.com/t93679.html
اخترت ان اعمل على مؤشر iEnvelopes
ولكن هناك بعض الاخطاء لدي بالكود ,, لذلك امل توضيح مكان الخطأ وليس اصلاحة فقط ,, فالهدف التعلم .
وشكرا للجميع
كود:
//+------------------------------------------------------------------+
//| test.mq4 |
//| Copyright © 2010MetaQuotes Software Corp. |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010MetaQuotes Software Corp."
#property link ""
extern string Envelope = "input parameters"
extern int TimeFrame = 0 ;
extern int ma_period = 0 ;
extern int ma_method = 0 ;
extern int ma_shift = 0 ;
extern int applied_price = 0 ;
extern int deviation = 0 ;
extern int symbol = 0 ;
extern int shift = 0 ;
extern int mode = 0 ;
extern int StopLoss = 0 ;
extern int TakeProfit = 0 ;
extern int Lot = 0.1 ;
extern int MagicNumber = 2121 ;
int init()
{
//----
//----
return(0);
}
int start()
{
Comment ( " Welcome to My " + " EA" )
double e1,e2;
e1=iEnvelopes (NULL, 0, 13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_UPPER,-1);
e2=iEnvelopes (NULL, 0, 13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_LOWER,-1);
double iEnvelopes( string symbol, int timeframe, int ma_period, int ma_method, int ma_shift, int applied_price, double deviation, int mode, int shift)
double SL,TP;
if ( e1 < PRICE_CLOSE && e2 < PRICE_CLOSE);
(StopLoss > e1 > PRICE_CLOSE && e2 > PRICE_CLOSE) else{SL=Ask-StopLoss*Point;}
if(TakeProfit==e2 > PRICE_CLOSE ) {TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"test1",MagicNumber,0,Blue);
}
if ( e1 > PRICE_CLOSE && e2 > PRICE_CLOSE);
(StopLoss < e1 < PRICE_CLOSE && e2 < PRICE_CLOSE) else{SL=Ask-StopLoss*Point;}
if(TakeProfit==e2 < PRICE_CLOSE ) {TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"test2",MagicNumber,0,Red);
return(0);
}
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة E A
السلام عليكم
بعد محاولات عديدة لتعلم البرمجه ,
وبعد الاطلاع على موضوع الاستاذ اسامه لصنع مؤشر iMA
في هذا الموضوع
https://forum.arabictrader.com/t93679.html
اخترت ان اعمل على مؤشر iEnvelopes
ولكن هناك بعض الاخطاء لدي بالكود ,, لذلك امل توضيح مكان الخطأ وليس اصلاحة فقط ,, فالهدف التعلم .
وشكرا للجميع
كود:
//+------------------------------------------------------------------+
//| test.mq4 |
//| Copyright © 2010MetaQuotes Software Corp. |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010MetaQuotes Software Corp."
#property link ""
extern string Envelope = "input parameters"
extern int TimeFrame = 0 ;
extern int ma_period = 0 ;
extern int ma_method = 0 ;
extern int ma_shift = 0 ;
extern int applied_price = 0 ;
extern int deviation = 0 ;
extern int symbol = 0 ;
extern int shift = 0 ;
extern int mode = 0 ;
extern int StopLoss = 0 ;
extern int TakeProfit = 0 ;
extern int Lot = 0.1 ;
extern int MagicNumber = 2121 ;
int init()
{
//----
//----
return(0);
}
int start()
{
Comment ( " Welcome to My " + " EA" )
double e1,e2;
e1=iEnvelopes (NULL, 0, 13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_UPPER,-1);
e2=iEnvelopes (NULL, 0, 13,MODE_SMA,10,PRICE_CLOSE,0.2,MODE_LOWER,-1);
double iEnvelopes( string symbol, int timeframe, int ma_period, int ma_method, int ma_shift, int applied_price, double deviation, int mode, int shift)
double SL,TP;
if ( e1 < PRICE_CLOSE && e2 < PRICE_CLOSE);
(StopLoss > e1 > PRICE_CLOSE && e2 > PRICE_CLOSE) else{SL=Ask-StopLoss*Point;}
if(TakeProfit==e2 > PRICE_CLOSE ) {TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,SL,TP,"test1",MagicNumber,0,Blue);
}
if ( e1 > PRICE_CLOSE && e2 > PRICE_CLOSE);
(StopLoss < e1 < PRICE_CLOSE && e2 < PRICE_CLOSE) else{SL=Ask-StopLoss*Point;}
if(TakeProfit==e2 < PRICE_CLOSE ) {TP=0;}else{TP=Ask+TakeProfit*Point;}
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,SL,TP,"test2",MagicNumber,0,Red);
return(0);
}
طيب أخي ممكن تحط فكرة المؤشر بشكل نظري مع رسمة لكي نفهم المطلوب بالظبط ؟
تحياتي :eh_s(7):
1 مرفق
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة HERO_0
طيب أخي ممكن تحط فكرة المؤشر بشكل نظري مع رسمة لكي نفهم المطلوب بالظبط ؟
تحياتي :eh_s(7):
سيتم توضيح الفكرة لك ,, ولكن امل تصحيح من خلال كتابة كومنت ,, عشان اعرف وين الخطأ ,, وشكرا لك مقدماً :eh_s(7):
الفكرة : اذا اغلق السعر فوق الخط الازرق (upper envelops) فيتم فتح صفقة شراء
تكون محدده لهدف من المدخلات او يتم الخروج منها اذا اغلق السعر اسفل الخط الاحمر وهو (lower envelops)
ايضا وقف الخسارة يكون اغلاق السعر تحت الخط الاحمر .
بمعنى ان وقف الخسارة والتيك بروفت واحد وهو اغلاقهم تحت الخط الاحمر . اذا لم يحدد في المدخلات هدف .
البيع عكسهم تماما .
شارت لعملية شراء وبيع :
الملف المرفق 238123
رد: موضوع مخصص للأسئلة البرمجية
مرت 5 ايام دون تعليق ,, اجد انه من الصعب التعلم في المنتديات العربية ,,
عموما تم حل المشكلة بالتعاون مع مبرمج اجنبي ,,
دمتم بكل ود
1 مرفق
رد: موضوع مخصص للأسئلة البرمجية
الأساتذة الكرام
لدي اكسبيرت مستر دولار و الخاص بالمضاعفات و لكنني أريده بطريقة مختلفة و لم أفلح في تعديله وحدي
الاكسبيرت يقوم بصفقات بيع أو شراء متتالية بنفس الاتجاه
و انا أحتاجه أن يقوم بصفقات متوالية و متعاكسة بمعنى أنه اذا فتح صفقة شراء و انعكس السعر بمقدار معين يفتح في نفس الاتجاه و هو الهابط صفقة بيع مضاعفة فإذا انعكس السعر لصفقة البيع يفتح صفقة شراء مضاعفة .... و هكذا
و بارك الله فيكم
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة mouadh_stam
الأساتذة الكرام
لدي اكسبيرت مستر دولار و الخاص بالمضاعفات و لكنني أريده بطريقة مختلفة و لم أفلح في تعديله وحدي
الاكسبيرت يقوم بصفقات بيع أو شراء متتالية بنفس الاتجاه
و انا أحتاجه أن يقوم بصفقات متوالية و متعاكسة بمعنى أنه اذا فتح صفقة شراء و انعكس السعر بمقدار معين يفتح في نفس الاتجاه و هو الهابط صفقة بيع مضاعفة فإذا انعكس السعر لصفقة البيع يفتح صفقة شراء مضاعفة .... و هكذا
و بارك الله فيكم
سوف تحتاج أولا إلى كود لمعرفة سعر فتح الصفقه ثم ستضع من ضمن الشروط إذا كان السعر الحالي أقل من سعر فتح الصفقه - عدد النقاط التي تريدها
راجع هذا الموضوع وهو تقريبا نفس الكود الذي قمت بشرحها الخاص بالمضاعفات
https://forum.arabictrader.com/t97945.html
رد: موضوع مخصص للأسئلة البرمجية
جزاك الله خيرا أستاذي الكريم
أجرب و أعود بالنتائج
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة mouadh_stam
جزاك الله خيرا أستاذي الكريم
أجرب و أعود بالنتائج
إن شاء الله تجربة موفقه
رد: موضوع مخصص للأسئلة البرمجية
سؤال بخصوص Tickets
بفرض اريد التعامل مع صفقة معينة محددة بمعنى صفقة لها عدد لوت معين وسعر شراء واهداف معينة ووضعت الصفقة بمتغير تيكت معين مثلا ticketBuy1
واريد ان اقول ان استخدم الشرط التالى فية حالة الصفقة ذات التيكت ticketBuy1 نفذت افعل كذا
امر الشراء تم تفعيله ذات التيكت ticketBuy1
كود:
if (ticketBuy1==1){ }
امر الشراء تم تفعيله ذات التيكت ticketBuy3
كود:
if (ticketBuy3==1){ }
امر الشراء ذات التيكت ticketBuy1 لم يفعل بعد
كود:
if (ticketBuy1==0){ }
هل ما سبق صحيح ويمكن تطبيقه بهذة الصورة
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة EgyptionPro
سؤال بخصوص Tickets
بفرض اريد التعامل مع صفقة معينة محددة بمعنى صفقة لها عدد لوت معين وسعر شراء واهداف معينة ووضعت الصفقة بمتغير تيكت معين مثلا ticketBuy1
واريد ان اقول ان استخدم الشرط التالى فية حالة الصفقة ذات التيكت ticketBuy1 نفذت افعل كذا
امر الشراء تم تفعيله ذات التيكت ticketBuy1
كود:
if (ticketBuy1==1){ }
امر الشراء تم تفعيله ذات التيكت ticketBuy3
كود:
if (ticketBuy3==1){ }
امر الشراء ذات التيكت ticketBuy1 لم يفعل بعد
كود:
if (ticketBuy1==0){ }
هل ما سبق صحيح ويمكن تطبيقه بهذة الصورة
عندما تفعل صفقه فسوف تأخذ رقم تيكيت تماما كما وضحت أنت ولكن ليس شرط أن يكون هذا التيكيت يساوي 1 لذلك يمكنك تغيير بدلا من وضع الشرط ticketBuy1==1 يمكنك جعله ticketBuy1>0 وكذل بالنسبه لباقي الأوردرات
أو يمكنك إستخدام طريقة أخرى عن طريق البحث بإستخدام الحلقات عن الصفقات المفتوحه ثم تقوم بالمقارنه إذا كان حجم اللوت للصفقه يساوي مثلا 1 لوت فتضع الأمر المراد تنفيذه وإذا كان حجم اللوت مثلا 2 لوت فيقوم بتنفيذ الأمر الآخر وهكذا
بدلا من وضع متغير تيكيت معين لكل صفقه تريد فتحها
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
عندما تفعل صفقه فسوف تأخذ رقم تيكيت تماما كما وضحت أنت ولكن ليس شرط أن يكون هذا التيكيت يساوي 1 لذلك يمكنك تغيير بدلا من وضع الشرط ticketBuy1==1 يمكنك جعله ticketBuy1>0 وكذل بالنسبه لباقي الأوردرات
أو يمكنك إستخدام طريقة أخرى عن طريق البحث بإستخدام الحلقات عن الصفقات المفتوحه ثم تقوم بالمقارنه إذا كان حجم اللوت للصفقه يساوي مثلا 1 لوت فتضع الأمر المراد تنفيذه وإذا كان حجم اللوت مثلا 2 لوت فيقوم بتنفيذ الأمر الآخر وهكذا
بدلا من وضع متغير تيكيت معين لكل صفقه تريد فتحها
تماام كدة
اشكرك اخى الفاضل