اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex

اف اكس ارابيا..الموقع الرائد فى تعليم فوركس Forex (https://fx-arabia.com/vb/index.php)
-   منتدى المؤشرات و الاكسبيرتات (https://fx-arabia.com/vb/forumdisplay.php?f=6)
-   -   مشكل بعد الإنتهاء من برمجة اكسبيرت بصيط (https://fx-arabia.com/vb/showthread.php?t=51349)

babouche007 16-11-2015 02:43 AM

مشكل بعد الإنتهاء من برمجة اكسبيرت بصيط
 
السلام عليكم إخواني
لقد بدأت في تطبيق ماتعلمته في لغة mql4
قمت ببرمجة اكسبيرت إغلاق الشمعة 1 > هاي الشمعة 2 ===> شراء
لكن لاحضت أن صفقة واحدة هي التي تفتح (لاتفتح صفقات على الأزواج الأخرى)
لقد قمت بتجربت تغيير إسم الإكسبيرت و أيضا الماجيك كود لكن بدون جدوى
كود:

//+------------------------------------------------------------------+
//|                                                      boujie.mq4 |
//|                                      Copyright 2015, Hamza Corp. |
//|                                            https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Hamza Corp."
#property link      "https://www.mql5.com"
#property version  "1.00"
#property strict

input string s1 = "--------------Trend--------------";
extern int TMperiod = 200;
extern int TMshift = 0;
extern int TMmethod = 0;
extern int TMapplied = 0;
input string s2 = "---------Money Management--------------";
input int TP = 30 ;
input int SL = 15 ;
input double lots = 0.1 ;
input int  Magic = 11111 ;
 double pclose = iClose(Symbol(),PERIOD_D1,1);
double popo = iClose(Symbol(),0,1);
double t ;
//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  double ticksize = MarketInfo (Symbol(),MODE_TICKSIZE);
if ( ticksize == 0.00001 || 0.001 )
  t = ticksize * 10;
else
  t = ticksize ;
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
 
 
  double Tnow = iMA(NULL,0,TMperiod,TMshift,TMmethod,TMapplied,1);
 
//---
  if(Close[1]>High[2] ){
  if(OrdersTotal()==0)
  bool Buy = OrderSend(NULL,OP_BUY,lots,Ask,3,Ask-(SL*t),Ask+(TP*t),NULL,Magic,0,Blue);
  }
  if(Close[1]<Low[2] ){
  if(OrdersTotal()==0)
  bool n=OrderSend(Symbol(),OP_SELL,lots,Bid,3,Bid+(SL*t),Bid-(TP*t),NULL,Magic,0,Red);
  }
 
  }
//+------------------------------------------------------------------+

أرجو المساعدة

اسلام العوامى 16-11-2015 11:39 AM

رد: مشكل بعد الإنتهاء من برمجة اكسبيرت بصيط
 
اقتباس:

المشاركة الأصلية كتبت بواسطة babouche007 (المشاركة 837998)
السلام عليكم إخواني
لقد بدأت في تطبيق ماتعلمته في لغة mql4
قمت ببرمجة اكسبيرت إغلاق الشمعة 1 > هاي الشمعة 2 ===> شراء
لكن لاحضت أن صفقة واحدة هي التي تفتح (لاتفتح صفقات على الأزواج الأخرى)
لقد قمت بتجربت تغيير إسم الإكسبيرت و أيضا الماجيك كود لكن بدون جدوى
كود:

//+------------------------------------------------------------------+
//|                                                      boujie.mq4 |
//|                                      Copyright 2015, Hamza Corp. |
//|                                            https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Hamza Corp."
#property link      "https://www.mql5.com"
#property version  "1.00"
#property strict

input string s1 = "--------------Trend--------------";
extern int TMperiod = 200;
extern int TMshift = 0;
extern int TMmethod = 0;
extern int TMapplied = 0;
input string s2 = "---------Money Management--------------";
input int TP = 30 ;
input int SL = 15 ;
input double lots = 0.1 ;
input int  Magic = 11111 ;
 double pclose = iClose(Symbol(),PERIOD_D1,1);
double popo = iClose(Symbol(),0,1);
double t ;
//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  double ticksize = MarketInfo (Symbol(),MODE_TICKSIZE);
if ( ticksize == 0.00001 || 0.001 )
  t = ticksize * 10;
else
  t = ticksize ;
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
 
 
  double Tnow = iMA(NULL,0,TMperiod,TMshift,TMmethod,TMapplied,1);
 
//---
  if(Close[1]>High[2] ){
  if(OrdersTotal()==0)
  bool Buy = OrderSend(NULL,OP_BUY,lots,Ask,3,Ask-(SL*t),Ask+(TP*t),NULL,Magic,0,Blue);
  }
  if(Close[1]<Low[2] ){
  if(OrdersTotal()==0)
  bool n=OrderSend(Symbol(),OP_SELL,lots,Bid,3,Bid+(SL*t),Bid-(TP*t),NULL,Magic,0,Red);
  }
 
  }
//+------------------------------------------------------------------+

أرجو المساعدة

،،،وعليكم السلام ورحمة الله وبركاته،،،

،،،اهلا بك اخى الفاضل ، الخطأ مظلل بالاحمر فى الاقتباس ، يجب استخدام وظيفة خارجية لحساب عدد صفقات الزوج ولكن الكود المستخدم حاليا يقوم بحساب عدد الصفقات المفتوحة على الحساب عموما،،،

،،،تحياتى،،،

babouche007 16-11-2015 04:09 PM

رد: مشكل بعد الإنتهاء من برمجة اكسبيرت بصيط
 
اقتباس:

المشاركة الأصلية كتبت بواسطة اسلام العوامى (المشاركة 838026)


،،،وعليكم السلام ورحمة الله وبركاته،،،

،،،اهلا بك اخى الفاضل ، الخطأ مظلل بالاحمر فى الاقتباس ، يجب استخدام وظيفة خارجية لحساب عدد صفقات الزوج ولكن الكود المستخدم حاليا يقوم بحساب عدد الصفقات المفتوحة على الحساب عموما،،،

،،،تحياتى،،،

أرجو أن تصحح لي خطئي إن لم يكن عندك مانع
وشكرا

اسلام العوامى 16-11-2015 04:37 PM

رد: مشكل بعد الإنتهاء من برمجة اكسبيرت بصيط
 
اقتباس:

المشاركة الأصلية كتبت بواسطة babouche007 (المشاركة 838078)
أرجو أن تصحح لي خطئي إن لم يكن عندك مانع
وشكرا

،،،يتم اضافة وظيفة خارجية لحساب صفقات الزوج الحالى فقط،،،
كود:


  int orderscnt(){
 int cnt=0;
  for(int i =0;i<=OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic){
        cnt++;
      }
    }
  }
    return(cnt);
  }

