صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 30
  1. #1
    الصورة الرمزية newegyptian
    newegyptian غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2010
    المشاركات
    78

    افتراضي طلب اكسبرت فتح صفقه مباشره ووضع اوامر معلقه يتم فتحها بالترتيب



    السلام عليكم

    اتمنى منكم عمل هذا الاكسبرت كالتالي

    الاكسبرت يحتوي على
    1- صفقه مباشره يتم فتحها بسعر السوق بمجرد تشغيل الاكسبرت
    2- مجموعه من الاوامر المعلقه ولتكن order1,order2,order3,order4 وهكذا حتى order15 مثلا

    بحيث تكون كلا من الصفقه المباشره ومجموعه الاوامر يتم تحديد الاتي يدويا ومسبقا في اعدادات الاكسبرت قبل تشغيله
    النوع ( بيع او شراء )
    الهدف ( بالنقاط وبتحديد سعر معا )
    الاستوب لوز ( بالهدف وبتحديد السعر معا )
    حجم العقد ( 0.01 او 2.34 ) مثلا


    عند وصول المكسب بالدولار لرقم معين ( يتم تحديده باعدادات الاكسبرت يدويا ومسبقا ) يقوم الاكسبرت باغلاق كل الصفقات المفتوحه والمعلقه

    اهم شئ انه لا يتم فتح الامر المعلق order2 الا اذا كان ال order1 مفعلا قبله بالفعل
    اي ان الاوردرات يتم تفعيلها بالترتيب
    مثلا اذا تم تفعيل الامر المعلق order1 بعد وصول السعر له , يتم فتح الامر المعلق order2 حتى يكون بانتظار التفعيل ( ويكون هذا الامر على البروكر اي غير مخفي عن البروكر )
    اي انه يكون هناك امر واحد فقط مفتوح على البروكر

    ولكم جزيل الشكر


  2. #2
    الصورة الرمزية sem2020
    sem2020 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2012
    المشاركات
    244

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة newegyptian مشاهدة المشاركة


    السلام عليكم

    اتمنى منكم عمل هذا الاكسبرت كالتالي

    الاكسبرت يحتوي على
    1- صفقه مباشره يتم فتحها بسعر السوق بمجرد تشغيل الاكسبرت
    2- مجموعه من الاوامر المعلقه ولتكن order1,order2,order3,order4 وهكذا حتى order15 مثلا

    بحيث تكون كلا من الصفقه المباشره ومجموعه الاوامر يتم تحديد الاتي يدويا ومسبقا في اعدادات الاكسبرت قبل تشغيله
    النوع ( بيع او شراء )
    الهدف ( بالنقاط وبتحديد سعر معا )
    الاستوب لوز ( بالهدف وبتحديد السعر معا )
    حجم العقد ( 0.01 او 2.34 ) مثلا


    عند وصول المكسب بالدولار لرقم معين ( يتم تحديده باعدادات الاكسبرت يدويا ومسبقا ) يقوم الاكسبرت باغلاق كل الصفقات المفتوحه والمعلقه

    اهم شئ انه لا يتم فتح الامر المعلق order2 الا اذا كان ال order1 مفعلا قبله بالفعل
    اي ان الاوردرات يتم تفعيلها بالترتيب
    مثلا اذا تم تفعيل الامر المعلق order1 بعد وصول السعر له , يتم فتح الامر المعلق order2 حتى يكون بانتظار التفعيل ( ويكون هذا الامر على البروكر اي غير مخفي عن البروكر )
    اي انه يكون هناك امر واحد فقط مفتوح على البروكر

    ولكم جزيل الشكر

    اخي لقد طرحت اكسبيرت من انتاجي امس يمكن ان تجربته
    لكنه يعلق اوامر بالعدد الذي تحدده
    ويقوم باغلاق كافة الأوامر بمجرد تحقيق اخر صفقة الربح وهذا اختياري
    جربه واذا اردت تعديل يمكن التعديل
    https://forum.arabictrader.com/t216438.html

  3. #3
    الصورة الرمزية newegyptian
    newegyptian غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2010
    المشاركات
    78

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة sem2020 مشاهدة المشاركة
    اخي لقد طرحت اكسبيرت من انتاجي امس يمكن ان تجربته
    لكنه يعلق اوامر بالعدد الذي تحدده
    ويقوم باغلاق كافة الأوامر بمجرد تحقيق اخر صفقة الربح وهذا اختياري
    جربه واذا اردت تعديل يمكن التعديل
    https://forum.arabictrader.com/t216438.html

    بس مختلف عنه

    اللي اقصده ينفع فيه تحديد هدف واستوب وحجم عقد كل صفقه سواء الاساسيا او المعلقه
    بالاضافه انه بيغلق عند الوصول لربح اجمالي معين يتم تحديده

    شكرا على مشاركتك الجميله

  4. #4
    الصورة الرمزية احمد العابد
    احمد العابد غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    المشاركات
    77

    افتراضي

    ارجوا معذرتكم فانا احاول من شهور ان يستجيب لطلبى ورجائى احد المبرمجيين لاكن من الواضح انشغالهم جميعا لذا ارجوا المعذره فى طرح طلبى هنا فطلبى قريب جدا من الطلب الخاص بهذا الموضوع فهو اكسبريت اوامر معلقه ايضا بمواصفات بسيطه وعاديه دون مضاعفات او اى خصائص اخرى وهو كما يلى

    اكسبريت اوامر معلقه
    مواصفات الاكسبريت المطلوبه
    1-امكانيه فتح صفقه بيع او شراء ماركت بمجرد تفعيل الاكسبريت
    2-تحديد حجم اللوت والربح ووقف الخساره لاوامر الماركت
    3- امكانيه وضع اوامر شراء ستوب

    a- تحديد حجم اللوت لاوامر الشراء
    b-تحديد المسافه بين الاوامر
    c- تحديد الارباح
    d-تحديد وقف الخسائر
    e-تحديد المسافه بين اول امر وسعر السوق
    f-تحديد عدد الاوامر المعلقه للشراء ستوب

    امكانيه وضع اوامر شراء ليمت4

    a-تحديد حجم اللوت لاوامر الشراء
    b-تحديد المسافه بين الاوامر
    c- تحديد الارباح
    d-تحديد وقف الخسائر
    e-تحديد المسافه بين اول امر وسعر السوق
    f-تحديد عدد الاوامر المعلقه للشراء ليمت



    5- امكانيه وضع اوامر بيع ستوب وبيع ليمت بجميع الخيارات السابقه تماما

    6-تكرار وضع اى امر يتم وصوله الى هدفه واغلاقه على ربح ا

    7- ضمان استمراريه
    عمل الاكسبريت دون توقف على الاطلاق وذلك بالحفاظ دائما على اعداد الاوامر المعلقه اعلى واسفل السعر ثابت كما يتم تحدديدها عند بدايه تشغيل الاكسبريت

    8- صدور تنبيه صوتى فقط عند اغلاق اى امر على ربح

    وممكن الاستعانه بهذا الاكسبريت فهو يقوم بكل المتطلبات ما عدا اوامر الماركت واستمراريه عمل الاكسبريت واذا كان الامر متعب لكم فلنكتفى باضافه اوامر الماركت فقط او كما يتيسر لكم والف شكر واعتذر مره اخرى

    extern bool UseHourTrade = false;
    extern int FromHourTrade = 7;
    extern int ToHourTrade = 17;
    extern bool OpenHedgeFirstTime=false;
    extern double HedgeLots=0.1;
    extern int HedgeTP=0;
    extern int HedgeSL=0;
    extern bool AddOrdersAfterClose=true;
    extern bool ReverseClosedOrders=false;
    extern bool CloseIfLastOrderProfit=false;
    extern string S1="BuyStop Orders Settings ";
    extern bool OpenBuyStopOrders=true;
    extern int NumberOfBuyStopOrders=50;
    extern double BuyStopFirstLot=0.1;
    extern int DistanceFromCurrentPriceBS=0;
    extern int DistanceBetweenBuyS=20;
    extern int Distance_AddBuyS=0;
    extern int BuyStopTakeProfit=0;
    extern int BuyStopSL=0;
    extern string S2="BuyLimit Orders Settings";
    extern bool OpenBuyLimitOrders=true;
    extern int NumberOfBuyLimitOrders=50;
    extern double BuyLimitFirstLot=0.1;
    extern int DistanceFromCurrentPriceBL=0;
    extern int DistanceBetweenBuyL=20;
    extern int Distance_AddBuyL=0;
    extern int BuyLimitTakeProfit=0;
    extern int BuyLimitSL=0;
    extern string S3="SellStop Orders Settings";
    extern bool OpenSellStopOrders=true;
    extern int NumberOfSellStopOrders=50;
    extern double SellStopFirstLot=0.1;
    extern int DistanceFromCurrentPriceSS=0;
    extern int DistanceBetweenSellS=20;
    extern int Distance_AddSellS=0;
    extern int SellStopTakeProfit=0;
    extern int SellStopSL=0;
    extern string S4="SellLimit Orders Settings";
    extern bool OpenSellLimitOrders=true;
    extern int NumberOfSellLimitOrders=50;
    extern double SellLimitFirstLot=0.1;
    extern int DistanceFromCurrentPriceSL=0;
    extern int DistanceBetweenSellL=20;
    extern int Distance_AddSellL=0;
    extern int SellLimitTakeProfit=0;
    extern int SellLimitSL=0;
    extern string S5=" Lots Multiplier ";
    extern bool UseMultiplier=true;
    extern bool X_Multiplier=true;
    extern double Multiplier=2;


    extern string S6=" Order Open Time/Price Settings ";
    extern bool HighLowCandle=false;
    extern bool OpenAtChoosenHour=false;
    extern int Hour_=12;
    extern double StartPrice=0;
    extern int Gap=3;

    extern bool OnlyOnce=false;
    extern string S7=" Close and Delete Orders ";
    extern bool FridayOpenOrdersFilter=true;
    extern bool FridayDeleteOrders=false;
    extern bool FridayCloseOrders=false;
    extern int _Hour=20;
    extern bool CloseAfterPassMinutes=false;
    extern int MinutesPass=100;
    extern bool CloseOrdersAfterProfit=true;
    extern bool DeleteOrdersAfterProfit=true;
    extern int Profit=200;
    extern bool CloseOrdersAfterLoss=false;
    extern double Loss=-200;
    extern string S8=" Order Management";

    extern int TrailingStop=0;
    extern int TrailingProfit=0;
    extern int TrailingStep=0;

    extern string S9="Time Filter";
    extern bool FridayCloseEA=false;
    extern int Friday_CloseHour=20;



    bool enter;
    double point;double Price;
    int digits;int i,Q,Qq;
    extern int MagicNumber=2533;

    int init()
    {
    if(OpenBuyStopOrders&&OpenBuyLimitOrders){Q=Number OfBuyLimitOrders+NumberOfBuyStopOrders;}
    else if((OpenBuyStopOrders==false&&OpenBuyLimitOrders)) {Q=NumberOfBuyLimitOrders;}
    else if((OpenBuyStopOrders&&OpenBuyLimitOrders==false)) {Q=NumberOfBuyStopOrders;}
    else{Q=0;}
    if(OpenSellStopOrders&&OpenSellLimitOrders){Qq=Num berOfSellLimitOrders+NumberOfSellStopOrders;}
    else if((OpenSellStopOrders&&OpenSellLimitOrders==false )){Qq=NumberOfSellStopOrders;}
    else if((OpenSellStopOrders==false&&OpenSellLimitOrders )){Qq=NumberOfSellLimitOrders;}
    else{Qq=0;}
    enter=true;
    if(Digits<4)
    {
    point=0.01;
    digits=2;
    }
    else
    {
    point=0.0001;
    digits=4;
    }
    return(0);
    }

    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS deinitialization function |
    //+------------------------------------------------------------------+

    void deinit() {
    Comment("");
    }

    int orderscnt(){
    int cnt=0;
    for(int i =0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber){
    cnt++;
    }
    }
    }
    return(cnt);
    }
    int ordersPen(){
    int cnt=0;
    for(int i =0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()>OP_SE LL){
    cnt++;
    }
    }
    }
    return(cnt);
    }
    int orders(){
    int cnt=0;
    for(int i =0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()<=OP_S ELL){
    cnt++;
    }
    }
    }
    return(cnt);
    }
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS Start function |
    //+------------------------------------------------------------------+
    int start()
    {
    Comment("Programmed by MR.dollar"+"\n"+"منتدى المتداول العربي"+"\n"+"www.arabictrader.com/vb"+"\n"+
    "Number Of Pending Orders = "+ordersPen()+"\n"+"Number Of Market Orders = "+orders()+"\n"+
    "Account Free Margin = "+DoubleToStr(AccountFreeMargin(),2)+"\n"+"Pro fit Value = "+DoubleToStr(AccountProfit(),2));
    bool ss=true;
    if(Qq+Q==orderscnt()&&!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
    TimeHour(TimeCurrent()) < ToHourTrade))&&UseHourTrade){
    DeletePendingOrders();
    }
    if (UseHourTrade){
    if(!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
    TimeHour(TimeCurrent()) < ToHourTrade))){
    Comment("Non-Trading Hours!");
    ss=false;
    }
    }

    if(TrailingStop>0)MoveTrailingStop();
    if(FridayCloseEA&&Hour()>=Friday_CloseHour&&DayOfW eek()==5)
    return;
    /////////////////////////add orders again//////////////////
    if(AddOrdersAfterClose&&orderscnt()>0){
    OpenClosedOrders(OP_BUY);
    OpenClosedOrders(OP_SELL);
    }
    int totalNumber=0;
    //////////////////////////////////////////////////
    if(ss==true&&orderscnt()<1&&(OnlyOnce==false||ente r==true)&&(FridayOpenOrdersFilter==false||DayOfWee k()!=5||Hour()<_Hour)&&(Hour()==Hour_||OpenAtChoos enHour==false)){
    double lastlot;double newlot;double TP,SL;
    lastlot=0;
    if(OpenHedgeFirstTime)
    {
    if(HedgeSL==0){SL=0;}else{SL=Ask-HedgeSL*point;}
    if(HedgeTP==0){TP=0;}else{TP=Ask+HedgeTP*point;}
    OrderSend(Symbol(),OP_BUY,HedgeLots,NormalizeDoubl e(Ask,Digits),3*Q,NormalizeDouble(SL,Digits),Norma lizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Blue);
    if(HedgeSL==0){SL=0;}else{SL=Bid+HedgeSL*point;}
    if(HedgeTP==0){TP=0;}else{TP=Bid-HedgeTP*point;}
    OrderSend(Symbol(),OP_SELL,HedgeLots,NormalizeDoub le(Bid,Digits),3*Q,NormalizeDouble(SL,Digits),Norm alizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Red);
    }
    if(OpenSellLimitOrders){
    for(i=1;i<=NumberOfSellLimitOrders;i++)
    {
    if(UseMultiplier){
    if(X_Multiplier){
    newlot=Multiplier*lastlot;
    }
    else{newlot=lastlot+SellLimitFirstLot;}
    }
    else{newlot=SellLimitFirstLot;}
    if(newlot==0){newlot=SellLimitFirstLot;}
    lastlot=newlot;

    if(StartPrice==0){Price=Bid+(DistanceFromCurrentPr iceSL*point)+(i*DistanceBetweenSellL*point+i*Dista nce_AddSellL*point);}
    else{Price=StartPrice+(DistanceFromCurrentPriceSL* point)+(i*DistanceBetweenSellL*point);}
    if(HighLowCandle){Price=High[1]+(DistanceFromCurrentPriceSL*point)+(i*DistanceBet weenSellL*point);}
    if(SellLimitTakeProfit==0){TP=0;}else{TP=Price-SellLimitTakeProfit*point;}
    if(SellLimitSL==0){SL=0;}else{SL=Price+SellLimitSL *point;}

    if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
    OrderSend(Symbol(),OP_SELLLIMIT,newlot,Price,3,SL, TP,"MR.dollar EA"+totalNumber,MagicNumber,0,Red);
    totalNumber++;
    }
    }
    }

    lastlot=0;
    if(OpenBuyLimitOrders){
    for(i=1;i<=NumberOfBuyLimitOrders;i++)
    {
    if(UseMultiplier){
    if(X_Multiplier){
    newlot=Multiplier*lastlot;
    }
    else{newlot=lastlot+BuyLimitFirstLot;}
    }
    else{newlot=BuyLimitFirstLot;}
    if(newlot==0){newlot=BuyLimitFirstLot;}
    lastlot=newlot;

    if(StartPrice==0){Price=Ask-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point+i*Distance_AddBuyL*po int);}
    else{Price=StartPrice-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point);}
    if(HighLowCandle){Price=Low[1]-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point);}
    if(BuyLimitTakeProfit==0){TP=0;}else{TP=Price+BuyL imitTakeProfit*point;}
    if(BuyLimitSL==0){SL=0;}else{SL=Price-BuyLimitSL*point;}
    if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
    OrderSend(Symbol(),OP_BUYLIMIT,newlot,Price,3,SL,T P,"MR.dollar EA"+totalNumber,MagicNumber,0,Green);
    totalNumber++;
    }
    }
    }
    lastlot=0;
    if(OpenSellStopOrders){
    for(i=1;i<=NumberOfSellStopOrders;i++)
    {
    if(UseMultiplier){
    if(X_Multiplier){
    newlot=Multiplier*lastlot;
    }else{newlot=lastlot+SellStopFirstLot;}
    }else{newlot=SellStopFirstLot;}
    if(newlot==0){newlot=SellStopFirstLot;}
    lastlot=newlot;
    if(StartPrice==0){Price=Bid-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point+i*Distance_AddSellS* point);}
    else{Price=StartPrice-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point);}
    if(HighLowCandle){Price=Low[1]-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point);}
    if(SellStopTakeProfit==0){TP=0;}else{TP=Price-SellStopTakeProfit*point;}
    if(SellStopSL==0){SL=0;}else{SL=Price+SellStopSL*p oint;}
    if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
    OrderSend(Symbol(),OP_SELLSTOP,newlot,Price,3,SL,T P,"MR.dollar EA"+totalNumber,MagicNumber,0,Red);
    totalNumber++;
    }
    }
    }
    lastlot=0;
    if(OpenBuyStopOrders){
    for(i=1;i<=NumberOfBuyStopOrders;i++)
    {
    if(UseMultiplier){
    if(X_Multiplier){
    newlot=Multiplier*lastlot;
    }else{newlot=lastlot+BuyStopFirstLot;}
    }else{newlot=BuyStopFirstLot;}
    if(newlot==0){newlot=BuyStopFirstLot;}
    lastlot=newlot;
    // if(i>1){DistanceFromCurrentPriceBS=0;}
    if(StartPrice==0){Price=Ask+(DistanceFromCurrentPr iceBS*point)+(i*DistanceBetweenBuyS*point+i*Distan ce_AddBuyS*point);}
    else{Price=StartPrice+(DistanceFromCurrentPriceBS* point)+(i*DistanceBetweenBuyS*point);}
    if(HighLowCandle){Price=High[1]+(DistanceFromCurrentPriceBS*point)+(i*DistanceBet weenBuyS*point);}
    if(BuyStopTakeProfit==0){TP=0;}else{TP=Price+BuySt opTakeProfit*point;}
    if(BuyStopSL==0){SL=0;}else{SL=Price-BuyStopSL*point;}
    if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
    OrderSend(Symbol(),OP_BUYSTOP,newlot,Price,3,SL,TP ,"MR.dollar EA"+totalNumber,MagicNumber,0,Green);
    totalNumber++;
    }
    }
    }
    }
    ////////////////////////////////////////////////////
    int m1;

    if(Q+Qq>orderscnt()&&CloseIfLastOrderProfit){
    DeletePendingOrders();
    while(orders()>=1){CloseAllOrders();}
    }
    if (profit()>=Profit)
    {
    if(CloseOrdersAfterProfit){
    while(orders()>=1){CloseAllOrders();
    }
    if(DeleteOrdersAfterProfit){DeletePendingOrders(); }

    }
    }
    if((profit()<Loss&&CloseOrdersAfterLoss)||(CloseAf terPassMinutes&&TimePassed())){
    while(orders()>=1&&m1<20){
    CloseAllOrders();
    DeletePendingOrders();
    m1++;
    }
    }
    if(DayOfWeek()==5&&Hour()>=_Hour){
    if(FridayDeleteOrders==true){
    DeletePendingOrders();}
    if(FridayCloseOrders==true){
    CloseAllOrders();}
    }
    }


    //+------------------------------------------------------------------+
    int TimePassed(){
    for(int i=0;i<=OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
    if((TimeCurrent()-OrderOpenTime())/60>=MinutesPass){
    return(true);
    }
    }
    }
    return(false);
    }
    int CloseAllOrders()
    {
    int total=OrdersTotal();

    for (int cnt = 0 ; cnt < total ; cnt++)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
    {
    if (OrderType()==OP_BUY)
    {
    if(OrderClose(OrderTicket(),OrderLots(),NormalizeD ouble(Bid,digits),3)==false){
    cnt=0;total=OrdersTotal();}
    }
    if (OrderType()==OP_SELL)
    {
    if(OrderClose(OrderTicket(),OrderLots(),NormalizeD ouble(Ask,digits),3)==false){
    cnt=0;total=OrdersTotal();}
    }
    }
    }
    return(0);
    }

    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS TrailingStop |
    //+------------------------------------------------------------------+

    //|---------trailing stop

    void MoveTrailingStop()
    {
    int cnt,total=OrdersTotal();
    for(cnt=0;cnt<total;cnt++)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNumber)
    {
    if(OrderType()==OP_BUY)
    {
    if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOp enPrice()+TrailingProfit*point,digits))
    {
    if((NormalizeDouble(OrderStopLoss(),digits)<Normal izeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blu e);
    }
    }
    }
    else
    {
    if(TrailingStop>0&&NormalizeDouble(Bid+TrailingSte p*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingProfit*point,digits))
    {
    if((NormalizeDouble(OrderStopLoss(),digits)>(Norma lizeDouble(Ask+TrailingStop*point,digits)))||(Orde rStopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Ask+TrailingStop*point,digits),OrderTakeP rofit(),0,Red);
    }
    }
    }
    }
    }
    }
    int DeletePendingOrders()
    {
    int total = OrdersTotal();

    for (int cnt = total-1 ; cnt >= 0 ; cnt--)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && (OrderType()>OP_SELL))
    {
    OrderDelete(OrderTicket());
    }
    }
    return(0);
    }
    //+---------------------------------------------------------------------------------+

    bool CheckOpenedOrders(string comment){
    for(int i=0;i<OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    string com=OrderComment();
    if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
    if(com==comment)return(true);
    }
    }
    return(false);
    }

    void OpenClosedOrders(int type)
    {
    for(int i=0;i<OrdersHistoryTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
    string comment=OrderComment();double open=OrderOpenPrice();
    double lott=OrderLots();double stop=OrderStopLoss();double profit=OrderTakeProfit();

    if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber&&OrderType()==type){
    if(CheckOpenedOrders(comment)==false){
    if((type==OP_BUY&&!ReverseClosedOrders)||(type==OP _SELL&&ReverseClosedOrders)){
    if(Ask>open+MarketInfo(Symbol(),MODE_STOPLEVEL)*Po int){
    OrderSend(Symbol(),OP_BUYLIMIT,lott,open,3,stop,pr ofit,comment,MagicNumber,0,Green);}

    if(Ask<open-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
    OrderSend(Symbol(),OP_BUYSTOP,lott,open,3,stop,pro fit,comment,MagicNumber,0,Green);}
    }
    if((type==OP_SELL&&!ReverseClosedOrders)||(type==O P_BUY&&ReverseClosedOrders)){
    if(Bid>open+MarketInfo(Symbol(),MODE_STOPLEVEL)*Po int){
    OrderSend(Symbol(),OP_SELLSTOP,lott,open,3,stop,pr ofit,comment,MagicNumber,0,Green);}

    if(Bid<open-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
    OrderSend(Symbol(),OP_SELLLIMIT,lott,open,3,stop,p rofit,comment,MagicNumber,0,Green);}
    }
    }
    }
    }
    }


    double profit(){
    double c;
    for(int i=0;i<=OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol()==Symbol()){
    c+=OrderProfit();
    }
    }
    return(c);
    }

  5. #5
    الصورة الرمزية احمد العابد
    احمد العابد غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    المشاركات
    77

    افتراضي

    ارجوا معذرتكم فانا احاول من شهور ان يستجيب لطلبى ورجائى احد المبرمجيين لاكن من الواضح انشغالهم جميعا لذا ارجوا المعذره فى طرح طلبى هنا فطلبى قريب جدا من الطلب الخاص بهذا الموضوع فهو اكسبريت اوامر معلقه ايضا بمواصفات بسيطه وعاديه دون مضاعفات او اى خصائص اخرى وهو كما يلى

    اكسبريت اوامر معلقه
    مواصفات الاكسبريت المطلوبه
    1-امكانيه فتح صفقه بيع او شراء ماركت بمجرد تفعيل الاكسبريت
    2-تحديد حجم اللوت والربح ووقف الخساره لاوامر الماركت
    3- امكانيه وضع اوامر شراء ستوب

    a- تحديد حجم اللوت لاوامر الشراء
    b-تحديد المسافه بين الاوامر
    c- تحديد الارباح
    d-تحديد وقف الخسائر
    e-تحديد المسافه بين اول امر وسعر السوق
    f-تحديد عدد الاوامر المعلقه للشراء ستوب

    امكانيه وضع اوامر شراء ليمت4

    a-تحديد حجم اللوت لاوامر الشراء
    b-تحديد المسافه بين الاوامر
    c- تحديد الارباح
    d-تحديد وقف الخسائر
    e-تحديد المسافه بين اول امر وسعر السوق
    f-تحديد عدد الاوامر المعلقه للشراء ليمت



    5- امكانيه وضع اوامر بيع ستوب وبيع ليمت بجميع الخيارات السابقه تماما

    6-تكرار وضع اى امر يتم وصوله الى هدفه واغلاقه على ربح ا

    7- ضمان استمراريه
    عمل الاكسبريت دون توقف على الاطلاق وذلك بالحفاظ دائما على اعداد الاوامر المعلقه اعلى واسفل السعر ثابت كما يتم تحدديدها عند بدايه تشغيل الاكسبريت

    8- صدور تنبيه صوتى فقط عند اغلاق اى امر على ربح

    وممكن الاستعانه بهذا الاكسبريت فهو يقوم بكل المتطلبات ما عدا اوامر الماركت واستمراريه عمل الاكسبريت واذا كان الامر متعب لكم فلنكتفى باضافه اوامر الماركت فقط او كما يتيسر لكم والف شكر واعتذر مره اخرى

    extern bool UseHourTrade = false;
    extern int FromHourTrade = 7;
    extern int ToHourTrade = 17;
    extern bool OpenHedgeFirstTime=false;
    extern double HedgeLots=0.1;
    extern int HedgeTP=0;
    extern int HedgeSL=0;
    extern bool AddOrdersAfterClose=true;
    extern bool ReverseClosedOrders=false;
    extern bool CloseIfLastOrderProfit=false;
    extern string S1="BuyStop Orders Settings ";
    extern bool OpenBuyStopOrders=true;
    extern int NumberOfBuyStopOrders=50;
    extern double BuyStopFirstLot=0.1;
    extern int DistanceFromCurrentPriceBS=0;
    extern int DistanceBetweenBuyS=20;
    extern int Distance_AddBuyS=0;
    extern int BuyStopTakeProfit=0;
    extern int BuyStopSL=0;
    extern string S2="BuyLimit Orders Settings";
    extern bool OpenBuyLimitOrders=true;
    extern int NumberOfBuyLimitOrders=50;
    extern double BuyLimitFirstLot=0.1;
    extern int DistanceFromCurrentPriceBL=0;
    extern int DistanceBetweenBuyL=20;
    extern int Distance_AddBuyL=0;
    extern int BuyLimitTakeProfit=0;
    extern int BuyLimitSL=0;
    extern string S3="SellStop Orders Settings";
    extern bool OpenSellStopOrders=true;
    extern int NumberOfSellStopOrders=50;
    extern double SellStopFirstLot=0.1;
    extern int DistanceFromCurrentPriceSS=0;
    extern int DistanceBetweenSellS=20;
    extern int Distance_AddSellS=0;
    extern int SellStopTakeProfit=0;
    extern int SellStopSL=0;
    extern string S4="SellLimit Orders Settings";
    extern bool OpenSellLimitOrders=true;
    extern int NumberOfSellLimitOrders=50;
    extern double SellLimitFirstLot=0.1;
    extern int DistanceFromCurrentPriceSL=0;
    extern int DistanceBetweenSellL=20;
    extern int Distance_AddSellL=0;
    extern int SellLimitTakeProfit=0;
    extern int SellLimitSL=0;
    extern string S5=" Lots Multiplier ";
    extern bool UseMultiplier=true;
    extern bool X_Multiplier=true;
    extern double Multiplier=2;


    extern string S6=" Order Open Time/Price Settings ";
    extern bool HighLowCandle=false;
    extern bool OpenAtChoosenHour=false;
    extern int Hour_=12;
    extern double StartPrice=0;
    extern int Gap=3;

    extern bool OnlyOnce=false;
    extern string S7=" Close and Delete Orders ";
    extern bool FridayOpenOrdersFilter=true;
    extern bool FridayDeleteOrders=false;
    extern bool FridayCloseOrders=false;
    extern int _Hour=20;
    extern bool CloseAfterPassMinutes=false;
    extern int MinutesPass=100;
    extern bool CloseOrdersAfterProfit=true;
    extern bool DeleteOrdersAfterProfit=true;
    extern int Profit=200;
    extern bool CloseOrdersAfterLoss=false;
    extern double Loss=-200;
    extern string S8=" Order Management";

    extern int TrailingStop=0;
    extern int TrailingProfit=0;
    extern int TrailingStep=0;

    extern string S9="Time Filter";
    extern bool FridayCloseEA=false;
    extern int Friday_CloseHour=20;



    bool enter;
    double point;double Price;
    int digits;int i,Q,Qq;
    extern int MagicNumber=2533;

    int init()
    {
    if(OpenBuyStopOrders&&OpenBuyLimitOrders){Q=Number OfBuyLimitOrders+NumberOfBuyStopOrders;}
    else if((OpenBuyStopOrders==false&&OpenBuyLimitOrders)) {Q=NumberOfBuyLimitOrders;}
    else if((OpenBuyStopOrders&&OpenBuyLimitOrders==false)) {Q=NumberOfBuyStopOrders;}
    else{Q=0;}
    if(OpenSellStopOrders&&OpenSellLimitOrders){Qq=Num berOfSellLimitOrders+NumberOfSellStopOrders;}
    else if((OpenSellStopOrders&&OpenSellLimitOrders==false )){Qq=NumberOfSellStopOrders;}
    else if((OpenSellStopOrders==false&&OpenSellLimitOrders )){Qq=NumberOfSellLimitOrders;}
    else{Qq=0;}
    enter=true;
    if(Digits<4)
    {
    point=0.01;
    digits=2;
    }
    else
    {
    point=0.0001;
    digits=4;
    }
    return(0);
    }

    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS deinitialization function |
    //+------------------------------------------------------------------+

    void deinit() {
    Comment("");
    }

    int orderscnt(){
    int cnt=0;
    for(int i =0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber){
    cnt++;
    }
    }
    }
    return(cnt);
    }
    int ordersPen(){
    int cnt=0;
    for(int i =0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()>OP_SE LL){
    cnt++;
    }
    }
    }
    return(cnt);
    }
    int orders(){
    int cnt=0;
    for(int i =0;i<OrdersTotal();i++){
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber&&OrderType()<=OP_S ELL){
    cnt++;
    }
    }
    }
    return(cnt);
    }
    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS Start function |
    //+------------------------------------------------------------------+
    int start()
    {
    Comment("Programmed by MR.dollar"+"\n"+"منتدى المتداول العربي"+"\n"+"www.arabictrader.com/vb"+"\n"+
    "Number Of Pending Orders = "+ordersPen()+"\n"+"Number Of Market Orders = "+orders()+"\n"+
    "Account Free Margin = "+DoubleToStr(AccountFreeMargin(),2)+"\n"+"Pro fit Value = "+DoubleToStr(AccountProfit(),2));
    bool ss=true;
    if(Qq+Q==orderscnt()&&!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
    TimeHour(TimeCurrent()) < ToHourTrade))&&UseHourTrade){
    DeletePendingOrders();
    }
    if (UseHourTrade){
    if(!((FromHourTrade < ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade && TimeHour(TimeCurrent()) < ToHourTrade) || (FromHourTrade > ToHourTrade && TimeHour(TimeCurrent()) >= FromHourTrade ||
    TimeHour(TimeCurrent()) < ToHourTrade))){
    Comment("Non-Trading Hours!");
    ss=false;
    }
    }

    if(TrailingStop>0)MoveTrailingStop();
    if(FridayCloseEA&&Hour()>=Friday_CloseHour&&DayOfW eek()==5)
    return;
    /////////////////////////add orders again//////////////////
    if(AddOrdersAfterClose&&orderscnt()>0){
    OpenClosedOrders(OP_BUY);
    OpenClosedOrders(OP_SELL);
    }
    int totalNumber=0;
    //////////////////////////////////////////////////
    if(ss==true&&orderscnt()<1&&(OnlyOnce==false||ente r==true)&&(FridayOpenOrdersFilter==false||DayOfWee k()!=5||Hour()<_Hour)&&(Hour()==Hour_||OpenAtChoos enHour==false)){
    double lastlot;double newlot;double TP,SL;
    lastlot=0;
    if(OpenHedgeFirstTime)
    {
    if(HedgeSL==0){SL=0;}else{SL=Ask-HedgeSL*point;}
    if(HedgeTP==0){TP=0;}else{TP=Ask+HedgeTP*point;}
    OrderSend(Symbol(),OP_BUY,HedgeLots,NormalizeDoubl e(Ask,Digits),3*Q,NormalizeDouble(SL,Digits),Norma lizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Blue);
    if(HedgeSL==0){SL=0;}else{SL=Bid+HedgeSL*point;}
    if(HedgeTP==0){TP=0;}else{TP=Bid-HedgeTP*point;}
    OrderSend(Symbol(),OP_SELL,HedgeLots,NormalizeDoub le(Bid,Digits),3*Q,NormalizeDouble(SL,Digits),Norm alizeDouble(TP,Digits),"MR.dollar EA",MagicNumber,0,Red);
    }
    if(OpenSellLimitOrders){
    for(i=1;i<=NumberOfSellLimitOrders;i++)
    {
    if(UseMultiplier){
    if(X_Multiplier){
    newlot=Multiplier*lastlot;
    }
    else{newlot=lastlot+SellLimitFirstLot;}
    }
    else{newlot=SellLimitFirstLot;}
    if(newlot==0){newlot=SellLimitFirstLot;}
    lastlot=newlot;

    if(StartPrice==0){Price=Bid+(DistanceFromCurrentPr iceSL*point)+(i*DistanceBetweenSellL*point+i*Dista nce_AddSellL*point);}
    else{Price=StartPrice+(DistanceFromCurrentPriceSL* point)+(i*DistanceBetweenSellL*point);}
    if(HighLowCandle){Price=High[1]+(DistanceFromCurrentPriceSL*point)+(i*DistanceBet weenSellL*point);}
    if(SellLimitTakeProfit==0){TP=0;}else{TP=Price-SellLimitTakeProfit*point;}
    if(SellLimitSL==0){SL=0;}else{SL=Price+SellLimitSL *point;}

    if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
    OrderSend(Symbol(),OP_SELLLIMIT,newlot,Price,3,SL, TP,"MR.dollar EA"+totalNumber,MagicNumber,0,Red);
    totalNumber++;
    }
    }
    }

    lastlot=0;
    if(OpenBuyLimitOrders){
    for(i=1;i<=NumberOfBuyLimitOrders;i++)
    {
    if(UseMultiplier){
    if(X_Multiplier){
    newlot=Multiplier*lastlot;
    }
    else{newlot=lastlot+BuyLimitFirstLot;}
    }
    else{newlot=BuyLimitFirstLot;}
    if(newlot==0){newlot=BuyLimitFirstLot;}
    lastlot=newlot;

    if(StartPrice==0){Price=Ask-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point+i*Distance_AddBuyL*po int);}
    else{Price=StartPrice-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point);}
    if(HighLowCandle){Price=Low[1]-(DistanceFromCurrentPriceBL*point)-(i*DistanceBetweenBuyL*point);}
    if(BuyLimitTakeProfit==0){TP=0;}else{TP=Price+BuyL imitTakeProfit*point;}
    if(BuyLimitSL==0){SL=0;}else{SL=Price-BuyLimitSL*point;}
    if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
    OrderSend(Symbol(),OP_BUYLIMIT,newlot,Price,3,SL,T P,"MR.dollar EA"+totalNumber,MagicNumber,0,Green);
    totalNumber++;
    }
    }
    }
    lastlot=0;
    if(OpenSellStopOrders){
    for(i=1;i<=NumberOfSellStopOrders;i++)
    {
    if(UseMultiplier){
    if(X_Multiplier){
    newlot=Multiplier*lastlot;
    }else{newlot=lastlot+SellStopFirstLot;}
    }else{newlot=SellStopFirstLot;}
    if(newlot==0){newlot=SellStopFirstLot;}
    lastlot=newlot;
    if(StartPrice==0){Price=Bid-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point+i*Distance_AddSellS* point);}
    else{Price=StartPrice-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point);}
    if(HighLowCandle){Price=Low[1]-(DistanceFromCurrentPriceSS*point)-(i*DistanceBetweenSellS*point);}
    if(SellStopTakeProfit==0){TP=0;}else{TP=Price-SellStopTakeProfit*point;}
    if(SellStopSL==0){SL=0;}else{SL=Price+SellStopSL*p oint;}
    if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
    OrderSend(Symbol(),OP_SELLSTOP,newlot,Price,3,SL,T P,"MR.dollar EA"+totalNumber,MagicNumber,0,Red);
    totalNumber++;
    }
    }
    }
    lastlot=0;
    if(OpenBuyStopOrders){
    for(i=1;i<=NumberOfBuyStopOrders;i++)
    {
    if(UseMultiplier){
    if(X_Multiplier){
    newlot=Multiplier*lastlot;
    }else{newlot=lastlot+BuyStopFirstLot;}
    }else{newlot=BuyStopFirstLot;}
    if(newlot==0){newlot=BuyStopFirstLot;}
    lastlot=newlot;
    // if(i>1){DistanceFromCurrentPriceBS=0;}
    if(StartPrice==0){Price=Ask+(DistanceFromCurrentPr iceBS*point)+(i*DistanceBetweenBuyS*point+i*Distan ce_AddBuyS*point);}
    else{Price=StartPrice+(DistanceFromCurrentPriceBS* point)+(i*DistanceBetweenBuyS*point);}
    if(HighLowCandle){Price=High[1]+(DistanceFromCurrentPriceBS*point)+(i*DistanceBet weenBuyS*point);}
    if(BuyStopTakeProfit==0){TP=0;}else{TP=Price+BuySt opTakeProfit*point;}
    if(BuyStopSL==0){SL=0;}else{SL=Price-BuyStopSL*point;}
    if((StartPrice==0&&HighLowCandle==false)||(HighLow Candle==true&&Hour()==Hour_+1)||(Close[0]>=StartPrice-Gap*point&&Close[0]<=StartPrice+Gap*point)){
    OrderSend(Symbol(),OP_BUYSTOP,newlot,Price,3,SL,TP ,"MR.dollar EA"+totalNumber,MagicNumber,0,Green);
    totalNumber++;
    }
    }
    }
    }
    ////////////////////////////////////////////////////
    int m1;

    if(Q+Qq>orderscnt()&&CloseIfLastOrderProfit){
    DeletePendingOrders();
    while(orders()>=1){CloseAllOrders();}
    }
    if (profit()>=Profit)
    {
    if(CloseOrdersAfterProfit){
    while(orders()>=1){CloseAllOrders();
    }
    if(DeleteOrdersAfterProfit){DeletePendingOrders(); }

    }
    }
    if((profit()<Loss&&CloseOrdersAfterLoss)||(CloseAf terPassMinutes&&TimePassed())){
    while(orders()>=1&&m1<20){
    CloseAllOrders();
    DeletePendingOrders();
    m1++;
    }
    }
    if(DayOfWeek()==5&&Hour()>=_Hour){
    if(FridayDeleteOrders==true){
    DeletePendingOrders();}
    if(FridayCloseOrders==true){
    CloseAllOrders();}
    }
    }


    //+------------------------------------------------------------------+
    int TimePassed(){
    for(int i=0;i<=OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
    if((TimeCurrent()-OrderOpenTime())/60>=MinutesPass){
    return(true);
    }
    }
    }
    return(false);
    }
    int CloseAllOrders()
    {
    int total=OrdersTotal();

    for (int cnt = 0 ; cnt < total ; cnt++)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol())
    {
    if (OrderType()==OP_BUY)
    {
    if(OrderClose(OrderTicket(),OrderLots(),NormalizeD ouble(Bid,digits),3)==false){
    cnt=0;total=OrdersTotal();}
    }
    if (OrderType()==OP_SELL)
    {
    if(OrderClose(OrderTicket(),OrderLots(),NormalizeD ouble(Ask,digits),3)==false){
    cnt=0;total=OrdersTotal();}
    }
    }
    }
    return(0);
    }

    //+------------------------------------------------------------------+
    //| FUNCTION DEFINITIONS TrailingStop |
    //+------------------------------------------------------------------+

    //|---------trailing stop

    void MoveTrailingStop()
    {
    int cnt,total=OrdersTotal();
    for(cnt=0;cnt<total;cnt++)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if(OrderType()<=OP_SELL&&OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNumber)
    {
    if(OrderType()==OP_BUY)
    {
    if(TrailingStop>0&&NormalizeDouble(Ask-TrailingStep*point,digits)>NormalizeDouble(OrderOp enPrice()+TrailingProfit*point,digits))
    {
    if((NormalizeDouble(OrderStopLoss(),digits)<Normal izeDouble(Bid-TrailingStop*point,digits))||(OrderStopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Bid-TrailingStop*point,digits),OrderTakeProfit(),0,Blu e);
    }
    }
    }
    else
    {
    if(TrailingStop>0&&NormalizeDouble(Bid+TrailingSte p*point,digits)<NormalizeDouble(OrderOpenPrice()-TrailingProfit*point,digits))
    {
    if((NormalizeDouble(OrderStopLoss(),digits)>(Norma lizeDouble(Ask+TrailingStop*point,digits)))||(Orde rStopLoss()==0))
    {
    OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(Ask+TrailingStop*point,digits),OrderTakeP rofit(),0,Red);
    }
    }
    }
    }
    }
    }
    int DeletePendingOrders()
    {
    int total = OrdersTotal();

    for (int cnt = total-1 ; cnt >= 0 ; cnt--)
    {
    OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
    if (OrderMagicNumber() == MagicNumber && OrderSymbol()==Symbol() && (OrderType()>OP_SELL))
    {
    OrderDelete(OrderTicket());
    }
    }
    return(0);
    }
    //+---------------------------------------------------------------------------------+

    bool CheckOpenedOrders(string comment){
    for(int i=0;i<OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    string com=OrderComment();
    if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber){
    if(com==comment)return(true);
    }
    }
    return(false);
    }

    void OpenClosedOrders(int type)
    {
    for(int i=0;i<OrdersHistoryTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
    string comment=OrderComment();double open=OrderOpenPrice();
    double lott=OrderLots();double stop=OrderStopLoss();double profit=OrderTakeProfit();

    if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Ma gicNumber&&OrderType()==type){
    if(CheckOpenedOrders(comment)==false){
    if((type==OP_BUY&&!ReverseClosedOrders)||(type==OP _SELL&&ReverseClosedOrders)){
    if(Ask>open+MarketInfo(Symbol(),MODE_STOPLEVEL)*Po int){
    OrderSend(Symbol(),OP_BUYLIMIT,lott,open,3,stop,pr ofit,comment,MagicNumber,0,Green);}

    if(Ask<open-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
    OrderSend(Symbol(),OP_BUYSTOP,lott,open,3,stop,pro fit,comment,MagicNumber,0,Green);}
    }
    if((type==OP_SELL&&!ReverseClosedOrders)||(type==O P_BUY&&ReverseClosedOrders)){
    if(Bid>open+MarketInfo(Symbol(),MODE_STOPLEVEL)*Po int){
    OrderSend(Symbol(),OP_SELLSTOP,lott,open,3,stop,pr ofit,comment,MagicNumber,0,Green);}

    if(Bid<open-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point){
    OrderSend(Symbol(),OP_SELLLIMIT,lott,open,3,stop,p rofit,comment,MagicNumber,0,Green);}
    }
    }
    }
    }
    }


    double profit(){
    double c;
    for(int i=0;i<=OrdersTotal();i++){
    OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    if(OrderSymbol()==Symbol()){
    c+=OrderProfit();
    }
    }
    return(c);
    }

  6. #6
    الصورة الرمزية sem2020
    sem2020 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2012
    المشاركات
    244

    افتراضي

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

  7. #7
    الصورة الرمزية sem2020
    sem2020 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2012
    المشاركات
    244

    افتراضي

    تفضل هذه النسخة جربها
    والذي استطيع اضافته لك سوف اضيفه
    الملفات المرفقة الملفات المرفقة

  8. #8
    الصورة الرمزية احمد العابد
    احمد العابد غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    المشاركات
    77

    افتراضي

    مليون شكر لك اخى الف مليون شكر وانا متابع مع حضرتك ولكن ارجوا وضع اللينك المقصود للمتابعه

  9. #9
    الصورة الرمزية newegyptian
    newegyptian غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Jan 2010
    المشاركات
    78

    افتراضي

    الف شكر

    ولكن ازاي احدد حجم العقد لكل اوردر على حده

  10. #10
    الصورة الرمزية احمد العابد
    احمد العابد غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    المشاركات
    77

    افتراضي

    اخى العزيز ادام الله عليك الصحه والعافيه كما تداوم انت على مساعده الغير

    ليس المطلوب تحديد حجم اللوت لكل اوردر على حدا ولكن المطلوب تحديد حجم اللوت لكل نوع من الاوامر شراء ستوب شراء ليمت بيع ستوب وبيع ليمت فقط لا غير كما انه من الممكن ان يكون تحديد حجم لوت واحد يسرى على كل الاوامر المذكوره كما تشاء وكما يكون ابسط لك فى التنفيذ اخى وتقبل احترامى واعتزازى باهتمامك

  11. #11
    الصورة الرمزية sem2020
    sem2020 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2012
    المشاركات
    244

    افتراضي

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

    اسف جدا حاولت المساعدة وهذا اقصي ما استطعت فعله
    الملفات المرفقة الملفات المرفقة

  12. #12
    الصورة الرمزية Jmeel
    Jmeel غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2008
    الإقامة
    في أرض الله
    المشاركات
    7,609

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة sem2020 مشاهدة المشاركة
    اخي مرفق اكسبيرت
    حجم اللوت فى الأول لصفقات الماركت
    ولكل نوع من الاوامر المعلقة حجم لوت خاص
    اضفت اضافة اوامر معلقة بعد الأغلاق ولكنها لا تعمل لماذا لا اعرف
    على العموم مرفق الأكسبيرت مفتوح الكود
    يستطيع احد الأخوة المبرمجين تصليح هذا العيب

    اسف جدا حاولت المساعدة وهذا اقصي ما استطعت فعله
    جرب هذه النسخة دون اي تغييرات كما هي .
    الملفات المرفقة الملفات المرفقة
    توقيع العضو
    اعتذر لمن لن أتمكن من تنفيذ طلبه بسبب عدم قناعتي بالفكرة

  13. #13
    الصورة الرمزية احمد العابد
    احمد العابد غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Apr 2010
    المشاركات
    77

    افتراضي

    الف شكر ليك وجزاك الله الف خير

  14. #14
    الصورة الرمزية sem2020
    sem2020 غير متواجد حالياً عضو المتداول العربي
    تاريخ التسجيل
    Oct 2012
    المشاركات
    244

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة Jmeel مشاهدة المشاركة
    جرب هذه النسخة دون اي تغييرات كما هي .
    اولا شكرا على المساعدة
    نفس الشئ اخي جميل الشئ
    لا يضع اوامر مكان التى اغلقت
    انا تعبت فى النقطة هذه لم استطيع فعله
    اتمني نصل لحل لها

  15. #15
    الصورة الرمزية Jmeel
    Jmeel غير متواجد حالياً عضو نشيط
    تاريخ التسجيل
    Sep 2008
    الإقامة
    في أرض الله
    المشاركات
    7,609

    افتراضي

    اقتباس المشاركة الأصلية كتبت بواسطة sem2020 مشاهدة المشاركة
    اولا شكرا على المساعدة
    نفس الشئ اخي جميل الشئ
    لا يضع اوامر مكان التى اغلقت
    انا تعبت فى النقطة هذه لم استطيع فعله
    اتمني نصل لحل لها
    فهمت من مشاركتك انه بعد اغلاق جميع العقود بالدولار لايفتح عقود جديدة ؟ اما اذا كنت تقصد انه بعد اغلاق كل عقد يفتح له عقد بديل فهذا موضوع آخر مع ملاحظة فشل الفكرة وسبق عمل اكسبيرتات لها ، عندما يتفعل شراء ثم يغلق بربح سيكون السعر اعلى وهنا بدل من الباي ستوب سيفتح مثلا باي ليميت او سل ستوب كما ستختاره ، ستحتاج لصنع دوال تعود بمعلومات الصفقة المغلقة لتفتح صفقة جديدة حسب نفس المعلومة .
    عموما جرب نسختك الأخيرة كومبيلر ستجد فيه رسائل أثنين منها هامة لايمكن تجاوزها ، وجرب عمل كومبيلر للنسخة المعدلة ستجد انه تم اصلاحها وبالمقارنة ستعرف سبب الخطأ .
    ملاحظة اضافية لم أرى اي اكسبيرت رابح وهو يبيع ويشتري مع الصعود ويكرر يبيع ويشتري مع النزول لأن مايدفع في الأسبريد يطحن أي ربح واعتقد أن الشركة التي فيها مثل هذه الحسابات شركة سعيدة بمثل هذه الفكرة . اهلا بك في أي خدمة
    توقيع العضو
    اعتذر لمن لن أتمكن من تنفيذ طلبه بسبب عدم قناعتي بالفكرة

صفحة 1 من 2 12 الأخيرةالأخيرة

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17