اطلاعیه

بستن

راهنمای فروم - حتما بخوانید

با سلام

قابل توجه کاربران محترم تالار گفتگو

قبل از ارسال پست یا ایجاد موضوع جدید، تاپیک قوانین و راهنمای فروم را مطالعه نمائید.

کاربران و مخصوصا تازه واردین لطفا دقت باشید که هرگونه پیشنهاد مدیریت سرمایه یا فروش تحلیل و یا برگزاری کلاس و ... که خارج از محیط عمومی فروم باشد را به هیچ عنوان بدون تحقیق و کسب اطلاعات کامل و کافی دنبال نکنید در غیر این صورت مسئولیت و عواقب آن بر عهده خود شخص می باشد.

همچنین لازم به ذکر است مسئولیت ارتباطات خارج از پست های عمومی فروم اعم از پیام خصوصی یا چت یا دیداری یا شنیداری با سایر اعضای فروم کاملا با خود اعضا هست و وارد کردن آن به صورت عمومی در فروم ممنوع است. برای امنیت بیشتر جهت گرفتن پاسخ سوالات خود از انجمنها استفاده نمایید.

دوستان توجه داشته باشند که تمامی بخش های اختصاصی و عمومی فروم کاملا رایگان بوده و به هیچ عنوان نیاز به پرداخت وجه به هیچ کس برای باز شدن دسترسی نیست.

منتها به این دلیل که در این بخش ها معمولا کار تیم ورک و گروهی انجام میشود، مناسب ورود افراد با شرایط خاصی است که مدیر آن بخش تعیین میکند و برای همه افراد کارایی ندارد چون مستلزم بر عهده گرفتن مسئولیت یا دانش کافی در آن حوزه می باشد.

لذا ضمن پوزش از کاربرانی که تقاضای دسترسی آن ها به بخش های اختصاصی توسط مدیران بخش رد میشود، توصیه میکنیم که پس از فراگیری موضوعات عمومی و تخصصی فراوانی که در روی فروم قرار دارد چنانچه برنامه ویژه ای برای کار در بخش های اختصاصی و کار گروهی دارند آن را مکتوب برای مدیران هر بخش بنویسند و سپس اقدام به درخواست دسترسی بکنند.


با احترام
مشاهده بیشتر
مشاهده کمتر

اگر اشکالی در خصوص کد نویسی دارید مطرح کنید شاید .....

بستن
این تاپیک ، یک تاپیک مهم است .
X
X
 
  • فیلتر کردن
  • زمان
  • نمایش