،،،ثم يتم استبدال السطر الذى تم تظليله بالاحمر فى المشاركة السابقة بالسطر التالى،،،

كود:


if(orderscnt()==0)


babouche007 16-11-2015 05:42 PM

رد: مشكل بعد الإنتهاء من برمجة اكسبيرت بصيط
 
لازال عندي نفس المشكل
الصفقات تفتح فقط على زوج واحد

هل يمكن أن تكون المشكلة من كثرة الأزواج
أو لأني أستخدم إكسبرت آخر على نفس MT4

أرجو المساعدة http://www.borsaat.com/vb/images/smilies/frown.gif


كود:


//+------------------------------------------------------------------+
//|                                                      boujie.mq4 |
//|                                      Copyright 2015, Hamza Corp. |
//|                                            https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Hamza Corp."
#property link      "https://www.mql5.com"
#property version  "1.00"
#property strict

input string s1 = "--------------Trend--------------";
extern int TMperiod = 200;
extern int TMshift = 0;
extern int TMmethod = 0;
extern int TMapplied = 0;
input string s2 = "---------Money Management--------------";
input int TP = 100 ;
input int SL = 100 ;
input double lots = 0.1 ;
input int  Magic = 11111 ;
 
double t ;
//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  double ticksize = MarketInfo (Symbol(),MODE_TICKSIZE);
if ( ticksize == 0.00001 || 0.001 )
  t = ticksize * 10;
