النتائج 2,521 إلى 2,535 من 10363
الموضوع: موضوع مخصص للأسئلة البرمجية
- 29-07-2012, 08:41 AM #2521
رد:موضوع مخصص للأسئلة البرمجية
السلام عليكم استاذ اسامه لدى كذا سؤال :-
1-اردت ان اجعل الهدف هو الفرق بين اكبر هاى واقل لو لفترة 20 شمعه سابقه
فجعلت الكود هكذا
وبالنسبه لاوامر الشراء والبيع هكذاكود PHP:int h=iHighest(Symbol(),0,MODE_HIGH,20,0);
int l=iLowest(Symbol(),0,MODE_LOW,20,0);
double tp;
double tppip=(h-l);
فالاحظ انه لا يأتى بالقيمه الصحيحه فمثلا يكون الفرق بين اكبر هاى واكبر للو 30 فيعطينى 6 او 15 وهكذاكود PHP:tp=Ask+tppip*point;
OrderSend(Symbol(),OP_BUY,lots,NormalizeDouble(Ask,digits),3*Q,NormalizeDouble(sl,digits),NormalizeDouble(tp,digits),"ahmed",magicnumber,0,Blue);
tp=Ask-tppip*point;
OrderSend(Symbol(),OP_SELL,lots,NormalizeDouble(Bid,digits),3*Q,NormalizeDouble(sl,digits),NormalizeDouble(tp,digits),"ahmed",magicnumber,0,Red);
وايضا يعطنى باستمرار خطأ 130 على الرغم انى جعلت التيك بروفت كقيمه ثابته 30 والاستوب كذالك وايضا ونفس المشكله تظهر
اذا اردت الكود كاملا فهو
2- فى بعض الاكواد تكتب فى نهاية الدالهكود PHP://+------------------------------------------------------------------+
//| first.mq4 |
//| Copyright 2012, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Ahmed abdelatef"
#property link "Nothing"
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
extern int stoploss=0;
extern int magicnumber=6630;
extern double lots=1;
extern int stocksell=80;
extern int stockbuy=20;
extern bool usemulti=false;
extern double multi=2;
extern int step=20;
double point;
int digits,Q;
int init()
{
if(Digits==5||Digits==3)Q=10;
else Q=1;
if(Digits<4)
{
point=0.01;
digits=2;
}
else
{
point=0.0001;
digits=4;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
void deinit() {
Comment("");
}
int orderstotal(){
int cnt=0;
for(int i =0;i<OrdersTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol() && magicnumber==OrderMagicNumber()){
cnt++;
}
}
return(cnt);
}
datetime time0;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int h=iHighest(Symbol(),0,MODE_HIGH,20,0);
int l=iLowest(Symbol(),0,MODE_LOW,20,0);
double openprice,newlot,lot;int s;double sl; double tp;
double tppip=(h-l)*5;
if(usemulti){
for(s=0;s<OrdersTotal();s++){
OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==magicnumber&&OrderType()==OP_BUY){
openprice=OrderOpenPrice();lot=OrderLots();
}
}
}
{
newlot=multi*lot;
if(Ask<=openprice-step*point&&orderstotal()>=1){
tp=Ask+tppip*point;
if(stoploss==0){sl=0;}else{sl=Ask-stoploss*point;}
OrderSend(Symbol(),OP_BUY,newlot,NormalizeDouble(Ask,digits),3*Q,NormalizeDouble(sl,digits),NormalizeDouble(tp,digits),"ahmed",magicnumber,0,GreenYellow);
}
}
for(s=0;s<OrdersTotal();s++){
OrderSelect(s,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderType()==OP_SELL&&OrderMagicNumber()==magicnumber){
openprice=OrderOpenPrice(); lot=OrderLots();
}
}
{
newlot=lot*multi;
if(Bid>=openprice+step*point&&orderstotal()>=1){
tp=Ask-tppip*point;
if(stoploss==0){sl=0;}else{sl=Bid+stoploss*point;}
OrderSend(Symbol(),OP_SELL,newlot,NormalizeDouble(Bid,digits),3*Q,NormalizeDouble(sl,digits),NormalizeDouble(tp,digits),"ahmed",magicnumber,0,Chocolate);
}
}
/////////////////////////
double stock1=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);
if(stock1<stockbuy&&lastorder()>0){
if(orderstotal()<1){
if(stoploss==0){sl=0;}else{sl=Ask-stoploss*point;}
tp=Ask+tppip*point;
if(time0!=Time[0]){
OrderSend(Symbol(),OP_BUY,lots,NormalizeDouble(Ask,digits),3*Q,NormalizeDouble(sl,digits),NormalizeDouble(tp,digits),"ahmed",magicnumber,0,Blue);
time0=Time[0];
PlaySound("alert.wav");
}
}
}
/////////////////////////////
if(stock1>stocksell&&lastorder()!=1){
if(orderstotal()<1){
if(stoploss==0){sl=0;}else{sl=Bid+stoploss*point;}
tp=Ask-tppip*point;
if(time0!=Time[0]){
OrderSend(Symbol(),OP_SELL,lots,NormalizeDouble(Bid,digits),3*Q,NormalizeDouble(sl,digits),NormalizeDouble(tp,digits),"ahmed",magicnumber,0,Red);
time0=Time[0];
PlaySound("alert.wav");
}
}
}
}
/////////////////////////////
int lastorder(){
for(int i=OrdersHistoryTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol()==Symbol()&&OrderMagicNumber()==magicnumber){
return(OrderType());
}
}
return(2);
}
//+------------------------------------------------------------------+
او هكذاكود PHP:return(2)
اليس الامر ريتيرن يعنى انه سيفحص الداله ويرجع بالقيمه المطلوبه واذا كانت هكذاكود PHP:return(-1)
اى سيظل يبحث فى الداله باستمرار اذا فما الفرق بينهماكود PHP:return(0)
3- اريد فهم عمل الحلقه جيدا فماذا تعنى الحلقه بهذا الشكل مثلا
وايضا فى بعض الاوقات مثلا عند ايجاد اخر عقد مفتوح تستخدم الداله بالتناقص هكذاكود PHP:for(int i =OrdersTotal()-1;i>=0;i--){
ومرات اخرى تستخدمه بالتزايد هكذاكود PHP:double LastLot(){
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
return(OrderLots());
}
}
return(0);
}
فما الفرق بينهماكود PHP:double LastLot(){
double L;
for(int i=0;i<OrdersHistoryTotal();i++){
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
L=OrderLots();
}
}
return(L);
واسف على الاطالهآخر تعديل بواسطة مبدع فوركس ، 29-07-2012 الساعة 08:44 AM
- 29-07-2012, 10:07 AM #2522
رد:موضوع مخصص للأسئلة البرمجية
تم التعديل ، ولى سؤال هل يمكن إضافة نوع آخر من المضاعفات مثل مضاعفات فيبوناتشي لمثل هذا النوع من الأوامر المعلقة وكيف يتم ذلك فـ حالة إستخدام الحلقة for
استاذ اسامة انا أعلم سبب ظهور رسالة Function is not referenced
ولكن أنا أريد معرفة لماذا لايتم إغلاق الصفقة على سعر إغلاق الشمعة السابقة ، وقمت بعمل اكسيبرت فقط لهذا الشرط فـ المرفقـات ، ومرفق صورة للصفقات التى لم يتم إغلاقها حسب الشروط
وأنا قمت بتعريف المتغيرات التالية خارج دالة ستارت
ووضع الشرط التالى داخل دالة ستارتكود PHP:double buys1,SeLLsl;
هل يوجد خطـأ فـ الشرط السابق وما سبب مشكلة عدم الإغلاق على سعر إغلاق الشمعة السابقةكود PHP:if(Ask||Bid==buys1||SeLLsl){CloseOrders();}
- 29-07-2012, 09:31 PM #2523
وعليكم السلام ورحمة الله وبركاته
أولا لديك خطأ في حاسب الفرق بين الهاي واللو خلال 20 شمعه
الداله iHighest و iLowest تعود برقم الشمعه التي تحقق عندها الهاي واللو وبعد أن تعرف رقم الشمعه يجب أن تستخدم رقم الشمعه لمعرفة قيمة الهاي واللو لها
ثم ستكون الأوامركود PHP:int h=iHighest(Symbol(),0,MODE_HIGH,20,0);
int l=iLowest(Symbol(),0,MODE_LOW,20,0);
double tp;
double tppip=(High[h]-Low[l]);
return تعود بالقيمة الموجوده بين القوسين سواء كانت 0 أو -1 أو 2 أو أي قيمة فهي تنهي الداله وتعود بهذه القيمهكود PHP:tp=Ask+tppip;
OrderSend(Symbol(),OP_BUY,lots,NormalizeDouble(Ask,digits),3*Q,NormalizeDouble(sl,digits),NormalizeDouble(tp,digits),"ahmed",magicnumber,0,Blue);
tp=Ask-tppip;
OrderSend(Symbol(),OP_SELL,lots,NormalizeDouble(Bid,digits),3*Q,NormalizeDouble(sl,digits),NormalizeDouble(tp,digits),"ahmed",magicnumber,0,Red);
بالنسبه للحلقات أنصحك بمراجعة هذه المشاركه
https://forum.arabictrader.com/showt...=1#post1698141
- 30-07-2012, 01:02 AM #2524
شكرا جزيلا لك على الاضاح استاذ اسامه وجزاك الله خيرااا
- 30-07-2012, 04:48 AM #2525
مستر دولار عايز الجملة دي لو سمحت ومش عارف صيغتها مثلا
Sami2=SamiNo3=MagicNo = ???????
extern int MagicNo=5566
وضعت علامة الأستفهام عشان تفهم قصدي أيه المفروض يكتب مكان علامة الأستفهام ، والرقم 5566 اقصد به اي رقم سليم بدون كسور ، وشكرا لكآخر تعديل بواسطة Jmeel ، 30-07-2012 الساعة 04:58 AM
- 30-07-2012, 06:01 AM #2526
يمكنك إضافة أي نوع مضاعفات إذا عرفت المعادله الرياضيه التي تعتمد عليها
بالنسبه لمضاعفات فيبوناتشي فهي تعتمد على مجموع حجم لوت آخر صفقتين مفتوحه
في هذه الحاله أنا أقوم بعمل داله لحساب حجم اللوت الجديد
مثال
كود PHP:double fibo_lots()
{
double newlot;
for(int i=OrdersTotal();i>=0;i--){
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber){
newlot+=OrderLots();
N++;
if(N==2)return(newlot);
}
}
return(newlot);
}
for(int i=0;i<=NumOF_Additional_LIMITSTOPLots;i++){
if(OpenPrice(OP_BUY)!=0 &&orderstotal2(OP_BUYLIMIT)<i && NumOF_Additional_LIMITSTOP_Lots==true){
double lot=fibo_lots();
OrderSend(Symbol(),OP_BUYLIMIT,lot,OpenPrice(OP_BUY)-Space*point*i,5*Q,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits)," EA",MagicNumber,0,Blue);
}
بالنسبه للإكسبرت
طريقة كتابتك للكود خاطئة فلا يمكن إستخدام عملية العطف || بهذا الطريقه لكن يجب تفصيلها
أيضا سؤال هل تريد إغلاق الصفقه على سعر إغلاق الشمعه السابقه أم على سعر إغلاق الشمعه السابقه للشمعه التي تم فتح الصفقه فيها بحيث لن تتغير حتى لو بعد مرور 10 شمعات ولم تغلق الصفقه بعدكود PHP:if(Ask==buysl||Bid==buys1||Ask==SeLLsl||Bid==SeLLsl){CloseOrders();}
- 30-07-2012, 12:21 PM #2527
رد:موضوع مخصص للأسئلة البرمجية
استاذ أسامة ، فـ الاكسيبرت المرفق عند تفعيل خاصية Reversed_Multiplier2 يتم فتح صفقات المضاعفات العكسية عن طريق وضع أوامر معلقة ، ووضعت هذه الشروط لفتح الصفقات
ولكن يظهر خطـأ OrderSend error 130 سواء وضع تارجت او استوب او لم يتم وضعهم ، وايضـا لايتم وضع الأوامر المعلقة على الشارتكود PHP:if(OpenPrice(OP_BUY)!=0&&orderstotal2(OP_SELLLIMIT)<1&&LastOrderType()==OP_BUY&&Reversed_Multiplier2==true){
OrderSend(Symbol(),OP_SELLLIMIT,lot*2,OpenPrice(OP_BUY)-Space*point,5*Q,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits)," EA",MagicNumber,0,Red);}
if(OpenPrice(OP_SELL)!=0&&orderstotal2(OP_BUYLIMIT)<1&&LastOrderType()==OP_SELL&&Reversed_Multiplier2==true){
OrderSend(Symbol(),OP_BUYLIMIT,lot*2,OpenPrice(OP_SELL)+Space*point,5*Q,NormalizeDouble(SL,digits),NormalizeDouble(TP,digits)," EA",MagicNumber,0,Blue);}
- 31-07-2012, 02:11 AM #2528
- 31-07-2012, 02:58 AM #2529
- 31-07-2012, 03:01 AM #2530
لو توافرت شروط الدخول كلها ولكن السعر ابتعد 100 نقطه عن التنكن وبذلك يكون الدخول متأخر جدا ولذلك اريد الاكسبيرت ان لا يدخل فى اى صفقة تحققت فيها الشروط والسعر بعيد عن التنكن 75 نقطة مثلا .. فما هى صيغة الكود؟
- 31-07-2012, 03:24 AM #2531
- 31-07-2012, 05:41 AM #2532
- 31-07-2012, 05:44 AM #2533
- 31-07-2012, 05:54 AM #2534
- 31-07-2012, 06:06 AM #2535
المواضيع المتشابهه
-
موضوع مخصص للاكسبيرتات اللتي يستخدمها الاعضاء على الحقيقي,,عندك اكسبيرت ممتاز ضعه هنا
By محمد معمو in forum برمجة المؤشرات واكسبرتات التداول - Experts Advisor EAمشاركات: 11آخر مشاركة: 15-12-2023, 02:03 PM -
عااااااااااااجل ( موضوع مخصص للفرص الفورية)!!!
By عاشق الذبذبـة in forum توقعات وتوصيات سوق العملاتمشاركات: 280آخر مشاركة: 27-08-2009, 10:30 PM
الأكثر زيارة
رد مع اقتباس