رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة wajdyss
اخواني الكرام
اريد ان اعرف اعلى عدد متواصل لضرب الاستوبات
هذا الطلب مهم في الاكسبيرتات التي تعتمد على المضاعفات ، لذلك من المهم معرفة أعلى عدد لضرب الوقف المتتالي ، والغرض منه تحديد رأس المال المطلوب لتجنب المارجن كول
ومهم جداً ان يعمل ايضاً عند اختبار الاكسبيرت (باك تيست)
(طبعاً يجب ان يكون هناك متغيرين صحيحين قيمتهما الابتدائية صفر ، الاول لتخزين عدد الاستوبات المتتالية وعند تحقيق الهدف ترجع قيمته "صفر"، والآخر لتخزين اكثر عدد متوالي لضرب الوقف (للمقارنة بعد كل ضرب استوب وتخزين القيمة الاعلى لضرب الاستوب في هذا المتغير)
ولكن السؤال هو: كيف نعرف انه ضرب الوقف او حقق الهدف (ما هي الدالة المناسبة لها)؟
:016:
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة wajdyss
اخواني الكرام
اريد ان اعرف اعلى عدد متواصل لضرب الاستوبات
هذا الطلب مهم في الاكسبيرتات التي تعتمد على المضاعفات ، لذلك من المهم معرفة أعلى عدد لضرب الوقف المتتالي ، والغرض منه تحديد رأس المال المطلوب لتجنب المارجن كول
ومهم جداً ان يعمل ايضاً عند اختبار الاكسبيرت (باك تيست)
(طبعاً يجب ان يكون هناك متغيرين صحيحين قيمتهما الابتدائية صفر ، الاول لتخزين عدد الاستوبات المتتالية وعند تحقيق الهدف ترجع قيمته "صفر"، والآخر لتخزين اكثر عدد متوالي لضرب الوقف (للمقارنة بعد كل ضرب استوب وتخزين القيمة الاعلى لضرب الاستوب في هذا المتغير)
ولكن السؤال هو: كيف نعرف انه ضرب الوقف او حقق الهدف (ما هي الدالة المناسبة لها)؟
يمكن ذلك بعدة طرق
منها فحص العمليات المنفذة والمغلقة في جدول صفقات الهيستوري .
أو يمكن ذلك عن طريق عد الصفقات الحالية المنفذة
سوف اتكلم عن هذا الموضوع في دورة الاكسبيرتات إن شاء الله
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة محمود عامر
تستطيع اخبار البرنامج بان يشتري عندما يكون السعر أكبر من افتتاح الشمعة السابقة مثلا بهذا الكود
كود PHP:
if(Ask>Open[1]) { OrderSend >>>>>
و للبيع
كود PHP:
if(Bid>Open[1]) { OrderSend >>>
اشكرك يا العزيز محمود اذا تقصد اننا نعرف السعر الحالي للبرنامج فقط بذكر الاسك والبيدASK,BID
تمام وممكن طبعا نضيفه على اي معادله وتسلم وتسلممممممون
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة ماجد كو
اشكرك يا العزيز محمود اذا تقصد اننا نعرف السعر الحالي للبرنامج فقط بذكر الاسك والبيدASK,BID
تمام وممكن طبعا نضيفه على اي معادله وتسلم وتسلممممممون
نعم هذا صحيح
رد: موضوع مخصص للأسئلة البرمجية
السلام عليكم
يا اخوان لقيت اكسبيرت في ميتا تريدر عملت عليه باك تيست خسر اكثر من 95% من الرصيد في مده قصيره ففكرت اني اعكس الأوامر. فما هوا رئيكم؟
اسم الاسكبيرت Fractal ZigZag Expert.mq4
طبعا انا لا افقه في البرمجة حاولت محاوله فاشله عكست اماكن الباي و السل :0023: قلت يمكن يزبط
بس ما اشتغل معي .
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة wajdyss
اخواني الكرام
اريد ان اعرف اعلى عدد متواصل لضرب الاستوبات
هذا الطلب مهم في الاكسبيرتات التي تعتمد على المضاعفات ، لذلك من المهم معرفة أعلى عدد لضرب الوقف المتتالي ، والغرض منه تحديد رأس المال المطلوب لتجنب المارجن كول
ومهم جداً ان يعمل ايضاً عند اختبار الاكسبيرت (باك تيست)
(طبعاً يجب ان يكون هناك متغيرين صحيحين قيمتهما الابتدائية صفر ، الاول لتخزين عدد الاستوبات المتتالية وعند تحقيق الهدف ترجع قيمته "صفر"، والآخر لتخزين اكثر عدد متوالي لضرب الوقف (للمقارنة بعد كل ضرب استوب وتخزين القيمة الاعلى لضرب الاستوب في هذا المتغير)
ولكن السؤال هو: كيف نعرف انه ضرب الوقف او حقق الهدف (ما هي الدالة المناسبة لها)؟
(تم معرفة الدوال بفضل مجهودات المهندس احمد سليمان)
هذه الدالة تخبرنا إذا كان أخر عملية قام بها الإكسبرت رابحة أم خاسرة
كود PHP:
int GetLastTradeProfit()
{
static int LastTicket = 0;
int Tick = 0;
datetime LastOrderTime = 0;
//Get History Trades Count
int HistroyCount = OrdersHistoryTotal();
if( HistroyCount == 0 )
{
Print("Error reading the histroy or there's no histroy trades!");
return(0);
}
//Get the last trade!
for (int cnt = 0 ; cnt < HistroyCount ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_HISTORY);
if(OrderMagicNumber() == MagicNumber)
{
if(OrderCloseTime()>LastOrderTime)
{
LastOrderTime = OrderCloseTime();
Tick = OrderTicket();
}
}
}
if(Tick>-1 && Tick!= LastTicket)
{
LastTicket = Tick;
if(OrderSelect(Tick,SELECT_BY_TICKET,MODE_HISTORY))
{
if (OrderProfit()== 0 || OrderClosePrice() == OrderOpenPrice()) return(0);
if (OrderProfit()>0) return(1);
if (OrderProfit()<0) return(-1);
}
else
{
return(0);
}
}
return(0);
}
هاتين الدالتين تخبرنا بعدد الصفقات الخاسرة و الرابحة
كود PHP:
int GetHistoryProfitTrades(int magic)
{
int result = 0;
for(int i=0;i<HistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderMagicNumber()==magic)
{
if(OrderProfit()>0) result++;
}
}
return(result);
}
int GetHistoryLossTrades(int magic)
{
int result = 0;
for(int i=0;i<HistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderMagicNumber()==magic)
{
if(OrderProfit()<0) result++;
}
}
return(result);
}
تحياتي
رد: موضوع مخصص للأسئلة البرمجية
رد: موضوع مخصص للأسئلة البرمجية
اخواني الكرام هذا السؤال اعتقد بأنه صعب قليلا
كيف نعرف لاكسبيرت خط ترند معين بحيث ان هذا الخط يصل لنقطتين او ثلاث نقط مقاومه ومش بس كذلك :ohmy: وبأن يقوم بالشراء او البيع عند الكسر او الارتداد :0006:شو صعبه موهيك :asvc:وتسلممممممممممون
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة wajdyss
اخواني الكرام
لقد قمت بصنع مؤشر وهو على الرابط التالي
والمطلوب هو كتابة الاسعار بجانب الخطوط
ما الدالة المناسبة لها
:016:
رد: موضوع مخصص للأسئلة البرمجية
السلام عليكم
ما هي الداله التي تقوم بجمع الصفقات المفتوحه بالبيع والشراء كل على حدا
تحياتي
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة wajdyss
اخواني الكرام
لقد قمت بصنع مؤشر وهو على الرابط التالي
والمطلوب هو كتابة الاسعار بجانب الخطوط
ما الدالة المناسبة لها
استخدم الوظيفة التالية :
كود PHP:
void SetPrice(string name, datetime Tm, double Prc, color clr)
{
if(ObjectFind(name) == -1)
{
ObjectCreate(name, OBJ_ARROW, 0, Tm, Prc);
ObjectSet(name, OBJPROP_COLOR, clr);
ObjectSet(name, OBJPROP_WIDTH, 1);
ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
}
else
{
ObjectSet(name, OBJPROP_TIME1, Tm);
ObjectSet(name, OBJPROP_PRICE1, Prc);
ObjectSet(name, OBJPROP_COLOR, clr);
ObjectSet(name, OBJPROP_WIDTH, 1);
ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
}
}
ويصبح مؤشرك كالتالي :
كود PHP:
//+------------------------------------------------------------------+
//| wajdyss lines.mq4 |
//| Copyright © 2008, wajdyss|
//| [email protected] |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, wajdyss"
#property link "[email protected]"
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Lime
#property indicator_color2 Lime
#property indicator_color3 Lime
#property indicator_color4 Lime
#property indicator_color5 Lime
#property indicator_color6 Lime
#property indicator_color7 Lime
#property indicator_color8 Lime
extern int how_long=10000; // bars to be counted (-1 - all the bars)
extern double pips=125;
extern double startprice=1.5000;
//---- indicator buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
Comment("wajdyss_lines");
SetIndexBuffer(0, ExtMapBuffer1);
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(1, ExtMapBuffer2);
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(2, ExtMapBuffer3);
SetIndexStyle(2, DRAW_LINE);
SetIndexBuffer(3, ExtMapBuffer4);
SetIndexStyle(3, DRAW_LINE);
SetIndexBuffer(4, ExtMapBuffer5);
SetIndexStyle(4, DRAW_LINE);
SetIndexBuffer(5, ExtMapBuffer6);
SetIndexStyle(5, DRAW_LINE);
SetIndexBuffer(6, ExtMapBuffer7);
SetIndexStyle(6, DRAW_LINE);
SetIndexBuffer(7, ExtMapBuffer8);
SetIndexStyle(7, DRAW_LINE);
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
Comment("");
return(0);
}
int start()
{
int cnt=0;
int begin_bar=0;
double pips2=pips*Point;
if (how_long == -1) {
begin_bar = Bars;
} else {
begin_bar = how_long;
}
for (cnt = begin_bar; cnt >= 0; cnt--) {
ExtMapBuffer1[cnt] = startprice;
ExtMapBuffer2[cnt] = startprice+(pips2);
ExtMapBuffer3[cnt] = startprice+(pips2*2);
ExtMapBuffer4[cnt] = startprice+(pips2*3);
ExtMapBuffer5[cnt] = startprice-(pips2);
ExtMapBuffer6[cnt] = startprice-(pips2*2);
ExtMapBuffer7[cnt] = startprice-(pips2*3);
ExtMapBuffer8[cnt] = startprice-(pips2*4);
}
SetPrice("level1", Time[0],ExtMapBuffer1[0], indicator_color1);
SetPrice("level2", Time[0],ExtMapBuffer2[0], indicator_color2);
SetPrice("level3", Time[0],ExtMapBuffer3[0], indicator_color3);
SetPrice("level4", Time[0],ExtMapBuffer4[0], indicator_color4);
SetPrice("level5", Time[0],ExtMapBuffer5[0], indicator_color5);
SetPrice("level6", Time[0],ExtMapBuffer6[0], indicator_color6);
SetPrice("level7", Time[0],ExtMapBuffer7[0], indicator_color7);
SetPrice("level8", Time[0],ExtMapBuffer8[0], indicator_color8);
return(0);
}
void SetPrice(string name, datetime Tm, double Prc, color clr)
{
if(ObjectFind(name) == -1)
{
ObjectCreate(name, OBJ_ARROW, 0, Tm, Prc);
ObjectSet(name, OBJPROP_COLOR, clr);
ObjectSet(name, OBJPROP_WIDTH, 1);
ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
}
else
{
ObjectSet(name, OBJPROP_TIME1, Tm);
ObjectSet(name, OBJPROP_PRICE1, Prc);
ObjectSet(name, OBJPROP_COLOR, clr);
ObjectSet(name, OBJPROP_WIDTH, 1);
ObjectSet(name, OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE);
}
}
//+------------------------------------------------------------------+
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة ماجد كو
اخواني الكرام هذا السؤال اعتقد بأنه صعب قليلا
كيف نعرف لاكسبيرت خط ترند معين بحيث ان هذا الخط يصل لنقطتين او ثلاث نقط مقاومه ومش بس كذلك :ohmy: وبأن يقوم بالشراء او البيع عند الكسر او الارتداد :0006:شو صعبه موهيك :asvc:وتسلممممممممممون
اطلع على كود الاكسبيرت TrendMeLeaveMe_Gold
فيه جواب على سؤالك الثاني
الجواب الأول يجب أن تجعل الاكسبيرت يكتشف هذه النقاط الثلاثة للترند وبعدها عملية رسمه ستكون بسيطة .
رد: موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة njjar
السلام عليكم
ما هي الداله التي تقوم بجمع الصفقات المفتوحه بالبيع والشراء كل على حدا
تحياتي
وعليكم السلام
هذه الوظيفة تحسب لك عدد الصفقات المفتوحة بشكل عام :
كود PHP:
int MyOrdersTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
c++;
}
}
return(c);
}
وهذه الوظيفة تحسب لك عدد صفقات الشراء المفتوحة فقط :
كود PHP:
int MyOrdersBuyTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && OrderType()==OP_Buy)
{
c++;
}
}
return(c);
}
وهذه الوظيفة تحسب لك عدد صفقات البيع المفتوحة فقط :
كود PHP:
int MyOrdersSellTotal(int Magic)
{
int c=0;
int total = OrdersTotal();
for (int cnt = 0 ; cnt < total ; cnt++)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && OrderType()==OP_Sell)
{
c++;
}
}
return(c);
}
رد: موضوع مخصص للأسئلة البرمجية
استفسار لو سمحتم
فى حالة استراتيجية المضاعفات فى الاتجاهين هل يحدث فرق الاسبريد بين صفقتى البيع والشراء مشكلة
يعنى مثلا لو مضاعفة شراء هل يجب ان اغير معدل الاهداف والستوب لوس عن صفقات مضاعفات البيع للتوائم مع الشراء 00ام ان ذلك ليس ب مشكلة ( اخشى ان يضرب الاستوب فى سلسلة منهم قبل ان يتحقق الهدف فى السلسلة الاخرى وتعكس على خسارة بسبب فرق السبريد :doh:) انا بجربها بشكل يدوى بس يمكن اكون مش مركز فلم اصل لنتيجة:no3:
رد: موضوع مخصص للأسئلة البرمجية
استاذ وضاح بارك الله فيك
ما قصدته اخي الكريم هو البروفت للصفقات المفتوحه للشراء والبيع وليس عدد الصفقات
جزاك الله كل خير