تم تحديث هذا الموضوع، قد ترغب في بدء أو قد بدأت بالفعل تطوير الخاصة بهم مستشار الخبراء المخصصة. هذا ليس كميترادر 4 مقل خبير مستشار توتوريالكوت أو شيء من هذا القبيل، ولكن يمكن أن يكون من مساعدة للمبتدئين، ويمنع من صنع بعض الأخطاء وتوفير رمز العمل لبعض الوظائف الأكثر شيوعا. قبل بضعة أشهر لقد كتبت بلدي الأول، إي بسيط جدا فقط لأغراض التعلم ولقد نشرت في هذا الموضوع. حاولت أن أبقيه بسيطة قدر الإمكان وقدمت العديد من التعليقات لجعله أسهل للمبتدئين لمتابعة استراتيجية بلدي إي وكيفية تنفيذها. خلال الأسابيع الماضية قرأت الكثير عن تحليل الرسم البياني، وتحليل بين السوق والتنبؤ الأسعار مع الشبكات العصبية. إلى جانب ذلك، لقد وضعت بعض المكتبات التي تحتوي على وظائف في كثير من الأحيان الحاجة مثل إدارة، إدارة، معالجة الأخطاء وتسجيل الأخطاء. وتعلمت أيضا الكثير عن باكتستينغ، التحقق من الصحة ومنحنى المناسب المشاكل. خطأ باكتستينغ المشتركة فعلت في البداية و ثاتس بالفعل النقطة التي كانت ذكية حقا مع النهج الأخير: لقد الأمثل إي لفترة معينة ثم باكتستد إي للفترة نفسها. لا تفعل ذلك، وإذا كنت لا - لا تأخذ هذه النتائج، ونعتقد أن كنت قد وجدت في نهاية المطاف المقدسة الكأس - إي نحن نريد لتطوير إي التي لا تخلق فقط منحنيات لطيفة الإنصاف لدينا فترة الأمثل (كوت منحنى المناسب كوت)، ولكن أيضا للمستقبل. صورة نريد أن نكتب إي التي تستخدم الرسم البياني اليومي كإطار زمني ولدينا البيانات سلسلة زمنية التالية المتاحة: نحن الآن القيام باكتستينغ والتحسين من إي. وهذا يعني أننا نحدد تلك المتوسطات المتحركة، والمخاطر، وحجم المخلفات اللاحقة (أو أيا من المتغيرات التي نستخدمها في منطقتنا إي) التي تؤدي إلى أعلى رصيد (أدنى تراجع، والمردود المتوقع). إذا فعلنا ذلك طوال الفترة من 2003 إلى 2008، يمكننا الحصول على منحنى لطيف جدا، ولكن ليس لدينا فكرة عن كيفية أداء إي في عام 2009. حل ممكن أن يكون جيدا أن نكون البيانات سلسلة الوقت إلى جزأين: واحد للتحسين وجزء واحد من أجل التحقق من صحة التحقق: الآن سنقوم بتحسين 2003 - 2005 واستخدام هذه القيم للاختبار في عام 2006. إذا كنا لا تزال تحصل على نتائج جيدة، ثم لدينا إي كان يمكن أن تكون ناجحة في المستقبل، على الرغم من أننا اختبرنا ل الماضي. لأن إي لم يكن الأمثل لعام 2006. يمكننا تكرار ذلك للسنوات المقبلة ومحاولة العثور على تلك الإعدادات، التي أنتجت نتائج جيدة لجميع أو معظم الفترات. أنا لا أعرف الفترة التي يجب أن تختار للتحسين والتي للاختبار. هذا هو التجربة والخطأ ويعتمد أيضا على الإطار الزمني الذي اخترت للسماح عمل إي الخاص بك على. الحصول على أفضل جودة النمذجة المزيد من البيانات لديك، كلما كان ذلك أفضل (يعني أكثر تحديدا) نتائج باكتستينغ سيكون. هيريس طريقة لتحسين جودة النمذجة: في قائمة الخيارات من ميتاتريدر 4 (اضغط كترلو) حدد علامة التبويب كوتشارتسكوت وقم بتعيين هذه القيم لحانات كوتماكس في الحانات هيستوريكوت و كوتماكس في الرسم البياني: 2147483647 - انقر فوق موافق. بعد ذلك، افتح مركز التاريخ في MT4 (اضغط F2)، وحدد زوج العملات في قائمة الرموز على اليسار وحدد الإطار الزمني الأدنى، دقيقة واحدة (انقر نقرا مزدوجا فوقه). اضغط كوتدونلوادكوت والإجابة كوتوكوت عندما تحصل على التحذير. قد يستغرق الأمر بضع دقائق حتى يتم تنزيل كل القيم التاريخية. لدي 3.5 ميو 1 دقيقة الشموع، وهذا هو آخر 10 سنوات في دقائق يجب أن يكون كافيا. يمكنك القيام بذلك مع كل إطار زمني والعملة، أو استخدام البرنامج النصي المضمنة كوبيريودكونفرتركوت، الذي يأتي مع MT4. بعد ذلك، سوف أقدم لكم بعض المكتبات التي قمت بكتابتها والتي تساعدني على عدم إعادة كتابة كل شيء كثيرا ما أحتاج إليه. أنا حفظ جميع الأوامر المفتوحة في صفيف (فقط تلك الأوامر التي فتحت إي من كورس) حتى أتمكن من معرفة عدد الطلبات فتح في المجموع. ولقد كتبت القليل من الوظائف التي تبسط فتح الموقف. ديفين ماجينومبر 29031985 الحد الأقصى المسموح به للانزلاق لتنفيذ الطلب تحديد سليباج 5 حفظ جميع الأوامر المفتوحة في هذه المصفوفة إنت تيكيت 9193 عد المواقف المفتوحة لعملة معينة وحفظ أوامرنا في صفيف التذكرة. لا يمكننا ببساطة العودة أريسيزي (تذكرة)، لأن بعض أوامر يمكن بالفعل قد توقفت. (ريتورن) (أوبديتوردرماناجر) () ريتورن (أوبديتوردرماناجر ()) يفتح موضع جديد وارجع زوج زوج العملات بارامتر رمز الخطأ، استخدم يوروس أو سيمبول () بارام الأمر سيل أو سيل - لا تستخدم أوبوي أو أوبسيل بارام لوت حجم الترتيب في لوت بارام ستوبلوس ستوبلوس بارت تاكيبروفيت تاكيبروفيت إنت نيوماركيتوردر (زوج زوجي سترينغ كوماند لوت دوبل ستوبلوس دوبل تاكيبروفيت) شراء أمر بإرسال (شراء أمر شراء بوي) ريتورن (أوردرسند (بير. أوبوي لوت أسك. سليباج. () أمر شراء أمر آخر (إذا كان الأمر أمر بيع سيل) ريتورن (أوردرند (زوجي أوسبل لوت سليباج ستوبلوس تاكبروفيسيون ماجينومبر 0. ريد)) إرجاع آخر (- 2) ) تحديثات جميع المعلومات حول أوامر فتح حاليا. تبدو خاصة من خلال جميع أوامر إذا كانت لا تزال نشطة أو ربما تم إيقافها من قبل وقف الخسائر ويحفظ رقم تذكرة في صفيف التذاكر. (تيكيت 0) من خلال جميع الطلبات ل (إنت i 0 i لوت أوردرزتال () i) كانت مهتمة فقط في الصفقات الموجودة في تجمع التداول أغلقت الطلبات الملغاة أو الملغاة (أوردرمزاجنومبر) (ماجنومبر)) تغيير حجم صفيف التذاكر وحفظ التذاكر أرايزيزي (عدد التذاكر 1) تذكرة 91 عدد 93 أوردرتيكيت () عودة عودة المراكز المفتوحة (العد) تذكرة - مخازن جميع أرقام التذاكر من إيس الحالية فتح أوامر أوبديتوردرماناجر () - ينبغي أن يسمى كل القراد أو قبل أن تريد استخدام تذكرة، لأنه يمكن أن يكون أن أمر كان مغلقة. هذه الوظائف بتحديث عدد صفيف التذاكر أوبينوردرز () - يحسب عدد الأوامر المفتوحة، ببساطة نتيجة ثانوية للوظيفة المذكورة سابقا نيوماركيتوردر (زوج سلسلة، الأمر سلسلة، ضعف الكثير، مزدوج ستوبلوس، مزدوجة تاكيبروفيت) - يجعل من الأسهل بالنسبة لي لفتح أمر جديد. يمكن أن يكون الزوج كوتوروسكوت على سبيل المثال أو استخدم الرمز () لاستخدام الرمز الحالي للرسم البياني المرفق. الأمر إما كويبويكوت أو كوتلكوت، الكثير، ستوبلوس و تاكيبروفيت النفس التفسيرية. يتم تعريف الانزلاق في بداية التعليمات البرمجية، أوامر السوق فقط ممكنة. ولكن لا توجد مشكلة لكتابة نيوبندينغوردر وظيفة. هذه هي مكتبة بسيطة جدا التي يمكن استخدامها لحساب الهامش الحرة الحالية والمستخدمة، والإنصاف، والتوازن والأرباح. الأهم من ذلك هو وظيفة لحساب حجم الكثير الأمثل لمخاطر معينة ووقف الخسارة. متغيرات خارجية خارجية مضاعفة خطر 0.02 توازن مزدوج 0.00 ضعف الأسهم 0.00 هامش مزدوجمجانا 0.00 هامش مزدوجمتوسط 0.00 هامش مزدوجعائد بيرسنت 0.00 هامش مزدوج قابل للاستعمالالرجوع 0.00 ربح مضاعفلسبرسنتاد 0.00 احسب حجم اللوت الأمثل إذا تم ضبط سي، قم بحساب حجم اللوت وفقا لوقف الخسارة، وإلا استخدم خطر الهامش (لوت 0.001) المخاطر 0.001 إذا كان (المخاطر غ 0.50) المخاطر 0.50 ضعف الرافعة المالية ماركيتينفو (سيمبول ()، مودلوتسيزي) ماركيتينفو (سيمبول ()، موديمارجينركيرد حساب الهامش المستخدم وفقا للمخاطر إذا كان وقف الخسارة صغير جدا إذا ((ستوبلوس لوت ماركيتينفو (الرمز ()، موديستوبليفيل) أمبامب (ستوبلوس غ 0)) الكثير أكونتكيتي () نفوذ المخاطر ماركيتينفو (الرمز ()، موديلوتسيزي) حساب الكثير، بحيث لا يمكن إلا أن خطر فقدان الأسهم آخر ترجمة ستوبلوس s إلى قيم النقطة إذا كان ستوبلوس سلبية، وجعلها إيجابية إذا (ستوبلوس لوت 0) ستوبلوس - ستوبلوس ماركيتينفو (الرمز ()، موديبوانت) آخر ستوبلوس ستوبلوس ماركيتينفو (الرمز ()، موديبوانت) حساب قيمة نقطة واحدة في الكثير لوت بيبالويبرلوت ماركيتينفو (الرمز) (، موديلوتسيزي) ماركيتينفو (الرمز ()، موديبوانت) حساب القيمة المطلوبة لكل نقطة لمخاطرة المبلغ الصحيح من رأس المال وفقا لحجم سل مزدوجة حساب نيددبيبفالو () ستوبلوس المخاطر حساب الأمثل الكثير الكثير الحجم نيددبيفالو بيبالويبرلوت تحقق مما إذا كان حجم الكثير (لوت ماركيتينفو) (سيمبول ()، موديمينلوت)) الكثير ماركيتينفو (سيمبول ()، موديمينلوت) إذا كان (لوتس غ ماركيتينفو (الرمز ()، موديماكسلوت)) الكثير ماركيتينفو (رمز ()، موديماكلوت) يعيد حساب (مجاني)، الهامش المستخدم والقيم الأخرى مزدوجة أوبداتيمونيماناجر () رصيد حساب أكونتبالانس () حساب إكيتي () الهامشحساب مجانيمبلغ الهامش (هامش) حقوق الملكية - هامشارجي مارغ إنوسيدبرسنت مارجينوسد إنكتيون 100 هامشوسابلابرسنت مارجينفري إكيتي 100 بروفيتلوسبرسنتاد أكونت بروفيت () الرصيد 100 أوبداتيمونيماناجر () - يعيد حساب الهامش المجاني والمستعمل حاليا، ويحفظ الأسهم والتوازن والأرباح في المتغيرات. لوتسوبتيزد (ضعف ستوبلوس) - يحسب الأمثل حجم الكثير لأمر تحت خطر معين ووقف الخسارة. يتم تعريف المخاطر في بداية الملف: 0.02 يعني: لا تخاطر بأكثر من 2 من المبلغ الإجمالي لحقوق الملكية. أكونت إكيتي 10.000 المخاطر 0.02 2 وقف الخسارة عند اليورو مقابل الدولار الأميركي يتم تعيينه إلى 0.0100 100 نقطة نحن نخاطر فقط 2 من 10.000 200 قيمة النقطة لكل لوت: 100.000 x 0.0001 10 وقف الخسارة 100 نقطة، يعني أننا نريد قيمة نقطة لكل لوت 200 100 2 وهذا يعني حجم الكثير من 2 10 0.2 إذا حصلنا على توقفت الآن مع فقدان 100 نقطة، ونحن فقط فضفاضة 200 أو 2. بسيطة. إذا لم يتم إعطاء وقف الخسارة، ثم سيتم احتساب حجم الموقف اعتمادا على مقدار حقوق الملكية والمخاطر والرافعة المالية. هذه ليست حتى الآن مكتبة إدارة الأموال الانتهاء. فهي توفر أساسا يمكن بل وينبغي توسيعه. بعض الأفكار: تحديد حد أقصى لرأس المال المستثمر بنسبة مئوية، مثل 2 لكل موضع وليس أكثر من ذلك (على سبيل المثال) 10 - 20 مستثمرة بشكل كامل حفظ الرصيد، حقوق الملكية ومنحنى الربح في مصفوفة. ثم استخدم هذه البيانات لمعرفة ما إذا كانت الصفقات الأخيرة كانت مربحة أم لا. يمكن استخدامها ل مودكوت كتيباني أو للحد من المخاطر عندما تكون الصفقات الأخيرة قد أنتجت خسائر إذا كان لديك عملة متعددة إي، فإنه قد يكون من المفيد أيضا لتحديد كم كنت ترغب في الاستثمار ليس فقط في الموقف وفي المجموع، ولكن أيضا كيف الكثير في ماركيتورنسي. مثل: 2 خطر لكل أمر، 10 في السوق و 20 في المجموع. هذه هي مكتبة تسجيل بسيطة جدا مفيدة لإنشاء السجلات التي يمكن أن تكون مكتوبة على محطة MT4 وحفظها على القرص في ملف. إكسترن إكسترنال لوغفيل log. txt إكسترن باك بول لوجينغاكتيف بول إكستنر بول لوغتوفيل فالس قم بتعيين موضع مسار ملف ملف ملف السجل واسم الملف الخاص بنا ملف السجل فواد سيتلوغفيل (ملف السلسلة) ملف لوغفيل يتيح تسجيل الملف على ديسسباس فواد إنابنتيللوجينغ () لوغتوفيل ترو تعطيل التسجيل إلى الملف على ديسباسيس فواد ديزابليفيللوجينغ () لوغتوفيل فالس طباعة السجل إلى دفتر اليومية وحفظ السجل إلى الملف المحدد فواد برينتلوغ (سجل سلسلة) فقط طباعة السجلات أو حفظها، إذا تم تنشيط تسجيل الدخول إذا (لوجينغاكتيف) في حالة تسجيل الدخول إلى ملف (لوغتينغ: ملف فتح الخطأ) ريتورن (0) فيلوريسترينغ (ملف السجل) سترينغلن (لوغ): (لوغجينغ: فيلتروريت فيلينغ) )) فيليكلوس (مقبض) طباعة سجل سلسلة إلى مجلة طباعة (لوغ) أعتقد أن هذه الوظيفة يجب أن تكون جميع النفس التفسيرية. يمكنك تمكين أو تعطيل وظيفة التسجيل وتمكين أو تعطيل تمكين التسجيل بشكل منفصل. سيتم كتابة رسائل السجل فقط إلى المحطة الطرفية وليس إلى القرص. برينتلوغ (سجل سلسلة) - يطبع السلسلة إلى المجلة عند تمكين التسجيل وأيضا إلى الملف إذا تم تمكين تسجيل الدخول إلى ملف أعرف ثيرس stderror. mqh القادمة مع ميتراترادر، ولكن لقد كتبت نسختي الخاصة. ثاتس لأنني يمكن أن تشمل رموز الخطأ الخاصة بي رسائل ببساطة. ولكن في الوقت الراهن، يتم تنفيذ فقط موقت أخطاء وقت التشغيل مقل وأخطاء الخادم. ---- الأخطاء عاد من خادم التجارة تحدد ERRNOERROR 0 تحديد ERRNORESULT 1 تحديد ERRCOMMONERROR 2 تحديد ERRINVALIDTRADEPARAMETERS 3 تحديد ERRSERVERBUSY 4 تحديد ERROLDVERSION 5 تحديد ERRNOCONNECTION 6 تحديد ERRNOTENOUGHRIGHTS 7 تعريف ERRTOOFREQUENTREQUESTS 8 تعريف ERRMALFUNCTIONALTRADE 9 تعريف ERRACCOUNTDISABLED 64 تحديد ERRINVALIDACCOUNT 65 تحديد ERRTRADETIMEOUT 128 تعريف ERRINVALIDPRICE 129 تعريف ERRINVALIDSTOPS 130 تعريف ERRINVALIDTRADEVOLUME 131 تعريف ERRMARKETCLOSED 132 تعريف ERRTRADEDISABLED 133 تعريف ERRNOTENOUGHMONEY 134 تعريف ERRPRICECHANGED 135 تعريف ERROFFQUOTES 136 تعريف ERRBROKERBUSY 137 تعريف ERRREQUOTE 138 تعريف ERRORDERLOCKED 139 تعريف ERRLONGPOSITIONSONLYALLOWED 140 تعريف ERRTOOMANYREQUESTS 141 تعريف ERRTRADEMODIFYDENIED 145 تعريف ERRTRADECONTEXTBUSY 146 تعريف ERRTRADEEXPIRATIONDENIED 147 تعريف ERRTRADETOOMANYORDERS 148 - --- mql4 أخطاء وقت التشغيل تحديد إرنومكلرور 4000 تعريف إرورونغفونكتيونبوانتر 4001 تحديد إراراريندكسوتفرانج 4002 تحديد ERRNOMEMORYFORCALLSTACK 4003 تحديد ERRRECURSIVESTACKOVERFLOW 4004 تحديد ERRNOTENOUGHSTACKFORPARAM 4005 تحديد ERRNOMEMORYFORPARAMSTRING 4006 تحديد ERRNOMEMORYFORTEMPSTRING 4007 تحديد ERRNOTINITIALIZEDSTRING 4008 تحديد ERRNOTINITIALIZEDARRAYSTRING 4009 تحديد ERRNOMEMORYFORARRAYSTRING 4010 تحديد ERRTOOLONGSTRING 4011 تحديد ERRREMAINDERFROMZERODIVIDE 4012 تحديد ERRZERODIVIDE 4013 تحديد ERRUNKNOWNCOMMAND 4014 تحديد ERRWRONGJUMP 4015 تحديد ERRNOTINITIALIZEDARRAY 4016 تحديد ERRDLLCALLSNOTALLOWED 4017 تحديد ERRCANNOTLOADLIBRARY 4018 تعريف ERRCANNOTCALLFUNCTION 4019 تحديد ERREXTERNALCALLSNOTALLOWED 4020 تحديد ERRNOMEMORYFORRETURNEDSTR 4021 تحديد ERRSYSTEMBUSY 4022 تحديد ERRINVALIDFUNCTIONPARAMSCNT 4050 تحديد ERRINVALIDFUNCTIONPARAMVALUE 4051 تحديد ERRSTRINGFUNCTIONINTERNAL 4052 تحديد ERRSOMEARRAYERROR 4053 تحديد ERRINCORRECTSERIESARRAYUSING 4054 تحديد ERRCUSTOMINDICATORERROR 4055 تحديد ERRINCOMPATIBLEARRAYS 4056 تحديد ERRGLOBALVARIABLESPROCESSING 4057 الصدمة شمال شرق ERRGLOBALVARIABLENOTFOUND 4058 تحديد ERRFUNCNOTALLOWEDINTESTING 4059 تحديد ERRFUNCTIONNOTCONFIRMED 4060 تحديد ERRSENDMAILERROR 4061 تحديد ERRSTRINGPARAMETEREXPECTED 4062 تحديد ERRINTEGERPARAMETEREXPECTED 4063 تحديد ERRDOUBLEPARAMETEREXPECTED 4064 تحديد ERRARRAYASPARAMETEREXPECTED 4065 تحديد ERRHISTORYWILLUPDATED 4066 تحديد ERRTRADEERROR 4067 تحديد ERRENDOFFILE 4099 تحديد ERRSOMEFILEERROR 4100 تحديد ERRWRONGFILENAME 4101 تحديد ERRTOOMANYOPENEDFILES 4102 تحديد ERRCANNOTOPENFILE 4103 تحديد ERRINCOMPATIBLEFILEACCESS 4104 تحديد ERRNOORDERSELECTED 4105 تحديد ERRUNKNOWNSYMBOL 4106 تحديد ERRINVALIDPRICEPARAM 4107 تحديد ERRINVALIDTICKET 4108 تحديد ERRTRADENOTALLOWED 4109 تحديد ERRLONGSNOTALLOWED 4110 تحديد ERRSHORTSNOTALLOWED 4111 تحديد ERROBJECTALREADYEXISTS 4200 تحديد ERRUNKNOWNOBJECTPROPERTY 4201 تحديد ERROBJECTDOESNOTEXIST 4202 تحديد ERRUNKNOWNOBJECTTYPE 4203 تحديد ERRNOOBJECTNAME 4204 تحديد ERROBJECTCOORDINATESERROR 4205 تحديد ERRNOSPECIFIEDSUBWINDOW 4206 دي غرامة إرسوموبجيتيرور 4207 سلسلة إرورسكريبتيون (رمز إنت) مفتاح (رمز) حالة إرنويرور. طباعة (لا يوجد خطأ إرجاع) حالة كسر إرنوريسولت. طباعة (لم يتم إرجاع خطأ، ولكن النتيجة غير معروفة) حالة كسر إركومونيرور. طباعة (خطأ شائع) كسر حالة إرينفاليدتراديباراميترز. طباعة (معلمات التجارة غير صالحة) حالة كسر إرسيرفيربوسي. طباعة (خادم التجارة مشغول) كسر حالة إرولدفيرزيون. طباعة (النسخة القديمة من محطة العميل) كسر حالة إرنوكونكتيون. طباعة (لا يوجد اتصال مع خادم التجارة) كسر حالة إرنوتنوغريتس. طباعة (حالة حقوق غير كافية) كسر إرتوفريكونتركيستس. طباعة (طلبات متكررة جدا) كسر حالة إرمالفونتيونالتريد. برينت (العملية التجارية الخاطئة) حالة كسر إراكونتديسابلد. طباعة (تعطيل الحساب) حالة كسر إرينفاليداكونت. برينت (حساب غير صالح) حالة كسر إرتراديتيميوت. طباعة (مهلة التجارة) حالة كسر إرينفاليدبريس. طباعة (حالة غير صالحة) حالة كسر إرينفاليدستوبس. طباعة (توقف غير صالح) حالة كسر إرينفاليدتراديفولوم. برينت (حجم التداول غير صالح) حالة كسر إرماركيتكلوسيد. طباعة (السوق مغلق) حالة كسر إرتراديديسابلد. طباعة (تعطيل التجارة) كسر حالة إرنوتنوغموني. طباعة (لا يكفي المال) كسر حالة إربريشيكانجد. طباعة (تغير السعر) حالة كسر إروفكوتس. طباعة (أوف يقتبس) حالة كسر إربروكيربوسي. طباعة (وسيط مشغول) كسر حالة إريكوت. حالة كسر الطباعة (ريكوت) إرورديرلوكد. طباعة (تم تأمين الطلب) حالة الفاصل إرلونغبوسيتيونسونليوالد. طباعة (مراكز طويلة يسمح فقط) كسر حالة إرتومانيريكستس. طباعة (طلبات كثيرة جدا) كسر حالة إرتراديموديفيدنيد. طباعة (تم رفض التعديل لأن النظام قريب جدا من السوق) حالة كسر إرتراديكونتيكستبوسي. طباعة (السياق التجاري مشغول) كسر حالة إرتراديكسبيراتيونيدينيد. طباعة (يتم رفض انتهاء الصلاحية من قبل وسيط) كسر حالة إرتراديتومانيوردرز. برينت (كمية الأوامر المفتوحة والمعلقة وصلت إلى الحد الذي حدده الوسيط). حالة كسر إرنومكليرور. طباعة (لا خطأ) كسر حالة إرورونجفونكتيونبوانتر. طباعة (خطأ مؤشر وظيفة) كسر حالة إراراريندكسوتفرانج. برينت (مؤشر الصفيف خارج النطاق) برياك كيس إرنوميموريفوركالستاك. طباعة (بدون ذاكرة ل كومة استدعاء الدالة) كسر حالة إريكورسيفستاكوفيرفلو. برينت (تجاوز كومة عودية) كسر حالة إرنوتنوستاكفوربارام. طباعة (كومة غير كافية للمعلمة) حالة كسر إرنوميموريفوربارامسترينغ. طباعة (لا توجد ذاكرة لسلسلة المعلمة) كسر حالة إرنميموريفورتيمبسترينغ. طباعة (لا ذاكرة لسلسلة تيمب) كسر حالة إرنوتينيتياليزدسترينغ. طباعة (عدم تهيئة سلسلة) كسر حالة إرنوتينيتياليزدارايسترينغ. طباعة (لم يتم تهيئة سلسلة في صفيف) حالة كسر إرنوميموريفورارايسترينغ. طباعة (لا توجد ذاكرة لصفيف سلسلة) كسر حالة إرتولونغسترينغ. طباعة (سلسلة طويلة جدا) حالة كسر إريمينديرفرومزيروديفيد. طباعة (الباقي من صفر الفجوة) كسر حالة إرزيروديفيد. طباعة (صفر الفجوة) كسر حالة إروننونكوماند. طباعة (أمر غير معروف) حالة كسر إرورونججومب. طباعة (القفز الخطأ (لم يحدث خطأ أبدا)) كسر حالة إرنوتينيتياليزداراي. طباعة (لم يتم تهيئة صفيف) كسر حالة إردلكالسنوتالويد. طباعة (لا يسمح المكالمات دل) كسر حالة إرسانوتلوادليبراري. طباعة (لا يمكن تحميل مكتبة) كسر حالة إرسانوتكالفونكتيون. طباعة (لا يمكن استدعاء وظيفة) كسر حالة إركستيرنالكالسنوتالويد. طباعة (غير مسموح بمهام الدالة خبير) حالة كسر إرنوميموريفورريتورنستر. طباعة (لا توجد ذاكرة كافية لسلسلة درجة الحرارة التي تم إرجاعها من الوظيفة) كسر الحالة إرسيستمبوسي. طباعة (النظام مشغول (خطأ لم يتم إنشاؤه)) كسر حالة إرينفاليدفونكتيونبارامسنت. طباعة (عدد المعلمات الدالة غير صالحة) حالة كسر إرينفاليدفونكتيونبارامفالو. طباعة (قيمة معلمة الدالة غير صالحة) حالة إرسترجفونكتيونينترالن. طباعة (سلسلة خطأ داخلي وظيفة) كسر حالة إرسوميارايرور. طباعة (بعض الأخطاء مجموعة) كسر حالة إرينكوركتسيريزارايوسينغ. طباعة (مجموعة سلسلة غير صحيحة باستخدام) حالة كسر إركوستومينديكاتوررور. طباعة (خطأ مؤشر مخصص) كسر حالة إرينكومباتيبليارايس. طباعة (صفائف غير متوافقة) كسر حالة إرغلوبالفاريابليسبروسينغ. برينت (خطأ معالجة المتغيرات العمومية) حالة إرغلوبالفاريابلينوتفوند. برينت (لم يتم العثور على المتغير العام) حالة كسر إرفوننوتالويدينتستينغ. طباعة (لا يسمح وظيفة في وضع الاختبار) كسر حالة إرفونكتيونوتكونفيرمد. طباعة (لم يتم تأكيد وظيفة) كسر حالة إرسندمايلرور. برينت (إرسال خطأ في البريد) كسر حالة إرسترينبارامتيريكسبكتد. طباعة (معلمة سلسلة المتوقع) كسر حالة إرينتيغرباراميتيريكسبكتد. طباعة (معلمة عدد صحيح المتوقع) كسر حالة إردوبليباراميتيريكسكتد. طباعة (معلمة مزدوجة المتوقع) كسر حالة إراراياسبارامتيريكسبكتد. طباعة (صفيف كمعلمة المتوقع) كسر حالة إرهيستوريويلوبداتد. طباعة (بيانات التاريخ المطلوبة في تحديث الدولة) حالة كسر إرتراديرور. طباعة (بعض الأخطاء في وظيفة التداول) كسر حالة إريندوفيل. طباعة (نهاية الملف) حالة كسر إرسوميفيليرور. برينت (بعض الأخطاء في الملف) كسر حالة إرورونغفيلنام. طباعة (اسم ملف غير صحيح) حالة كسر إرتومانيوبيندفيلز. طباعة (عدد كبير جدا من الملفات المفتوحة) كسر حالة إرسانوتوبنفيل. طباعة (لا يمكن فتح الملف) حالة كسر إرينكومباتيبليفلاشيس. طباعة (عدم توافق الوصول إلى ملف) حالة كسر إرنوردرزلكتد. طباعة (لا أمر محدد) كسر حالة إروننونسيمبول. طباعة (رمز غير معروف) حالة كسر إرينفاليدبريسيبارام. طباعة (حالة غير صالحة) حالة كسر إرينفاليدتيكيت. برينت (تذكرة غير صالحة) حالة كسر إرترادينوتالويد. طباعة (لا يسمح التجارة - تمكين مربع الاختيار - Allow التداول المباشر في خصائص الخبراء) حالة كسر إرلونغسنوتالويد. طباعة (لا يسمح الشوق - تحقق من خصائص الخبراء) كسر حالة إرسورتسنوتالويد. طباعة (لا يسمح السراويل - تحقق من خصائص الخبراء) حالة كسر إروبجكتالرياديكسيستس. طباعة (كائن موجود بالفعل) حالة كسر إروننونوبجكتبروبيرتي. طباعة (حالة كائن غير معروف) حالة كسر إروبجكتدوسنوتكسيست. طباعة (كائن غير موجود) كسر حالة إروننونوبجكتيب. طباعة (كسر نوع الكائن غير معروف) حالة إرنوبجيتنام. طباعة (لا يوجد اسم كائن) حالة كسر إروبجيككورديناتسيرور. طباعة (خطأ إحداثيات الكائن) كسر حالة إرنوسبيسيفيدسوبويندو. طباعة (لا يوجد إطار فرعي محدد) حالة كسر إرسوموبجيكتيرور. طباعة (بعض الأخطاء في وظيفة الكائن) كسر إروردسكريبتيون (رمز إنت) - إرجاع وصف الخطأ للرمز المحدد و هيريس إي بسيط آخر يستخدم بعض الوظائف التي تم توفيرها في الوظائف السابقة. وإليك كيف يعمل. ويستخدم 3 المتوسطات المتحركة الأسية - سريع ومتوسط وبطيء في الرسوم البيانية اليومية. وفقط عدد قليل من القواعد البسيطة: شراء عندما نكون في الاتجاه الصاعد بيع عندما نحن في الاتجاه الهبوطي الاتجاه الصاعد. سريع ما هو أكبر من متوسطة ما، متوسطة ما هو أكبر من ما بطيئة للشريط الأسبوعي الحالي الاتجاه الهابط. سريع ما هو أقل من المتوسط المتوسط، متوسطة ما هو أقل من ما بطيئة للشريط الأسبوعي الحالي هذا ينبغي أن يمنعنا من بيع، عندما نحن في السوق الصاعدة ومن الشراء في حين في السوق الهبوطي. يتم إنشاء إشارات بيع وبيع أيضا مع نفس 3 المتوسطات المتحركة: شراء إشارة. متوسطة ما يعبر ما بطيئة من أدناه إلى أعلى وسريعة ما فوق المتوسط ما في الرسم البياني اليومي بيع إشارة. متوسطة ما يعبر ما بطيء من فوق إلى أسفل وسريع ما أقل من المتوسط المتوسط في الرسم البياني اليومي إذا كنا في الاتجاه الصاعد، ابحث عن إشارات الشراء. وإذا كنا في الاتجاه الهبوطي، فقط مشاهدة لإشارات البيع. وبالاضافة الى ذلك، فإن هذا التقييم البيئي يستخدم نقاط توقف لاحتفاظ الأرباح بمجرد القيام بها. ومن الممكن أيضا لفتح أكثر من موقف واحد في نفس الوقت (انظر تعريف ماكسوردرز). ديفين ماكسوردرز 5 المؤشر الفني المتغيرات الخارجة فاستما 8 إكسترنال إنت مديتما 21 إكسترنال إنت سلوما 55 إكسترنال إنت تريلستوب 200 إكسترنال إنت إنيتيالسل 200 تحقق من ظروف السوق الصاعدة بول إسبوليشماركيت () إيمبليش ماركيت () إيماج مزدوج سريع (رمز)، PERIODW1 فاستما 0. موديما (بريسكلوس 0) متوسط إما (سيمبول)، PERIODW1 مديومما 0. مديما بريسكلوس 0) ضعف إيما بطيء (سيمبول)، PERIODW1 سلوما 0. مديما بريسكلوس 0) صاعد: متوسط غ سريع غ بطيئة في الرسم البياني الأسبوعي إذا كان (أمبامب سريع غ) أمبامب (متوسط غ بطيء)) ريتورن (ترو) إلس ريتورن (فالس) تحقق من ظروف السوق الهبوطي بول إزبيريشماركيت () إيما سريع مزدوج (سيمبول ()، PERIODW1. فاستما. 0 (مديما) بريسكلوس 0) متوسط إيما مزدوج (سيمبول ()، PERIODW1 مديومما 0. مديما بريسكلوس 0) ضعف إيما بطيء (سيمبول)، PERIODW1 سلوما 0. مديما بريسكلوس 0) صاعد: سريع لوت مديوم لوت بطيئة في الرسم البياني الأسبوعي إذا (متوسط السرعة) أمبامب (متوسط لوت سلو w)) ريتورن (ترو) إلس ريتورن (فالس) ابحث عن شراء إشارة شراء بويسينالوكورد () إيماج كيرنتفاست مزدوج (الرمز ()، PERIODD1. FastMA. 0. موديما. PRICECLOSE. 0) ضعف المتوسط السابق إما (الرمز ()، PERIODD1 مديومما 0. مديما بريسكلوس 1) دوبل كيرنتيميديوم إما (سيمبول ()، PERIODD1 مديومما 0. مديما بريسكلوس 0) دوبل بريفيوسلو إيما (سيمبول () 0. إذا كان (كيرنتفاست غ الحالي كيرنتيمديوم) إذا ((بريفيوسميديوم لوت بريفيوسلو) أمبامب (كيرنتيمديوم غ تيار الحالي) )) ريتورن (ترو) ريتورن (فالس) ابحث عن باقة إشارة بيع سيلسينالوكورد () دوبل كيرنتفاست إيما (سيمبول ()، بيريود 1. فاستما 0. مديما. بريسكلوس 0) ضعف إما السابق (رمز) ()، PERIODD1. مديومما 0. مديما بريسكلوس 1) دوبل كيرنتيميديوم إما (سيمبول ()، PERIODD1 مديومما 0. مديما بريسكلوس 0) دوبل بريفيوسلو إيما (سيمبول ()، بيريود 1. سلوما 0. مديما بريسكلوس 1) (0) إذا كان (كيرنتفاست لوت سو رنتمديوم) إذا كان ((بريفيوسديميديوم غ بريفيوسلو) أمبامب (كيرنتيميديوم لوت كيرنتسلو)) عودة (صحيح) عودة (كاذبة) التحقق من شروط بيع أو شراء موقف الاختيار فارغةفوروبين () مضاعفة فقط التجارة على بداية شريط جديد إذا (المجلد 91 0 93 غ 1) عودة تحقق من حالة شراء على الزوج المحدد إذا (إسبوليشماركيت ()) إذا (بويسينالوكورد () الكثير لوتسوبتيميزد (إنيتيالسل بوينت) نيوماركيتوردر (سيمبول ()، بوي. قطعة أرض. اسأل - نقطة إنيتيالسل. 0) تحقق من حالة البيع على الزوج المحدد إذا كان (إسبيريشماركيت ()) (سيلسينالوكورد ()) الكثير لوتسوبتيميزد (نقطة إنيتيالسل) نيوماركيتوردر (سيمبول ()، بيع الكثير إنيتيالسل نقطة الشراء 0) تحديث توقف زائدة فواد أوبديتترايلينغستوبس () (j سيليكتبيبوس. موديترادس) كاذبة) كسر إذا كان (أوردرماجينومبر () ماجينومبر رمز أوردرزيمبول () رمز (أ) أوردرزوتال () j) ()) أوردرتيب () أوبوي) هو أمر موجود بالفعل في منطقة الربح إذا كان (أسك - ترايلستوب بوينت غ أوردروبنبريس ()) خسارة جديدة فوق الأوامر الحالية ستوبلوس إذا (أسك - ترايلستوب بوينت غ أوردرستوبلوس ()) أوردرموديفي (أوردرتيكيت (أوردروبنبريس)، أسك - تريلستوب بوينت 0. 0. الأزرق) تابع إذا كان (أوردرتيب () أوبسيل) هو أمر موجود بالفعل في منطقة الربح إذا كان (بيد ترايلستوب بوينت لوت أوردرنبنبريس)) هو خسارة جديدة تحت الأوامر الحالية ستوبلوس إذا ( بيد تريلستوب بوينت لوت أورد إرستوبلوس ()) أوردرموديفي (أوردرتيكيت ()، أورديروبنريس ()، بيد تريلستوب بوينت. 0. 0. الأزرق) تابع نقطة بدء بداية الخبير () إذا كان (ميديما لوت فاستما) في حالة العودة (سلوما لوت مديومما) عودة تحديث أوامرنا ومديري المال أوبديت مانيماناجر () أوبديتوردرماناجر () تحديث توقف زائدة - نحن لا تستخدم بيع إشارة لإغلاق الموقف، وهذا يمكن أن تنفذ في وقت لاحق. ولكن يجب أن تعطي نقاط توقف نتائج جيدة إما أوبديتسترايلينغستوبس () تحقق من فتح موقف إذا (كونتوبينوردرز () لوت ماكسوردرز تشيكفوروبين () هيريس الجزء الذي يمكن أن يكون الأمثل: خارجي إنت فاستما 8 خارجي إنت متوسط 21 خارج إنت سلوما 55 إكسترنال إنت ترايلستوب 200 إكسترن إنت إنت إنيتيالسل 200 فاستما و مديومما و سلوما هي فترات المتوسطات المتحركة الأسية. يحدد إنيتيالسل وقف الخسارة الأولي الذي سيتم استخدامه عند فتح موضع جديد. تريلينغستوب يحدد حجم وقف زائدة في نقطة. بعض التحسينات الممكنة هذا النظام هو لأغراض التعلم، وينبغي أن لا تستخدم بشكل أفضل في التداول المباشر - يمكنك تحسينه واختباره على حساب تجريبي إذا كنت ترغب في ذلك. إلى بسيطة وهناك العديد من الأشياء التي ينبغي تحسينها قبل استخدامه على حساب حقيقي مثل على سبيل المثال: كشف أفضل من الاتجاه العام للسوق - تحسن بسيط هو عدم استخدام نفس المتوسط المتحرك لفترات الرسم البياني اليومي والأسبوعي فتح المزيد من المواقف عندما يتحرك السوق في الاتجاه المطلوب. لا تنتظر حتى يحدث إشارة شراء أخرى، ولكن فتح موقف جديد إذا كنا بالفعل في منطقة الربح مع النظام الأول وهناك احتمالات أن ثيريس أي تغيير الاتجاه في الأفق الاستفادة من أفضل إدارة المال والمخاطر. باكتستينغ أند أوبتيميزاتيون لقد اتخذت عام 2007 فترة باكتستينغ واستخدمت هذه القيم: من بين كل النتائج حصلت، لقد اخترت واحدة مع نتيجة جيدة (غ 26.000 الربح) و سحب من ثم لقد استخدمت هذه القيم ل باكتستينغ ل 2008: غ 40.000 الربح ولكن هذا كان محظوظا. تكوينات أخرى مع قيم مختلفة يؤديها من سيئة إلى حقا، سيئة حقا. لذلك ثريس لا يزال هناك الكثير للقيام به: تحسين إدارة المخاطر والمال تحسين إدارة النظام تحتاج إلى أفضل كشف الاتجاه العام تطوير إشارات أفضل إضافة إلى مواقف مربحة. والسماح لفتح المزيد من الطلبات ولا تنتظر إشارة أخرى ولكن مفتوحة عندما يتم تحقيق أرباح كبيرة بالفعل قطع يفقد بسرعة. لا تستخدم المحطة الأولية الثابتة ولكن حساب ذلك (باستخدام أتر على سبيل المثال) أفضل باكتستينغ والتحسين: تحسين لعام 2002 و باكتست ذلك لعام 2003. حدد بعض الإعدادات و باكتست لهم أيضا لعام 2004. التخلص من الإعدادات التي أجريت الفقراء و باكتست لعام 2005 مع الإعدادات المتبقية وهلم جرا. حتى يكون لديك الإعداد الجيد الذي يؤدي بشكل جيد خلال فترة أطول إذا كان لديك أي أسئلة أو تحسينات، واسمحوا لي أن أعرف. أي تعليق ترحيب 3ma. mq4 6 كب 321 التنزيلات ما الكثير من العمل كنت قد وضعت هنا. شكرا لك الجهد. ليس لدي مهارات البرمجة الخاصة بك. تعليقات زوجين: قد يكون هذا خطأي بسبب التثبيت غير الصحيح. يرسل إي حجم الكثير غير صحيح. كنت الحصول على 131 أخطاء لذلك وضعت اثنين من أوامر الطباعة في التعليمات البرمجية لمعرفة ما كان حجم الكثير. أوامر الطباعة على الخط قبل خطوط نيوماركيتوردر. بعد ذلك، افتح مركز التاريخ في MT4 (اضغط F2)، وحدد زوج العملات في قائمة الرموز على اليسار وحدد الإطار الزمني الأدنى، دقيقة واحدة (انقر نقرا مزدوجا فوقه). اضغط كوتدونلوادكوت والإجابة كوتوكوت عندما تحصل على التحذير. قد يستغرق الأمر بضع دقائق حتى يتم تنزيل كل القيم التاريخية. لدي 3.5 ميو 1 دقيقة الشموع، وهذا هو آخر 10 سنوات في دقائق يجب أن يكون كافيا. يمكنك القيام بذلك مع كل إطار زمني والعملة، أو استخدام البرنامج النصي المضمنة كوبيريودكونفرتركوت، الذي يأتي مع MT4. أنا لا أعتقد أنك بحاجة إلى تحميل لكل إطار زمني أو استخدام بيريوديكونفرتر إذا تم تحميل البيانات التاريخ من خلال مركز التاريخ. عندما تحميل 1 دقيقة لزوج العملات مع مركز التاريخ يتم ملء جميع الأطر الزمنية الافتراضية ومتوفرة عند انتهاء. لن يتم استخدام محول الفترة الزمنية إلا للأطر الزمنية المخصصة. إذا قمت باستيراد البيانات التي تم تحميلها خارجيا (مثل ألباري) ثم يجب استخدام بيريكونكونفرتر في أي أطر زمنية أخرى من 1min. أنا ببساطة مندهش عندما قرأت موضوع كوتمي أولا إيكوت. قراءة أبي يوم أمس، ونشر أول إي اليوم. هذه هي القدرة على مبرمج المهرة الحقيقي وكمتاجر، كنت تسير في الاتجاه الصحيح. You have noticed general mistakes soon and are trying to correct them soon. Your quotto doquot list is perfect also. You are so capable enough to do most anything you want, but never forget to be simple. This is a statement that is posted in other forex forum recently and I totally agree. quotI know many who are real PRO traders and they say K. I.S. S Keep it simple system. quot Most trading system that has too many parameters that can quotadjustquot to the market (its what HAPPEND in the past) doesnt work well. Keep your eye on risk management and how to exit the market, then you will be successfull. The reasons why most traders will fail are 1) overtrade (risk too much at a time) 2) predict the future too much (especially by indicators) and underestimate randomness of the market 3) take profit too early and stop loss too late (both are related to the exit) 4) too complicated minded and just cant be consistent Thank you for posting and Good luck. Ive got a small present for you. These are the codes to autodetect and correct a problem of the broker that has quotone more digitquot. For example, most brokers have 4 price digits for EURUSD. (example 1.2345) But Alpari (I dont know whether there are another brokers or not) has 5 digits (example 1.23456) For JPY cross, most brokers gives 123.45 and Alpari gives 123.456. This causes an error when you use pips based integer value (stoploss or takeprofit etc.). Worst of all, if you calculate lot size from pips based stoploss, It returns wrong lot size. It will cause fatal malfunction for risk management. It can be used like this. (Maybe you can do it more sophisticated and universal way) int DQADJ DeciQuoteAdjuster() SL by pips int SLpips StopLossDQADJ SL decision double SL Ask - StopLossDQADJPoint lot size decision double RiskAmount AccountFreeMargin() (RiskRate100) double lot RiskAmount (PipValueStopLossDQADJ) StopLoss is pips based integer. PipValue means PL value for 1lot and 1pip. return(DeciQuoteADJ) return 1 or 10 I wanted to test EA 2 but the file common. mqh is missing. where can I find it One more question. I am new to all this. I use IMA function in the code as below. It seems to me that the IMA call does not return current values I want it to buy or sell when after the gold cross but it seems to do it elsewhere. Am I missing something. Maybe someone wants to cooperate on the project Order details extern int Slippage 3 How much slip can we accept extern double Lots 0.01 extern int MagicNumber 0 Stops extern bool UseStopLoss False No stops for the Axitrader extern int StopLoss 30 extern bool UseTakeProfit False extern int TakeProfit 60 extern bool UseTrailingStop True extern int TrailingStop 30 extern bool EachTickMode True extern bool OrderNoLossProfit True for axitrader ------------------------------------------------------------------ expert initialization function ------------------------------------------------------------------ int init() ---- Ticks back int BuyBackTicks 2 back ticks to check if time low lt high to buy int CloseBuyBackTicks 0 int SellBackTicks 2 back ticks to check if time low lt high to buy int CloseSellBackTicks 0 MA int MALow 5 int MAHigh 8 int Current 0 Current Bar int Order 0 int Ticket 0 int BarCount double StopLossLevel, TakeProfitLevel double BuyBackLo w iMA(NULL, 0, MALow, 0, MODEEMA, PRICECLOSE, Current BuyBackTicks) double BuyBackHigh iMA(NULL, 0, MAHigh, 0, MODEEMA, PRICECLOSE, Current BuyBackTicks) double BuyNowLow iMA(NULL, 0, MALow, 0, MODEEMA, PRICECLOSE, Current 0) double BuyNowHigh iMA(NULL, 0, MAHigh, 0, MODEEMA, PRICECLOSE, Current 0) double SellBackLow iMA(NULL, 0, MALow, 0, MODEEMA, PRICECLOSE, Current SellBackTicks) double SellBackHigh iMA(NULL, 0, MAHigh, 0, MODEEMA, PRICECLOSE, Current SellBackTicks) double SellNowLow iMA(NULL, 0, MALow, 0, MODEEMA, PRICECLOSE, Current 0) double SellNowHigh iMA(NULL, 0, MAHigh, 0, MODEEMA, PRICECLOSE, Current 0) double CloseBuyBackLow iMA(NULL, 0, MALow, 0, MODEEMA, PRICECLOSE, Current CloseBuyBackTicks) double CloseBuyBackHigh iMA(NULL, 0, MAHigh, 0, MODEEMA, PRICECLOSE, Current CloseBuyBackTicks) double CloseBuyNowLow iMA(NULL, 0, MALow, 0, MODEEMA, PRICECLOSE, Current 0) double CloseBuyNowHigh iMA(NULL, 0, MAHigh, 0, MODEEMA, PRICECLOSE, Current 0) double C loseSellBackLow iMA(NULL, 0, MALow, 0, MODEEMA, PRICECLOSE, Current CloseSellBackTicks) double CloseSellBackHigh iMA(NULL, 0, MAHigh, 0, MODEEMA, PRICECLOSE, Current CloseSellBackTicks) double CloseSellNowLow iMA(NULL, 0, MALow, 0, MODEEMA, PRICECLOSE, Current 0) double CloseSellNowHigh iMA(NULL, 0, MAHigh, 0, MODEEMA, PRICECLOSE, Current 0) Alert(quotBuyBackLow, BuyBackHighquot, BuyBackLow, quot quot, BuyBackHigh) Alert(quotSellBackLow, SellBackHighquot, SellBackLow, quot quot, SellBackHigh) Check position bool IsTrade False for (int i 0 i lt OrdersTotal() i ) OrderSelect(i, SELECTBYPOS, MODETRADES) Select order by position in the trading pool bool OrderSelect( int index, int select, int poolMODETRADES) The function selects an order for further processing. It returns TRUE if the function succeeds. It returns FALSE if the function fails. To get the error information, one has to call the GetLastError() function. The pool parameter is ignored if the order is selected by the ticket number. The ticket number is a unique order identifier. To find out from what list the order has been selected, its close time must be analyzed. If the order close time equals to 0, the order is open or pending and taken from the terminal open positions list. One can distinguish an open position from a pending order by the order type. If the order close time does not equal to 0, the order is a closed order or a deleted pending order and was selected from the terminal history. They also differ from each other by their order types. Parameters: index - Order index or order ticket depending on the second parameter. select - Selecting flags. It can be any of the following values: SELECTBYPOS - index in the order pool, SELECTBYTICKET - index is order ticket. pool - Optional order pool index. Used when the selected parameter is SELECTBYPOS. It can be any of the following values: MODETRADES (default)- order selected from trading pool(opened and pending orders), MODEHISTORY - order selected from history pool (closed and canceled order). Closing existing orders if (OrderType() OPSELL ampamp OrderSymbol() Symbol()) Sell order found for currency pair same as chart close existing order if condition fulfilled(to be specified below) Closing Strategy here if (CloseSellBackLow lt CloseSellBackHigh ampamp CloseSellNowLow gt CloseSellNowHigh) Order SIGNALCLOSESELL if (CloseSellBackLow lt CloseSellBackHigh ampamp CloseSellNowLow gt CloseSellNowHigh)Order SIGNALCLOSEBUY if (Order SIGNALCLOSEBUY) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange) continue Trailing stop if(UseTrailingStop ampamp TrailingStop gt 0) if(Bid - OrderOpenPrice() gt Point TrailingStop) if(OrderStopLoss() lt Bid - Point TrailingStop) OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen) if (EachTickMode) BarCount Bars continue if (OrderType() OPBUY ampamp OrderSymbol() Symbol()) close existing order if condition fulfilled (to be specified below) Closing Strategy her e if (CloseSellBackLow lt CloseSellBackHigh ampamp CloseSellNowLow gt CloseSellNowHigh) Order SIGNALCLOSESELL if (Order SIGNALCLOSESELL) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen) if (Order SIGNALBUY) if (AccountFreeMargin() lt (1000 Lots)) Alert(quotWe have no money. Free Margin quot, AccountFreeMargin()) return(0) StopLossLevel FuncStopLossLevel(UseStopLoss, StopLoss) TakeProfitLevel FuncTakeProfitLevel(UseTakeProfit, TakeProfit) Ticket OrderSend(Symbol(), OPBUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, quotBuy(quot MagicNumber quot)quot, MagicNumber, 0, DodgerBlue) Alert(quotBuying ticket quot, Ticket, quotError code quot, GetLastError() ) if(Ticket gt 0) if (OrderSelect(Ticket, SELECTBYTICKET, MODETRADES)) Alert(quotBUY order opened. quot, OrderOpenPrice()) if (OrderNoLossProfit) if (StopLoss gt 0 TakeProfit gt0) xxx OrderModify(OrderTicket(), OrderOpenPrice(), Ask Point StopLoss, Ask TakeProfit Point, 0, DarkOrange) else Alert(quotError opening BUY order. quot, GetLastError()) SELL SELL SELL Found gold cross: Insert Selling Strategy if (SellBackLow gt SellBackHigh ampamp SellNowLow lt SellNowHigh) Order SIGNALSELL if (Order SIGNALSELL) Check free margin if (AccountFreeMargin() lt (1000 Lots)) Alert(quotWe have no money. Free Margin quot, AccountFreeMargin()) return(0) if (UseStopLoss) StopLossLevel Bid StopLoss Point else StopLossLevel 0.0 if (UseTakeProfit) TakeProfitLevel Bid - TakeProfit Point else TakeProfitLevel 0.0 Ticket OrderSend(Symbol(), OPSELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, quotSell(quot MagicNumber quot)quot, MagicNumber, 0, DeepPink) if(Ticket gt 0) if (OrderSelect(Ticket, SELECTBYTICKET, MODETRADES)) Alert(quotSELL order opened. quot, OrderOpenPrice()) modify order with stoploss, take profit for axitrader xxx if (OrderNoLossProfit) if (StopLoss gt 0 TakeProfit gt0) OrderModify(OrderTicket(), OrderOpenPrice(), Ask Point StopLoss, Ask TakeProfit Point, 0, DarkOrange) else Alert(quotError opening SELL order. quot, GetLastError()) Alert(quotSelling Ticket quot, Ticket, quotError code quot, GetLastError()) double FuncStopLossLevel(bool UseStopLoss, double StopLoss) double StopLossLevel if (UseStopLoss) StopLossLevel Ask - StopLoss Point else StopL ossLevel 0.0 return (StopLossLevel) double FuncTakeProfitLevel(bool UseTakeProfit, double TakeProfit) double TakeProfitLevel if (UseTakeProfit) TakeProfitLevel Ask - TakeProfit Point else TakeProfitLevel 0.0Opening a Trade Using OrderSend In the last module, we went over the basic Expert Advisor and how to create input parameters. If you8217d like to review that module, click here: The Expert Advisor. Today we are going to do something more useful with an Expert Advisor: open a trade. The MetaTrader function used to open a trade is called 8220OrderSend8221. This table details each of the parameters required to set when using the function. The symbol of the currency. The type of order to open. See the table below. The number of lots to open. The preferred open price. The number of points the preferred open price may slip. The stoploss set in the order on the brokers server. This value must be calculated using the price and the currency point value. The takeprofit set in the order on the brokers server. This value must be calculated using the price and the currency point value. A text comment that can be seen from within the MetaTrader platform when viewing open orders. The color of the arrow that will appear on the price chart when the OrderSend function is successful. Most of these parameters are pretty straight forward, but a few require a bit of an explanation. The 8220 symbol 8221 parameter is the name of the currency pair. You can use the MT function 8220Symbol()8221 which will automatically use the currency of the chart that the EA is running on. Or you can even define any name in quotes, for example 8220EURUSD8221. (Note: Opening a currency different than the one that the EA is running requires some special techniques which I8217ll cover in a later module.) The 8220 cmd 8221 parameter is the command that tells the broker8217s server what you want to do. The choices for a market order are OPBUY or OPSELL 8211 open a Buy or Sell trade. The 8220 volume 8221 parameter is the number of lots you8217d like to open or close. The 8220 price 8221 parameter is the preferred price. On MT, I8217ve found this value should be set to the 8220Ask8221 price for opening Buy orders and the 8220Bid8221 price for opening Sell orders. Any other values seem to cause the function to fail. The 8220 slippage 8221 parameter is how many points you8217ll allow the trade to slip and still complete the order. For example, suppose you8217d like to buy the EURUSD at 1.3595 and the slippage is set to 3 8211 you might pay as much as 1.359531.3598. (This may look bad, but if you set your slippage too small you may not get the trade at all.) The 8220 stoploss 8221 parameter is the limit for how far the trade can go against you before the broker8217s server closes the position. (Note: Your EA does not need to be running for the stoploss to work. This is a value stored on the broker8217s system.) This value will be lower than your open price for Buy orders and greater than the open price for Sell orders. Both the stoploss and takeprofit parameters must be in exact terms of the price, so you need to do some math here. For example, if you8217d like a stoploss of 15 points, you need to subtract 15 from the open price (for an open price of 1.3595): stoploss 1.3595 8211 0.0015 1.3580 Fortunately, there is an easy way to get the 0.0015 number using the 8220Point8221 function: 15 Point 0.0015 This way, you can work with a number like 15 instead of 0.0015. (I personally think the OrderSend function could have been written to simply accept a relative value like 15 for the stoploss instead of requiring an absolute price value like 1.3580). The 8220 takeprofit 8221 parameter is the limit of how far a trade can go in your direction before it closes for a profit. This value will be higher than your open price for Buy orders and less than the open price for Sell orders. The rest of this parameter is just like the stoploss. The 8220 comment 8221 parameter can be any text. It is saved with the trade and appears in the comment window in the trading terminal. I usually put the name of the EA in this field so when I look at my open trades I can see what EA has opened each. The 8220 magic 8221 parameter is a number that you can assign to the trade so that you can identify it later. We8217ll see exactly how in a later module on the OrderSelect function. The 8220 expiration 8221 parameter holds an expiration time for pending orders. It has no meaning for market orders. (In my experience it does not work for pending orders either.) The 8220 arrowcolor 8221 parameter allows you to choose the color of the arrow that is drawn on the chart when the trade is opened. Now that we have described all of the input parameters, I8217ll make a quick note about the 8220return value8221. The OrderSend function will return a value back after it has finished running. In MQL, like most languages, a negative number is a bad thing and zero or a positive number is usually a good thing 8211 indicating the function executed successfully. We8217ll capture and check the value return from the OrderSend function so we8217ll know if it worked and actually opened a trade successfully. Note: All of the information about the OrderSend function is available from within the MetaEditor. The help file is very useful. Even as an experienced MQL programmer, I refer to the help often. (From within the MetaEditor, select View-gtNavigator and then use the search option to find your information.) So, let8217s see what the MQL code looks like. Here is the MQL code for the OrderSend function. extern int stoploss200 the takeprofit extern int takeprofit200 the number of lots extern double lots 1.0 this function will be called each time new price data arrives from the broker int start() int status OrderSend( Symbol(), the synbol for this chart OPBUY, a buy order lots, number of lots Ask, use the ask price for a BUY 3, allow the price up to move 3 points Ask 8211 (stoplossPoint), stop Bid (takeprofitPoint), limit 8220My Simple EA8221, comment to see in TerminalCompany 8675309, a unique to id this trade 0, expiration, doesn8217t work Blue a blue arrow ) if( status lt 0 ) Comment(8220OrderSend Failed. Error8221, GetLastError()) return(0) Here are some common error codes returned from the OrderSend function that you may come across as you develop your EA8217s: ERRINVALIDPRICE 8211 usually the wrong preferred price: For Buy, use Ask, for. use Bid. ERRINVALIDSTOPS 8211 usually bad math with the stoploss or takeprofit values, or they are zero and the broker will not accept zero. ERRINVALIDTRADEVOLUME 8211 the lot value is invalid, usually a problem with mini or micro lots. If you have trouble, try setting this to 1.0 to see if the error goes away. ERRNOTENOUGHMONEY 8211 self explanatory, if you are testing using a demo account this can happen often 8211 just open another demo account. This wraps up our lesson on opening a trade with an Expert Advisor. (To open a Sell trade, change the 8220cmd8221 parameter to OPSELL and reverse the math on the stoploss and takeprofit.) This limited amount of information is dangerous, so be careful with this code and please, only run this on a demo account Next module we8217ll learn how to use technical indicatorsMQL4 Reference MetaQuotes Language 4 (MQL4) is a built-in language for programming trading strategies. This language is developed by MetaQuotes Software Corp. based on their long experience in the creation of online trading platforms. Using this language, you can create your own Expert Advisors that make trading management automated and are perfectly suitable for implementing your own trading strategies. Besides, using MQL4 you can create your own technical indicators (custom indicators), scripts and libraries. MQL4 contains a large number of functions necessary for analyzing current and previously received quotes, and has built-in basic indicators and functions for managing trade orders and controlling them. The MetaEditor (text editor) that highlights different constructions of MQL4 language is used for writing the program code. It helps users to orientate themselves in the expert system text quite easily. The brief guide contains functions, operations, reserved words, and other language constructions divided into categories, and allows finding the description of every used element of the language. Programs written in MetaQuotes Language 4 have different features and purposes: Expert Advisor is a mechanical trading system linked up to a certain chart. An Expert Advisor starts to run when an event happens that can be handled by it: events of initialization and deinitialization, event of a new tick receipt, a timer event, depth of market changing event, chart event and custom events. An Expert Advisor can both inform you about a possibility to trade and automatically trade on an account sending orders directly to a trade server. Expert Advisors are stored in terminaldirectoryMQL4Experts. Custom Indicator is a technical indicator written independently in addition to those already integrated into the client terminal. Like built-in indicators, they cannot trade automatically and are intended for implementing of analytical functions only. Custom indicators are stored in terminaldirectory MQL4Indicators Script is a program intended for a single execution of some actions. Unlike Expert Advisors, scripts do not process any actions, except for the start event (this requires the OnStart handler function in a script). Scripts are stored in terminaldirectoryMQL4Scripts Library is a set of custom functions intended for storing and distributing frequently used blocks of custom programs. Libraries cannot start executing by themselves. Libraries are stored in terminaldirectoryMQL4Libraries Include File is a source text of the most frequently used blocks of custom programs. Such files can be included into the source texts of Expert Advisors, scripts, custom indicators, and libraries at the compiling stage. The use of included files is more preferable than the use of libraries because of additional burden occurring at calling library functions. Include files can be stored in the same directory as a source file - in this case the include directive with double quotes is used. Another place to store include files is terminaldirectoryMQL4Include, in this case the include directive is used with angle brackets.
Comments
Post a Comment