رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
السلام عليكم و رحمة الله
كنت أريد داله تقوم بحساب اللوت تلقائيا بناءا على متغير خارجي مثلا لكل ١٠٠ دولار أضع ١٠ سنت
Extern double Per_100_usd=0.01 ;
وبالتالي تحسب الداله الرصيد إذا كان ٢٠٠ دولار تجعل اللوت ٢٠ سنت و إذا كان ١١٠٠ دولار تحسب اللوت ٠,١١ أي دولار و١٠ سنت .. و هكذا بحيث يعاود الحساب كل زياده في الرصيد بمقدار ١٠٠ دولار ..
و اريد أن أضع شرطا بحيث لا يتم فتح صفقه في اول ساعتين او اربع ساعات من إفتتاح السوق مباشرة يوم الاحد او الاثنين على حسب المنصه .
وجزاكم الله كل خير .
وعليكم السلام ورحمة الله وبركاته
سوف تقوم بقسمة رأس المال على المبلغ الذي تريده فمثلا هنا تريده كل 100 دولار بالتالي سيكون
كود PHP:
int Percent=AccountBalance()/100;
لاحظ أني إستخدم في تعريف المتغير عدد صحيح لأني أريد حساب الأرقام الصحيحة فقط وليس العشرية
ثم سيكون حجم اللوت للصفقة هو
كود PHP:
double Lot=Percent*Per_100_usd;
بالنسبة لفتح الصفقة يوم الإفتتاح بعد ساعة معينه سوف تضع الشرط
كود PHP:
if(DayOfWeek()=1&&TimeCurrent()-iTime(Symbol(),1440,0)<3600*WaitingHours)return;
الرقم 1 يعني يوم الإثنين 0 يعني يوم الأحد
هذا الشرط معناه إذا كان الفرق بين التوقيت الحالي و توقيت إفتتاح شمعة يوم الإثنين أقل من عدد ساعات معينه
في المتغير WaitingHours فلن يكمل الإكسبرت عمله
طبعا تضع الشرط في بداية كود الإكسبرت
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة Mr. Nothing
إذا كان بدي الاكسبيرت يفتح الصفقة ضمن مسافة لا تبعد أكثر من 20 نقطة عن سعر معين
هل هذا الكود صحيح
كود:
double trigger=1.3500
خطأ
التصحيح
كود PHP:
MathAbs(Trigger-Ask)<20*Point;
لماذا إستخدمت الداله MathAbs
حتى إذا كان السعر مثلا Trigger أقل من سعر الاسك بالتالي النتيجة ستكون 20 نقطة لكن بالسالب فبدلا من أن أضيف شرطين مره الرقم بالسالب ومره بالموجب قمت بإستخدام الداله فهي تقوم بتحويل القيمه السالبه مباشرة إلى القيمه الموجبه
والرقم 20 يحول إلى قيمة النقطه
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة kira-h
السلام عليكم
تحية طيبة أساتذتي الكرام
أريد اكسبيرت خاص بإدارة الصفقاتـ منفصل عن باقي عشرة اكسبيرتات ، يعمل كالتالي :
لنفترض رأسمال 1000 دولار
عند تحقق اكويتي 1100 دولار (يعني ربح 100 دولار ) يتم إغلاق جميع الصفقات المفعلة والمعلقة على جميع العملات مع تغيير الماجيك نمبر لكل عملة بإضافة رقم 1، ويتم تغيير هدف الاكويتي القديم بالهدف الجديد بإضافة 100 دولار يعني يصبح الهدف الجديد 1200 دولار... وهكذا...
الاكسبيرت بالمرفقات أرجو التصحيح
وجزاكم الله خيرا :asvc:
وعليكم السلام ورحمة الله وبركاته
إضافة الشروط صحيحه ما هو الخطأ الذي ظهر لك ؟
2 مرفق
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
وعليكم السلام ورحمة الله وبركاته
إضافة الشروط صحيحه ما هو الخطأ الذي ظهر لك ؟
اقتباس:
المشاركة الأصلية كتبت بواسطة kira-h
جزاك الله خيرا أستاذي العزيز
فقط أريد التأكد من صحة الشروط
جاري التجربة ديمو وإذا وجد خطأ ما سأطرحه هنا لمعالجته...
شكرا جزيلا
بعد التجربة ديمو لم يعمل الاغلاق الكلي للصفقات والأوامر المعلقة وبذلك قمت بتعديل مفصل لدوال الاغلاق للصفقات المفعلة وللصفقات المعلقة
وتمت التجربة مرة أخرى واشتغل الاغلاق كما يجب لكن لم تعمل جزئية الماجيك نمبر للاكسبيرتات حيث استمرت في المضاعفات ولم تبدأ باللوت الأساسي
ثم قمت بتعديل الماجيك نمبر حيث جعلتها موحدة بالاكسبيرتات باسم MagicNo عوض MagicNo1;MagicNo2 .... والماجيك نمبر الرئيسي MagicNo_EA
كود PHP:
extern double MagicNo_EA=1;
int MagicNo;
int start()
{
MagicNo=MagicNo+MagicNo_EA;
double acc=AccountEquity();
if(Win_Stop&&(acc >=NewEquity))
{
CloseDeleteAll();
CloseDeleteAllCurrent();
CloseDeleteAllNonPending();
CloseDeleteAllCurrentNonPending();
MagicNo_EA=MagicNo_EA+1;
NewEquity=NewEquity+USDProfit;
}
Comment(NewEquity);
}
وتمت التجربة ديمو مرة أخرى وحدث نفس الشي بعد الاغلاق الكلي لم تلغى المضاعفات وهذا دليل على أن الماجيك نمبر للاكسبيرتات لم يتغير !!! مع العلم أن دالة المضاعفات بالاكسبيرتات معرفة بالماجيك نمبر
كود PHP:
if((OrderType()==OP_BUY||OrderType()==OP_SELL)&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
وبالنسبة لهدف الاكويتي يعمل جيدا ويتغير عند كل إغلاق كلي
أرجو مراجعة الاكسبيرت (بالمرفقات)
ولك الشكر الجزيل أستاذي الكريم :eh_s(7):
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
السلام عليكم
الطريقه السابقه لم تفي بالغرض ...
أنا فكرت بعمل داله تحفظ و تعود بالسعر الذي يكون الفرق بينه و بين آخر مستوى دخول عدد نقاط أحددها خارجيا LastOrderOpenPrice
كود:
double D(){
for(int i=OrdersTotal()-1; i>=0; i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
double D= MathAbs(Bid-LastOrderOpenPrice() ) ;
return(D );
}
}
return(0);
}
ثم قمت بتعريف متغير يقوم بحساب الفرق بين السعر الحالي و قمة الداله السابقة
كود PHP:
double d=MathAbs(Close[0]-D() );
ووضعت ف الشروط
كود PHP:
if ( d>=LastOrderDef *point )
ومسحت هذا الشرط كود PHP:
&& Time0!=Time[0]
حتى لو تحققت الشروط في نفس الشمعه يقوم بفتح الصفقات .. فما الخطأ لأن بعد هذه الخطوات لا يقوم الإكسبيرت بفتح الصفقه بعد الإبتعاد عن المستوى الأخير بعدد النقاط كما أريد ...
و جزاكم الله خيرا .
أستاذ أسامه لو تكرمت لي سؤال آخر بخلاف الذي في الإقتباس .. و أعتذر لأني أتعبتك معي .. في ميزان حسناتك إن شاء الله ..
حاولت أقوم بعمل دوال و حساب معادله تعود لي بسعر التعادل في حالة فتح عقود من نفس النوع بأحجام مختلفه و من نقاط مختلفه كالتبريد المضاعف .. لأقوم بحسابها مثلا بعد خمس مضاعفات و أغلق الصفقات عند هذا السعر .
فقمت بتعريف خمس دوال كل داله تعود بسعر الافتتاح للصفقه رقم 1 و أخرى تعود بسعر الافتتاح للصفقه رقم2 حتى الصفقه خمسه .. و كذلك خمس دوال أخرى لتعود بحجم اللوت لكل صفقه ...
كود PHP:
double openprice1()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==1) {double openprice1 =OrderOpenPrice() ;}
}
}
return( openprice1);
}
/////////////////
double openprice2()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==2) {double openprice2 =OrderOpenPrice() ;}
}
}
return( openprice2);
}
////////////////////
double openprice3()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==3) {double openprice3 =OrderOpenPrice() ;}
}
}
return( openprice3);
}
//////////////////////
double openprice4()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==4) {double openprice4 =OrderOpenPrice() ;}
}
}
return( openprice4);
}
//////////////////////
double openprice5()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==5) {double openprice5 =OrderOpenPrice() ;}
}
}
return( openprice5);
}
//////////////////
//+++++++++++++++
/////////////////
double lot1()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==1) {double lot1 =OrderLots() ;}
}
}
return( lot1);
}
/////////////////
double lot2()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==2) {double lot2 =OrderLots() ;}
}
}
return( lot2);
}
/////////////////
double lot3()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==3) {double lot3 =OrderLots() ;}
}
}
return( lot3);
}
/////////////////
double lot4()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==4) {double lot4 =OrderLots() ;}
}
}
return( lot4);
}
/////////////////
double lot5()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==5) {double lot5 =OrderLots() ;}
}
}
return( lot5);
}
/////////////////////
ثم قمت بتعريف متغير لحساب المعادله : حاصل جمع(كل عقد مضروب في نقطة الدخول ) مقسوما على مجموع العقود ( أي أقوم بضرب كل لوت في سعر افتتاح الصفقه الخاصه به ثم أجمعهم مع بعضهم و أقوم بقسمة الناتج على مجموع اللوتات للصفقات جميعها ).. و يقوم بحساب المعادله في حالة كانت الصفقات مساويه ل5 صفقات ..
كود PHP:
if( orderstotal()>=5)
{
double equi =( (lot1()*openprice1() )+(lot2()*openprice2() )+(lot3()*openprice3() )+(lot4()*openprice4() ) +(lot5()*openprice5() ) ) / ( lot1()+lot2()+lot3()+lot4()+lot5() ) ;
}
و لكن يعطيني خطأ في الجورنال بأن ناتج القسمه زيرو zero divide ..
فما الأخطاء بالأكواد أو الفكره بارك الله فيك ..
و جزاك الله كل خير .
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة kira-h
تمام أستاذي
أريد عند تحقق هدف الاكويتي يتم تغيير ماجيك نمبر للاكسبيرتات الأخرى لكي تبدأ باللوت الأساسي (لأنها اكسبيرتات مضاعفات )
إذن هل يجب دمج كود اكسبيرت إدارة الصفقات مع باقي الاكسبيرتات ؟ يعني كل اكسبيرت يكون فيه إغلاق كلي وتغيير الماجيك نمبر الخاص به.. ؟
يوجد حل أسهل و إستخدام الداله GlobalVariableSet لتغيير الماجيك نمبر ثم يمكن لاحقا أن تستدعي الإكسبرتات الأخرى القيم بالداله GlobalVariableGet
مثلا ستقوم بتعديل كود هذا الإكسبرت إلى
كود PHP:
static int Num;
if(Win_Stop&&(acc >=NewEquity))
{
CloseDeleteAll();
CloseDeleteAllCurrent();
CloseDeleteAllNonPending();
CloseDeleteAllCurrentNonPending();
NewEquity=NewEquity+USDProfit;
Num++;
GlobalVariableSet("AddedNumber",Num);
}
بالتالي في كل مره سيغلق الصفقات سوف يزيد قيمة الرقم Num
ثم في الإكسبرتات الأخرى سوف يقوم قيمة الماجيك نمبر لكل واحد
كود PHP:
newMagicNumber=MagicNumber+GlobalVariableGet("AddedNumber");
أو طبعا حسب المتغيرات الذي قمت بوضعها حيث MagicNumber هو الماجيك نمبر الأصلي
و newMagicNumber هو الماجيك نمبر الجديد الذي ستستخدمه مع الصفقات
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
يوجد حل أسهل و إستخدام الداله GlobalVariableSet لتغيير الماجيك نمبر ثم يمكن لاحقا أن تستدعي الإكسبرتات الأخرى القيم بالداله GlobalVariableGet
مثلا ستقوم بتعديل كود هذا الإكسبرت إلى
كود PHP:
static int Num;
if(Win_Stop&&(acc >=NewEquity))
{
CloseDeleteAll();
CloseDeleteAllCurrent();
CloseDeleteAllNonPending();
CloseDeleteAllCurrentNonPending();
NewEquity=NewEquity+USDProfit;
Num++;
GlobalVariableSet("AddedNumber",Num);
}
بالتالي في كل مره سيغلق الصفقات سوف يزيد قيمة الرقم Num
ثم في الإكسبرتات الأخرى سوف يقوم قيمة الماجيك نمبر لكل واحد
كود PHP:
newMagicNumber=MagicNumber+GlobalVariableGet("AddedNumber");
أو طبعا حسب المتغيرات الذي قمت بوضعها حيث MagicNumber هو الماجيك نمبر الأصلي
و newMagicNumber هو الماجيك نمبر الجديد الذي ستستخدمه مع الصفقات
بارك الله فيك حبيبي اسامة وجزاك الله خير
الله يوفقك في الدنيا والآخرة
:eh_s(7):
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
أستاذ أسامه لو تكرمت لي سؤال آخر بخلاف الذي في الإقتباس .. و أعتذر لأني أتعبتك معي .. في ميزان حسناتك إن شاء الله ..
حاولت أقوم بعمل دوال و حساب معادله تعود لي بسعر التعادل في حالة فتح عقود من نفس النوع بأحجام مختلفه و من نقاط مختلفه كالتبريد المضاعف .. لأقوم بحسابها مثلا بعد خمس مضاعفات و أغلق الصفقات عند هذا السعر .
فقمت بتعريف خمس دوال كل داله تعود بسعر الافتتاح للصفقه رقم 1 و أخرى تعود بسعر الافتتاح للصفقه رقم2 حتى الصفقه خمسه .. و كذلك خمس دوال أخرى لتعود بحجم اللوت لكل صفقه ...
كود PHP:
double openprice1()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==1) {double openprice1 =OrderOpenPrice() ;}
}
}
return( openprice1);
}
/////////////////
double openprice2()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==2) {double openprice2 =OrderOpenPrice() ;}
}
}
return( openprice2);
}
////////////////////
double openprice3()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==3) {double openprice3 =OrderOpenPrice() ;}
}
}
return( openprice3);
}
//////////////////////
double openprice4()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==4) {double openprice4 =OrderOpenPrice() ;}
}
}
return( openprice4);
}
//////////////////////
double openprice5()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==5) {double openprice5 =OrderOpenPrice() ;}
}
}
return( openprice5);
}
//////////////////
//+++++++++++++++
/////////////////
double lot1()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==1) {double lot1 =OrderLots() ;}
}
}
return( lot1);
}
/////////////////
double lot2()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==2) {double lot2 =OrderLots() ;}
}
}
return( lot2);
}
/////////////////
double lot3()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==3) {double lot3 =OrderLots() ;}
}
}
return( lot3);
}
/////////////////
double lot4()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==4) {double lot4 =OrderLots() ;}
}
}
return( lot4);
}
/////////////////
double lot5()
{
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
if (orderstotal()==5) {double lot5 =OrderLots() ;}
}
}
return( lot5);
}
/////////////////////
ثم قمت بتعريف متغير لحساب المعادله : حاصل جمع(كل عقد مضروب في نقطة الدخول ) مقسوما على مجموع العقود ( أي أقوم بضرب كل لوت في سعر افتتاح الصفقه الخاصه به ثم أجمعهم مع بعضهم و أقوم بقسمة الناتج على مجموع اللوتات للصفقات جميعها ).. و يقوم بحساب المعادله في حالة كانت الصفقات مساويه ل5 صفقات ..
كود PHP:
if( orderstotal()>=5)
{
double equi =( (lot1()*openprice1() )+(lot2()*openprice2() )+(lot3()*openprice3() )+(lot4()*openprice4() ) +(lot5()*openprice5() ) ) / ( lot1()+lot2()+lot3()+lot4()+lot5() ) ;
}
و لكن يعطيني خطأ في الجورنال بأن ناتج القسمه زيرو zero divide ..
فما الأخطاء بالأكواد أو الفكره بارك الله فيك ..
و جزاك الله كل خير .
أولا لديك أخطاء في إستدعاء حجم لوت و سعر كل صفقة معينه
أنت وضعت الشرط
كود PHP:
if (orderstotal()==3) {double openprice3 =OrderOpenPrice() ;}
وهذا يعني إذا كان عدد الصفقات يساوي 3 وليس أن هذه الصفقة رقم 3
فالصحيح هو كمثال
كود PHP:
double openprice3()
{
int OrderNumber;
for (int i =0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() )
{
OrderNumber++;
if (OrderNumber==3) {
double openprice3 =OrderOpenPrice() ;
return( openprice3);
}
}
}
return( 0);
}
ثانيا بالنسبه للفكره لا تحتاج لعمل خمس دوال لحساب الصفقات ويكفي دالة واحده ستحسب مجموع كل سعر مضروب في حجم اللوت
وتحسب نقطة التعادل مباشرة
مثال هذه دالة قمت بعمله و إستخدامها في إكسبرتاتي سابقا
كود PHP:
double BreakPoint(int type)
{
double Price;double Lots;
for(int i=0;i<=OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber&&OrderType()==type)
{
Price+=OrderOpenPrice()*OrderLots();
Lots+=OrderLots();
}
}
if(Lots!=0) return(Price/Lots);
}
بالنسبه للسؤال الأول فأرجو أن تشرحه مره أخرى
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
جزاك الله كل خير أستاذي العزيز ...
بالنسبه للسؤال بارك الله فيك .. كنت أريد عندما تفتح صفقه بمجرد لمس مستوى معين لا يتم فتح أخرى إلا بعد تحرك السعر عدد نقاط معين من آخر مستوى سواء في نفس الشمعه أو بعد إغلاقها .. و الإقتباس فيه مافكرت في عمله ..
أرجو التصحيح و جزاك الله كل خير
طيب بما أن سعر فتح آخر صفقة هو بمجرد لمس مستوى معين بالتالي لا يوجد داعي لمعرفة سعر المستوى لكن يمكن أن نحدد سعر آخر صفقة تم فتحها سيكون أسهل بما أنهم من نفس النقطه
وستضع الشرط فقط
فلا داعي لعمل أي داله جديده ويكفي أن تستخدم الداله LastOrderOpenPrice
كود PHP:
if(MathAbs(Bid-LastOrderOpenPrice())>LastOrderDef*point )
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة MR.dollar
طيب بما أن سعر فتح آخر صفقة هو بمجرد لمس مستوى معين بالتالي لا يوجد داعي لمعرفة سعر المستوى لكن يمكن أن نحدد سعر آخر صفقة تم فتحها سيكون أسهل بما أنهم من نفس النقطه
وستضع الشرط فقط
فلا داعي لعمل أي داله جديده ويكفي أن تستخدم الداله LastOrderOpenPrice
كود PHP:
if(MathAbs(Bid-LastOrderOpenPrice())>LastOrderDef*point )
تمام أستاذ أسامه
لكن هكذا كما ذكرت حضرتك سيحسب الفرق بين سعر البيد الحالي و سعر دخول آخر صفقه لحظة دخول الصفقه التاليه أي مع تحقق الشروط .. ولو كان الشرط مثلا إعادة لمس نفس المستوى المساوي لنقطة دخول آخر صفقه .. وقتها سيحسب الفرق بين البيد و سعر دخول آخر صفقه و البيد الآن قريب أو مساوى لسعر دخول آخر صفقه .. فأعتقد أنه لن يتحقق الشرط كما أريد .. لذلك كنت قد فكرت سابقا بداله تحفظ السعر أو الفرق عندما يصبح الفرق كما أريده ..
.. وأيضا واجهتني مشكله بالنسبه للشروط كود PHP:
if ( orderstotal()<5 && Time0!=Time[0] && d>=LastOrderDef *point )
فكنت أريد أن يتم فتح صفقه إذا تحققت الشروط في نفس الشمعة دون أن تغلق و في نفس الوقت لا يتم فتح الخمس صفقات دفعه واحده في حالة حذف الشرط
رد:موضوع مخصص للأسئلة البرمجية
اقتباس:
المشاركة الأصلية كتبت بواسطة dentist_hussein
تمام أستاذ أسامه
لكن هكذا كما ذكرت حضرتك سيحسب الفرق بين سعر البيد الحالي و سعر دخول آخر صفقه لحظة دخول الصفقه التاليه أي مع تحقق الشروط .. ولو كان الشرط مثلا إعادة لمس نفس المستوى المساوي لنقطة دخول آخر صفقه .. وقتها سيحسب الفرق بين البيد و سعر دخول آخر صفقه و البيد الآن قريب أو مساوى لسعر دخول آخر صفقه .. فأعتقد أنه لن يتحقق الشرط كما أريد .. لذلك كنت قد فكرت سابقا بداله تحفظ السعر أو الفرق عندما يصبح الفرق كما أريده ..
.. وأيضا واجهتني مشكله بالنسبه للشروط كود PHP:
if ( orderstotal()<5 && Time0!=Time[0] && d>=LastOrderDef *point )
فكنت أريد أن يتم فتح صفقه إذا تحققت الشروط في نفس الشمعة دون أن تغلق و في نفس الوقت لا يتم فتح الخمس صفقات دفعه واحده في حالة حذف الشرط
طيب الأفضل الآن أن تضيف مستويات المؤشر التي تقوم بالدخول منها إلى الإكسبرت
ما هو المؤشر الذي تستخدمه ؟
بالنسبه للخطأ لديك في الكود السابق الذي قمت بعمله
الداله
سوف تعود بقيمة الفرق بالنقاط فعندما إستخدمتها في الكود
كود PHP:
double d=MathAbs(Close[0]-D() );
فمثلا سيكون القيمه رقم مثل 1.4033
فعندما وضعت الشرط
كود PHP:
if ( d>=LastOrderDef *point )
سيكون شرط خاطئ كأنك تقول 1.4033 أكبر من مثلا 0.0050 أو حسب قيمة المتغير الذي وضعته