پاک کردن همه
پست های جدید

  • #61
    نوشته اصلی توسط ghobar نمایش پست ها
    با تشکر دوست عزیز
    همانطور که فرمودید بازهم مشکل
    میخوام وقتی سیگنال همر داد یه بای بزنه اما کلوز اوردر در اولین سگنال شوتینگ استار باشه و برعکس
    خوشبختانه توانستم که این مورد رو پیاده کنم .
    اما مشکلی که دارم این هست که میخوام وقتی کلوز بشه که اوردر در مفاد باشه یعنی وقتی سگنال همر داد یه بای بزنه و وقتی سیگنال شوتینک استار داد بسته بشه به شرط اینکه اوردر در مفاد باشه اگه در مفاد نبود در سیگنال شوتینگ بعدی + اینکه اوردر در مفاد باشه بسته بشه.

    در این مورد هیچ چیزی به ذهنم نمیرسه بنابر این درخواست راهنمائی دارم که بازم یه جرقه بهم بدید .
    سلام
    مفاد چیه؟؟؟؟؟؟؟؟

    برای اینکه ببینی پوزیشن در وضعیتی قرار داره (سود یا ضرر) میتونی از توابع OrderClosePrice() و OrderOpenPrice و مقایسه این دو قیمت استفاده کنی .

    نظر


    • #62
      نوشته اصلی توسط polino نمایش پست ها
      سلام
      مفاد چیه؟؟؟؟؟؟؟؟

      برای اینکه ببینی پوزیشن در وضعیتی قرار داره (سود یا ضرر) میتونی از توابع OrderClosePrice() و OrderOpenPrice و مقایسه این دو قیمت استفاده کنی .
      مفاد = سود

      در اون 2 تابع بیشتر سرچ میکنم

      نظر


      • #63
        نوشته اصلی توسط polino نمایش پست ها
        سلام
        مفاد چیه؟؟؟؟؟؟؟؟

        برای اینکه ببینی پوزیشن در وضعیتی قرار داره (سود یا ضرر) میتونی از توابع OrderClosePrice() و OrderOpenPrice و مقایسه این دو قیمت استفاده کنی .

        سلام دوباره

        از این دستور که فرمودید به این شکل استفاده نمودم

        if(OrderSelect(12470, SELECT_BY_TICKET)==true)
        {
        Print("order #12470 open price is ", OrderOpenPrice());
        Print("order #12470 close price is ", OrderClosePrice());
        }
        else
        Print("OrderSelect returned the error of ",GetLastError());

        اما پوزیشنها . باز هم در ضرر بسته میشن

        توضیح دوباره من میخوام وقتی اندیکاتوری که توی اکسپرت تعریف کردم سیگنال همر داد یه بای بزنه و وقتی بسته بشه که اندیکاتور مربوطه سیگنال شوتینگ استار صادر کرد اما با این تفاوت که اگه سیگنال شوتینگ استار صادر شد اکسپرت چک کنه که این پوزیشن بای در سود هست یا نه اگه در سود بود یا صادر شدن سگنال شوتینگ استار پوزیشن بسته بشه اگه در سود نبود پوزیشن بسته نشه و تا صادر شدن سیگنال بعدی پوزیشن رو باز نگه داره .

        با تشکر از شما دوست گرامی

        نظر


        • #64
          نوشته اصلی توسط ghobar نمایش پست ها
          سلام دوباره

          از این دستور که فرمودید به این شکل استفاده نمودم

          if(OrderSelect(12470, SELECT_BY_TICKET)==true)
          {
          Print("order #12470 open price is ", OrderOpenPrice());
          Print("order #12470 close price is ", OrderClosePrice());
          }
          else
          Print("OrderSelect returned the error of ",GetLastError());

          اما پوزیشنها . باز هم در ضرر بسته میشن

          توضیح دوباره من میخوام وقتی اندیکاتوری که توی اکسپرت تعریف کردم سیگنال همر داد یه بای بزنه و وقتی بسته بشه که اندیکاتور مربوطه سیگنال شوتینگ استار صادر کرد اما با این تفاوت که اگه سیگنال شوتینگ استار صادر شد اکسپرت چک کنه که این پوزیشن بای در سود هست یا نه اگه در سود بود یا صادر شدن سگنال شوتینگ استار پوزیشن بسته بشه اگه در سود نبود پوزیشن بسته نشه و تا صادر شدن سیگنال بعدی پوزیشن رو باز نگه داره .

          با تشکر از شما دوست گرامی
          سلام . خواهش می کنم
          چرا از SELECT_BY_TICKET استفاده می کنی . معمولا کار سخت تر میشه . من این جوری استفاده می کنم :

          for(int i=0; i <OrdersTotal() ; i++)
          {
          int orderSelect = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
          if( OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber()==magic)
          {
          if(Bid>OrderOpenPrice())
          {
          //************************
          }
          }
          if( OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber()==magic)
          {
          if(Ask<OrderOpenPrice())
          {
          //************************
          }
          }
          }

          در اینجا اگر یه بای (با مجیک نامبر مشخص) پیدا کنه که قیمت بالاتر از قیمت باز شدن اردر باشه (یعنی در سود باشه) ستاره رو اجرا می کنه . حالا شما به جای ستاره دستورات خودت رو قرار بده . برای پوزیشن سل هم همین طور

          نظر


          • #65
            نوشته اصلی توسط polino نمایش پست ها
            سلام . خواهش می کنم
            چرا از SELECT_BY_TICKET استفاده می کنی . معمولا کار سخت تر میشه . من این جوری استفاده می کنم :

            for(int i=0; i <OrdersTotal() ; i++)
            {
            int orderSelect = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
            if( OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber()==magic)
            {
            if(Bid>OrderOpenPrice())
            {
            //************************
            }
            }
            if( OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber()==magic)
            {
            if(Ask<OrderOpenPrice())
            {
            //************************
            }
            }
            }

            در اینجا اگر یه بای (با مجیک نامبر مشخص) پیدا کنه که قیمت بالاتر از قیمت باز شدن اردر باشه (یعنی در سود باشه) ستاره رو اجرا می کنه . حالا شما به جای ستاره دستورات خودت رو قرار بده . برای پوزیشن سل هم همین طور

            اول از همه بگم دستت طلا.
            دوم بگم بازم ممنونم از شما در اصل میشه گفت تمام کار رو شما کردید اما واقعاً به صورت بسیار شفاف راهنمائی میفرمائید . بسیار سپاسگذارم .
            شاید این اکسپرت 2 تا کار دیگه داشته باشه که واقعاً بشه روش حساب کرد .

            بازم راهنمائی میخوام از شما

            طبق کد که شما استفاده میکردید من هم استفاده نمودم و مشکل سود و ضرر حل شد
            اما حالا یه درخواست دیگه داشتم طبق سناریوی قبلی اکسپرت پوزیشن بازی که هست رو چک کنه اگه در مفاد بود کلوز کنه که الان همین کار رو داره میکنه اما با این تفاوت که :
            اگه سیگنال همر داد یه بای بزنه تا شوتینگ استار بعدی اگه توی سود بود پوزیشن اوردر رو کلوز کنه ( که الان اکسپرت همین کار رو با کمک شما داره انجام میده ) اما اگه تا 10 شوتینگ استار دیگه پوزیشن بای که اوپن هست توی سود نیود اوردر رو کلوز کنه .

            با تشکر فراوان دوست عزیز.

            نظر


            • #66
              نوشته اصلی توسط ghobar نمایش پست ها
              اول از همه بگم دستت طلا.
              دوم بگم بازم ممنونم از شما در اصل میشه گفت تمام کار رو شما کردید اما واقعاً به صورت بسیار شفاف راهنمائی میفرمائید . بسیار سپاسگذارم .
              شاید این اکسپرت 2 تا کار دیگه داشته باشه که واقعاً بشه روش حساب کرد .

              بازم راهنمائی میخوام از شما

              طبق کد که شما استفاده میکردید من هم استفاده نمودم و مشکل سود و ضرر حل شد
              اما حالا یه درخواست دیگه داشتم طبق سناریوی قبلی اکسپرت پوزیشن بازی که هست رو چک کنه اگه در مفاد بود کلوز کنه که الان همین کار رو داره میکنه اما با این تفاوت که :
              اگه سیگنال همر داد یه بای بزنه تا شوتینگ استار بعدی اگه توی سود بود پوزیشن اوردر رو کلوز کنه ( که الان اکسپرت همین کار رو با کمک شما داره انجام میده ) اما اگه تا 10 شوتینگ استار دیگه پوزیشن بای که اوپن هست توی سود نیود اوردر رو کلوز کنه .

              با تشکر فراوان دوست عزیز.
              سلام و درود
              از ابراز لطف شما متشکرم .

              برای حل هر مشکلی ، چندین راه میشه پیدا کرد . یه چیزی به ذهن من میرسه و ممکنه یه راه خیلی راحت تر و بهتر به ذهن شما برسه . در مورد سوال شما راهی که به ذهن من رسید اینه:
              1- اردر باز رو شناسایی کنه که در سود هست یا ضرر.
              2- اگر در سود هست و یه شوتینگ استار پیدا کرد ، اردر رو ببنده (که طبق صحبت شما این کار رو میکنه)
              3- اما اگر در ضرر بود ، زمان باز شدن اردر رو پیدا کنه (با استفاده از دستور OrderOpenTime)
              4- با استفاده از دستور iBarShift شماره کندل باز شدن اردر رو پیدا کنه. مثلا اردر 22 کندل قبل باز شده
              5- حالا در حلقه (n=22 ; n>=0 ; n--)for ببینید که اندیکاتور چند تا سیگنال شوتینگ استار داده
              6- اگر تعداد شوتینگها از ده بیشتر شد، اردر باز رو ببنده

              این فلوچارتیست که به ذهن من رسید .

              بدرود

              نظر


              • #67
                نوشته اصلی توسط polino نمایش پست ها
                سلام و درود
                از ابراز لطف شما متشکرم .

                برای حل هر مشکلی ، چندین راه میشه پیدا کرد . یه چیزی به ذهن من میرسه و ممکنه یه راه خیلی راحت تر و بهتر به ذهن شما برسه . در مورد سوال شما راهی که به ذهن من رسید اینه:
                1- اردر باز رو شناسایی کنه که در سود هست یا ضرر.
                2- اگر در سود هست و یه شوتینگ استار پیدا کرد ، اردر رو ببنده (که طبق صحبت شما این کار رو میکنه)
                3- اما اگر در ضرر بود ، زمان باز شدن اردر رو پیدا کنه (با استفاده از دستور OrderOpenTime)
                4- با استفاده از دستور iBarShift شماره کندل باز شدن اردر رو پیدا کنه. مثلا اردر 22 کندل قبل باز شده
                5- حالا در حلقه (n=22 ; n>=0 ; n--)for ببینید که اندیکاتور چند تا سیگنال شوتینگ استار داده
                6- اگر تعداد شوتینگها از ده بیشتر شد، اردر باز رو ببنده

                این فلوچارتیست که به ذهن من رسید .

                بدرود
                با سپاس فراوان Polino عزیز
                در کد نویسی واقعاً بی استعداد هستم به نظر خودم
                بنا به فرمایش شما ایا مشکلی در این کد میبینید ؟


                if(Bid>OrderOpenTime())
                int b4=iBarShift("EURUSD",0,10);
                for(b4=10 ; b4>=0 ; b4--)

                نظر


                • #68
                  نوشته اصلی توسط ghobar نمایش پست ها
                  با سپاس فراوان Polino عزیز
                  در کد نویسی واقعاً بی استعداد هستم به نظر خودم
                  بنا به فرمایش شما ایا مشکلی در این کد میبینید ؟


                  if(Bid>OrderOpenTime())
                  int b4=iBarShift("EURUSD",0,10);
                  for(b4=10 ; b4>=0 ; b4--)
                  در خط اول چرا قیمت رو با زمان مقایسه کردی ؟؟ فکر کنم کمی سردرگم شدی. اون فلوچارتی که نوشتم رو خط به خط اجرا کن . در واقع نیمی از اون رو تا الان رفتی جلو .

                  قاعده کار کردن با دستور ibarshift در سایت mql رو برات میزارم:
                  http://docs.mql4.com/series/ibarshift
                  سومین ورودی تابع ، یک زمان است که این تابع ، شماره کندل اون زمان رو به شما برمیگرداند. حالا اون زمان چیست؟ زمان باز شدن معامله (OrderOpenTime) که شما به اشتباه عدد 10 رو قرار دادین.

                  در داخل حلقه هم باید فقط b4 رو بنویسی. چون b4 که در خط قبلی مقدار دهی میشه و دیگه در خود حلقه نباید مقدار اون رو عوض کنید: for(b4 ; b4>=0 ; b4--)

                  نظر


                  • #69
                    نوشته اصلی توسط polino نمایش پست ها
                    در خط اول چرا قیمت رو با زمان مقایسه کردی ؟؟ فکر کنم کمی سردرگم شدی. اون فلوچارتی که نوشتم رو خط به خط اجرا کن . در واقع نیمی از اون رو تا الان رفتی جلو .

                    قاعده کار کردن با دستور ibarshift در سایت mql رو برات میزارم:
                    http://docs.mql4.com/series/ibarshift
                    سومین ورودی تابع ، یک زمان است که این تابع ، شماره کندل اون زمان رو به شما برمیگرداند. حالا اون زمان چیست؟ زمان باز شدن معامله (OrderOpenTime) که شما به اشتباه عدد 10 رو قرار دادین.

                    در داخل حلقه هم باید فقط b4 رو بنویسی. چون b4 که در خط قبلی مقدار دهی میشه و دیگه در خود حلقه نباید مقدار اون رو عوض کنید: for(b4 ; b4>=0 ; b4--)

                    با سلام مجدد
                    دوست عزیز فکر کنم کمی از نیم هم پیش رفتم

                    datetime some_time=OrderOpenTime();
                    int b4=iBarShift("EURUSD",0,some_time);
                    for(b4 ; b4>=0 ; b4--)

                    اما باز هم سردرگم هستم اگر این کد رو طبق فرمایش شما ( اگه درست مطلب رو گرفته باشم ) درست باشه پس چطور باید براش تعریف کنم که بعد از 10 تا شوتینگ استار اگه اوردر در ضرر هم بود اوردر رو کلوز کنه .

                    با سپاس فراوان.

                    نظر


                    • #70
                      نوشته اصلی توسط ghobar نمایش پست ها
                      با سلام مجدد
                      دوست عزیز فکر کنم کمی از نیم هم پیش رفتم

                      datetime some_time=OrderOpenTime();
                      int b4=iBarShift("EURUSD",0,some_time);
                      for(b4 ; b4>=0 ; b4--)

                      اما باز هم سردرگم هستم اگر این کد رو طبق فرمایش شما ( اگه درست مطلب رو گرفته باشم ) درست باشه پس چطور باید براش تعریف کنم که بعد از 10 تا شوتینگ استار اگه اوردر در ضرر هم بود اوردر رو کلوز کنه .

                      با سپاس فراوان.
                      الان برای اینکه کد رو تکمیل کنی همه موارد رو در دست داری . کمی دقت و خلاقیت میخواد .
                      قبل از اینکه وارد حلقه بشه ، یک شمارنده تعریف کن . مثلا int cnt=0
                      حالا وارد حلقه میشی و چک میکنی که اگر اندیکاتور در بین کندل های 0 تا b4 ، اگر مخالف EMPTY_VALUE بود، یکی به شمارنده ات اضافه کنه . (cnt++) . وقتی حلقه تموم میشه ، چک کن که cnt>10 . اگر بود که اردر رو کلوز کنه

                      نظر


                      • #71
                        نوشته اصلی توسط polino نمایش پست ها
                        الان برای اینکه کد رو تکمیل کنی همه موارد رو در دست داری . کمی دقت و خلاقیت میخواد .
                        قبل از اینکه وارد حلقه بشه ، یک شمارنده تعریف کن . مثلا int cnt=0
                        حالا وارد حلقه میشی و چک میکنی که اگر اندیکاتور در بین کندل های 0 تا b4 ، اگر مخالف EMPTY_VALUE بود، یکی به شمارنده ات اضافه کنه . (cnt++) . وقتی حلقه تموم میشه ، چک کن که cnt>10 . اگر بود که اردر رو کلوز کنه

                        با تشکر که وقت میزاری دوست عزیز
                        اولی رو کم و بیش دارم ولی دریغ از خلاقیت. :ی
                        در موردی که فرمودید انشاالله درست پیش رفته باشم یه توابع براش تعریف کردم و کد رو قرار دادم به این صورت

                        int close1()
                        {
                        int cnt=0;
                        for(int i=OrdersTotal()-1;i>=0;i--)
                        {
                        datetime some_time=OrderOpenTime();
                        int b4=iBarShift("EURUSD",0,some_time);
                        for(int b4!=EMPTY_VALUE)cnt>10


                        cnt++;
                        }
                        return(cnt);
                        }


                        اما دریغ از اینکه کار کنه .
                        بازم مورد داره به نظرم .

                        نظر


                        • #72
                          متاسفانه قادر به پاسخ در پیام شخصی به علت کمبود پست رو ندارم
                          Polino عزیز شما کاملاً درست فرمودید انشاالله پیگیری میکنیم .
                          اگر امکان داره در مورد این سوال آخرم کمکم کنید کد دقیق رو بهم بدید ( انشاالله اکسپرت آزمایشی کارش تموم میشه )

                          با سپاس فراوان دوست عزیز

                          نظر


                          • #73
                            نوشته اصلی توسط ghobar نمایش پست ها
                            متاسفانه قادر به پاسخ در پیام شخصی به علت کمبود پست رو ندارم
                            Polino عزیز شما کاملاً درست فرمودید انشاالله پیگیری میکنیم .
                            اگر امکان داره در مورد این سوال آخرم کمکم کنید کد دقیق رو بهم بدید ( انشاالله اکسپرت آزمایشی کارش تموم میشه )

                            با سپاس فراوان دوست عزیز
                            دوست عزیز فلوچارتی که براتون نوشتم یکی از چند راه حلی است که یکیش به ذهن من رسیده و قطعا خودتون راه حل بهتری پیدا میکنید. کد نویسی اون هم حدود 50 خط میشه که باید در بدنه اصلی کد تست بشه وگرنه خطا ممکنه داشته باشه . به همین دلیل خودتون باید بنویسید تا هم بتونید عیب یابیش کنید و هم اینکه تغییرات بعدی رو در اون اعمال کنید.

                            بدرود

                            نظر


                            • #74
                              نوشته اصلی توسط polino نمایش پست ها
                              دوست عزیز فلوچارتی که براتون نوشتم یکی از چند راه حلی است که یکیش به ذهن من رسیده و قطعا خودتون راه حل بهتری پیدا میکنید. کد نویسی اون هم حدود 50 خط میشه که باید در بدنه اصلی کد تست بشه وگرنه خطا ممکنه داشته باشه . به همین دلیل خودتون باید بنویسید تا هم بتونید عیب یابیش کنید و هم اینکه تغییرات بعدی رو در اون اعمال کنید.

                              بدرود
                              با سپاس بیکران .
                              موضوعاتی که فرمودید رو حتماٌ پیگیری میکنم

                              نظر


                              • #75
                                با سلام مجدد
                                بناء به مشکل قبلیم و حل نشدن این موضوع ( خودم رو انداختم توی گوگل ) :ی
                                در مورد تایم و ای بار شیفت بیشتر تحقیقات نمودم و خقیقتاً درک بهتری در این مورد پیدا کردم
                                بنا به تجربه کم من در برنامه نویسی ( در حدود 3 هفته ) :ی تونستم این کد رو بنویسم

                                int cnt=10;
                                datetime some_time=OrderOpenTime();
                                int b4=iBarShift("EURUSD",0,some_time);
                                for (cnt=0 ; cnt<0 ; cnt++)

                                وقتی که کامپایل میکنم بدون ارور اجرا میشه اما مشکل من رو حل نکرد و بعد از صادر شدن 10 شوتینگ استار اوردر رو کلوز نمیکنه
                                آیا کدی که نوشتم مشکل داره ؟
                                با تشکر

                                نظر

                                پردازش ...
                                X