النتائج 2,521 إلى 2,535 من 10286
الموضوع: موضوع مخصص للأسئلة البرمجية
- 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);
كود 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 والاستوب كذالك وايضا ونفس المشكله تظهر
اذا اردت الكود كاملا فهو
كود 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]);
كود 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);
}
بالنسبه للإكسبرت
طريقة كتابتك للكود خاطئة فلا يمكن إستخدام عملية العطف || بهذا الطريقه لكن يجب تفصيلها
كود PHP:if(Ask==buysl||Bid==buys1||Ask==SeLLsl||Bid==SeLLsl){CloseOrders();}
- 30-07-2012, 12:21 PM #2527
رد:موضوع مخصص للأسئلة البرمجية
استاذ أسامة ، فـ الاكسيبرت المرفق عند تفعيل خاصية Reversed_Multiplier2 يتم فتح صفقات المضاعفات العكسية عن طريق وضع أوامر معلقة ، ووضعت هذه الشروط لفتح الصفقات
كود 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