النتائج 1 إلى 15 من 24
الموضوع: مشاكلم مع OrderSend وماعليه تدل؟
- 28-10-2017, 05:50 PM #1
مشاكلم مع OrderSend وماعليه تدل؟
بسم الله الرحمن الرحيم
موضوع مخصص لدالة OrderSend فقط
------------------
لماذا احيانا يضع خبيرك عدة اوامر رغم انه من المفترض ان يضع امر واحد؟
اذا لديك عشرات الصفقات على زوج محدد او ازواج كثيرة---كيف تجعل الخبير يحدد صفقة واحدة تريد انت منه ان يغلقها او يدخلها
دائما هيكل البرنامج ثلاث دوال OnInit-OnTimer-OnDenit
امسح من ذاكرتك start-init-deinit
- 28-10-2017, 06:51 PM #2
تمام يا غالى ومتابع معاك وشكرا ع مجهودك
- 28-10-2017, 08:19 PM #3
نريد ان نصمم برنامجا يضع:
1) امر ماركت اذا لايوجد امر على زوج الفرنك ين chfjpy شراء
2) ويضع امرا اخر على زوج اليورو دولار eurusd شرط ان لايكون في المنصة صفقة على الباوند دولار gbpusd
3) واذا اغلق صفقة الفرنك ين على الهدف 100 نقطة يضع امر عكسي بيع
4) بينما لو عكس 100 نقطة يدخل شراء اضافي بضعف اللوتات شرط ان تكون صفقة الدولار اغلقت او لايوجد صفقات عليه.
5) والصفقة الاخيرة اذا تنفذت تكون كابح ضد تنفيذ صفقات على اليورو دولار.
من يحاول برمجتها؟؟
لديك طريقتين
1) مذهب مستر دولار الشافعي من خلال الماجك نمبر
2) مذهب فيلسوف البادية الحنبلي من خلال الكومنت
لاحظ طالما صفقات مشروطة ببعض -- نتذكر الكوابح او الفرامل supressorsآخر تعديل بواسطة فيلسوف البادية ، 28-10-2017 الساعة 08:23 PM
- 29-10-2017, 09:53 AM #4
بسم الله
ساحاول ان ابرمجها بالطريقتين باذن الله
on start ساحاول بها
ولكن
on timer صعبه لاني لا اعرفها لكن ساحاول
اعطيني وقت يوم يومين او اعلن الانسحاب والهزيمه
استمرو في الموضوع ولن ادخله حتى اكتب الكود كامل وارفقه لكي ارى اخطأءي
الله يستر من كميه الاخطاْ التي ستضهر ستكون رقم قياسي جديد
وكميه العك والتخبيص بالاكواد سيجعل الميتا يرفع علي قضيه عدم ممارسه البرمجهآخر تعديل بواسطة السمحان ، 29-10-2017 الساعة 10:06 AM
- 29-10-2017, 11:03 AM #5
بحاجة للدوال التالية :
1- عدد الصفقات المفعلة بدلالة اسم الزوج (يجب الإنتباه للواحق في بعض المنصات EURUSD و EURUSDf )
2- دالة تعيد لوت آخر صفقة مفعلة بدلالة اسم الزوج
3- دالة تعيد ربح آخر صفقة مفعلة بالنقاط بدلالة اسم الزوج
4- دالة تعيد ربح أخر صفقة مغلقة بدلالة اسم الزوج (البحث في الهيستوري )
- 29-10-2017, 11:11 AM #6
بسم الله
اول جزء
كود PHP:#property copyright "badya,"
#property link ""
#property version "1.00"
#property strict
extern double Lot=0.01;
extern double TakeProfit=10;
extern double StopLoss=50.0;
extern int MagicNumber=10;
double openpriceb,openprices,lot_b,lot_s;
double Price_sell,Price_buy,Lotss,Lotsb;
double pt,pr;
string T;
double point;
int P;
extern string comment="TR";
string Sym1="EURUSD";
string Sym2="GBPUSD";
string Sym3="CHFJPY";
int OnInit()
{
if(Digits==5||Digits==4)
{
pt=0.0001;
if(Digits<4)point=0.01;
else point=0.0001;
if(Digits==5||Digits==3)P=10;
else P=1;
}
else{
pt=0.01;
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//----------------------------------------NEW
if (ordestotalchfjpy()<1){
int ddaa1=OrderSend(Sym3,OP_BUY,Lot,Ask,3,Bid-StopLoss*pt,Bid+TakeProfit*pt,comment,MagicNumber,0,clrLawnGreen) ;
}
if (ordestotalgbbpusd()==0){
if (ordestotaleur()<1){
int ddaa2=OrderSend(Sym1,OP_BUY,Lot,Ask,3,Bid-StopLoss*pt,Bid+TakeProfit*pt,comment,MagicNumber,0,clrLawnGreen) ;
}
}
}
//+------------------------------------------------------------------+
//------------------------------------------
//-------------------------------------------------------------------------
int ordestotalchfjpy()
{
int total=0;
for(int a=0;a<=OrdersTotal();a++){
if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Sym3&&MagicNumber==OrderMagicNumber()&&OrderType()==OP_BUY){
total++;
}
}
return(total);
}
int ordestotalgbbpusd()
{
int total=0;
for(int a=0;a<=OrdersTotal();a++){
if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Sym2&&MagicNumber==OrderMagicNumber()&&OrderType()<=1 ){
total++;
}
}
return(total);
}
int ordestotaleur()
{
int total=0;
for(int a=0;a<=OrdersTotal();a++){
if(OrderSelect(a,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Sym1&&MagicNumber==OrderMagicNumber()&&OrderType()<=1 ){
total++;
}
}
return(total);
}
آخر تعديل بواسطة السمحان ، 29-10-2017 الساعة 11:16 AM
- 29-10-2017, 05:17 PM #7
ممتاز شباب المحاولات--المسألة معقدة والهدف واضح جدا--المنطق--لاحظ الزعبلة بربط صفقات زوج معين بوضع زوج اخر--وبالتالي من يستطيع برمجتها يستطيغ برمجة اي شيء اخر--لأن اي شيء اخر اسهل بكثير.
on timer صعبه لاني لا اعرفها لكن ساحاول
الفكرة لابد في هذه الحالة نستخدم ايضا OnInit من اجل اعداد الثواني -- لاحظ الاسم OnTimer ترجمته بالعربي المؤقت او عداد الساعة
ميزة OnTimer انك انت تقرر متى يتم التحديث على فترات زمنية مستاوية---مثللا كل 1 ثانية او 5 ثانية
اذهب الى File-new-ExpertsAdvisors البرنامج يكتب كل شيء نيابة عنك
OnTick على التكات---مثل start القديمة
OnTimer على زمن التحديث الذي تحدده انت
- 29-10-2017, 05:41 PM #8
هذه دالة يمكن بها تحديد اي صفقة تبقى شروط المقارنات بسيطة ....لكن لم انتبه لفكرة ontimer مشكور جدا لهذه الفكرة ...كنت اعمل Dashboard لاستراتيجية معينة وكانت المنصة تغص لانه كنت اضعها في ontick ...... الآن حلت المشكلة ...
كود PHP:[LEFT]
double LastOrder(string info,int type=-1)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
bool select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol(),
mm=OrderComment();
int mn=OrderMagicNumber(),
ty=OrderType();
double lo=OrderLots(),
op=OrderOpenPrice(),
pt=OrderProfit(),
tp=OrderTakeProfit(),
sl=OrderStopLoss();
datetime om=OrderOpenTime();
if(sy==Symbol()&&mn==MagicNo)
{
if(ty==type||type==-1)
{
if(info=="Lots")return(lo);
else if(info=="OpenPrice")return(op);
else if(info=="Profit")return(pt);
else if(info=="Type")return(ty);
else if(info=="TP")return(tp);
else if(info=="SL")return(sl);
else if(info=="OpenTime")return(om);
else if(info=="Comment")return(mm);
}
}
}
[/LEFT]
- 29-10-2017, 05:45 PM #9
انتظر افتتاح السوق اخي وضاح-لنرى المشاكل الخفية والتي هي هدفنا هنا--ظاهريا كودك على المنطق
on start ساحاول بها
OnStart للسكربتات وليس الاكسبيرتات
الاكسبيرتات اما تستخدم الطريقة القديمة start من غير On
او تستخدم OnTimer او OnTick
راجع ردي الاول في موضوع الهلالي عن الفباء البرمجة
- 29-10-2017, 06:53 PM #10
- 29-10-2017, 07:18 PM #11
- 29-10-2017, 07:23 PM #12
- 29-10-2017, 09:42 PM #13
- 29-10-2017, 09:47 PM #14
الكود اعلاه---هل هو اخي الهلالي يضع اوامر كثيرة بدلا من امر واحد بناء على ما تريد؟
يعني بالعربي هل المشاكل تحدث في RUN-TIME (اثناء التطبيق)
ننتظر افتتاح السوق ايضاً
- 29-10-2017, 10:49 PM #15