else
  t = ticksize ;
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
 
 
 
 
//---
  if(Close[1]>High[2]){
  if(orderscnt()==0)
  bool Buy = OrderSend(NULL,OP_BUY,lots,Ask,3,Ask-(SL*t),Ask+(TP*t),NULL,Magic,0,Blue);
  }
  if(Close[1]<Low[2]){
  if(orderscnt()==0)
  bool n=OrderSend(Symbol(),OP_SELL,lots,Bid,3,Bid+(SL*t),Bid-(TP*t),NULL,Magic,0,Red);
  }
 
  }
//+------------------------------------------------------------------+
 int orderscnt(){
 int cnt=0;
  for(int i =0;i<=OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic){
        cnt++;
      }
    }
  }
    return(cnt);
  }


babouche007 16-11-2015 06:14 PM

رد: مشكل بعد الإنتهاء من برمجة اكسبيرت بصيط
 
هل إدا عدلت في الإكسبرت وضغط على Compile
سوف تتغير الإعداداتها القديمة أوطوماتيكيا في كل زوج لحاط فيها الإكسبرت
أم تبقى محافضة على إعداداتها القديمة
??????????

اسلام العوامى 16-11-2015 06:27 PM

رد: مشكل بعد الإنتهاء من برمجة اكسبيرت بصيط
 
اقتباس:

المشاركة الأصلية كتبت بواسطة babouche007 (المشاركة 838095)
لازال عندي نفس المشكل
الصفقات تفتح فقط على زوج واحد

هل يمكن أن تكون المشكلة من كثرة الأزواج
أو لأني أستخدم إكسبرت آخر على نفس MT4

أرجو المساعدة http://www.borsaat.com/vb/images/smilies/frown.gif


كود:


//+------------------------------------------------------------------+
//|                                                      boujie.mq4 |
//|                                      Copyright 2015, Hamza Corp. |
//|                                            https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, Hamza Corp."
#property link      "https://www.mql5.com"
#property version  "1.00"
#property strict

input string s1 = "--------------Trend--------------";
extern int TMperiod = 200;
extern int TMshift = 0;
extern int TMmethod = 0;
extern int TMapplied = 0;
input string s2 = "---------Money Management--------------";
input int TP = 100 ;
input int SL = 100 ;
input double lots = 0.1 ;
input int  Magic = 11111 ;
 
double t ;
//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  double ticksize = MarketInfo (Symbol(),MODE_TICKSIZE);
if ( ticksize == 0.00001 || 0.001 )
  t = ticksize * 10;
else
  t = ticksize ;
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
 
 
 
 
//---
  if(Close[1]>High[2]){
  if(orderscnt()==0)
  bool Buy = OrderSend(NULL,OP_BUY,lots,Ask,3,Ask-(SL*t),Ask+(TP*t),NULL,Magic,0,Blue);
  }
  if(Close[1]<Low[2]){
  if(orderscnt()==0)
  bool n=OrderSend(Symbol(),OP_SELL,lots,Bid,3,Bid+(SL*t),Bid-(TP*t),NULL,Magic,0,Red);
  }
 
  }
//+------------------------------------------------------------------+
 int orderscnt(){
 int cnt=0;
  for(int i =0;i<=OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
      if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic){
        cnt++;
      }
    }
  }
    return(cnt);
  }


،،،لاتوجد مشكلة فى الكود تمنعه من العمل على اكثر من زوج ، قم مؤقتا بايقاف الاكسبيرت الاخر وقم بوضع الاكسبيرت الحالى على اكثر من زوج مع تغيير الماجيك نمبر،،،

،،،تحياتى،،،

babouche007 17-11-2015 12:15 AM

رد: مشكل بعد الإنتهاء من برمجة اكسبيرت بصيط
 
شكرا يا أستاذ اسلام لقد إشتغل معي جيدا دون تغيير الماجيك نمبر
اليوم أكملت (دورة تعليم البرمجة الاحترافية بلغة mql4) الخاصة بك فوجدت في الدرس 14 الجواب
شكرا على كل ما قدمته لي :)


الساعة الآن 12:34 AM

Powered by vBulletin® Copyright ©2000 - 2024

جميع الحقوق محفوظة الى اف اكس ارابيا www.fx-arabia.com