طلب مساعدة بتصحيح خطا في برمجة اكسبريت
الاخوة خبراء برمجة الاكسبريتات
انا احاول ان اتعلم برمجة الاكسبريتات منذ بضعة ايام وليس لدي باع في الموضوع وبعد قراءة الدروس الموجودة في المنتدى حاولت كتابة اكسبريت بسيط كتجربة اولى
فكرة الاكسبريت هي بعد كل شمعة ساعة هابطة اذا بعد عشر دقائق من افتتاح الشمعة التالية اذا كان السعر اقل من ربع جسم الشمعة الهابطة فيفتح اورد بيع ويقوم باغلاقة في نهاية الساعة
وبعد كل شمعه صاعدة اذا كان السعر لم ينزل بعد عشر دقائق اكثر من ربع جسم الشمعه السابقة فيفتح اوردر شراء ويغلقه بنهاية الساعة
وكتبت الاكسبريت بالشكل الاتي:
كود PHP:
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
extern int Step=10;
extern double Lots=0.1;
int Magicnumber=55555;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(Minute()<5 && MyOrdersTotal(Magicnumber)>0)
{
CloseOrders(Magicnumber);
}
double hropen=iOpen(Symbol(),PERIOD_H1,1);
double hrclose=iClose(Symbol(),PERIOD_H1,1);
double hrhigh=iHigh(Symbol(),PERIOD_H1,1);
double hrlow=iLow(Symbol(),PERIOD_H1,1);
if(Minute()==10 && hropen>hrclose && MyOrdersTotal(Magicnumber)==0)
{
double E=(hropen-hrclose)*0.25;
double k=E+hrclose;
if (Minute()==10 && Bid<k && MyOrdersTotal(Magicnumber)==0)
{
double SELLSL=hropen+Step*Point;
double SELLTP=Bid-(SELLSL-Bid);
OrderOpenPrice(Symbol(),OP_SELL,Lots,Bid,2,SELLSL,SELLTP,"",Magicnumber,0,Green);
}
}
if(Minute()==10 && hropen<hrclose && MyOrdersTotal(Magicnumber)==0)
{
double Z=(hrclose-hropen)*0.25;
double F=hrclose-Z;
if (Minute()==10 && Ask>F && MyOrdersTotal(Magicnumber)==0)
{
double BUYSL=hropen-Step*Point;
double BUYTP=Ask+(Ask-SELLSL);
OrderOpenPrice(Symbol(),OP_BUY,Lots,Ask,2,BUYSL,BUYTP,"",Magicnumber,0,Red);
}
}
return(0);
}
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);
}
int CloseOrders(int Magic)
{
int total = OrdersTotal()-1;
for (int cnt = total ; cnt >= 0 ; cnt--)
{
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol())
{
if (OrderType()==OP_BUY)
{
OrderClose(OrderTicket(),OrderLots(),Bid,2);
}
if (OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,2);
}
}
}
return(0);
}
ويظهر لي الخطأ التالي والذي اعتقد انه خاص بالاقواس ولكن لم اعرف تصحيحه فارجو المساعدة وتصحيح الخطا لغرض التعلم مع وافر الشكر والتقدير
')' - wrong parameters
رد: طلب مساعدة بتصحيح خطا في برمجة اكسبريت
رد: طلب مساعدة بتصحيح خطا في برمجة اكسبريت
أخي العزيز
لا مشكلة عندك بالأقواس
المشكلة هي أنك استخدمت OrderOpenPrice لفتح الصفقة .
وهذا خطأ
استبدلها بالوظيفة الصحيحة OrderSend
رد: طلب مساعدة بتصحيح خطا في برمجة اكسبريت
اقتباس:
المشاركة الأصلية كتبت بواسطة عبدالكريم
السلام عليكم ورحمة الله
معلومة بسيطة الى ان يأتي الخبراء ويساعدوك
اضغط بدبل كليك على اي خطأ , تخرج لك علامة تخبرك اين مكان الخطأ
انظر الشرح بالصورة
وفقك الله
شكرا لك اخي على اهتمامك وردك وبارك الله فيك
رد: طلب مساعدة بتصحيح خطا في برمجة اكسبريت
اقتباس:
المشاركة الأصلية كتبت بواسطة وضاح عطار
أخي العزيز
لا مشكلة عندك بالأقواس
المشكلة هي أنك استخدمت OrderOpenPrice لفتح الصفقة .
وهذا خطأ
استبدلها بالوظيفة الصحيحة OrderSend
الاستاذ وضاح
شرفني اهتمامك وردك وكلامك 100% ما شاء الله عليك
ولساني عاجز عن الشكر لمساعدتك وتعاونك
بارك الله فيك ووسع رزقك
:015::015::015: