-
OrderModify (ECN)
أواجه مشكلة صغيرة في معرفة أفضل طريقة لاستخدام OrderModify على وسيط ECN.
في الأساس ، أضع الطلب أولاً:
ticket = OrderSend (Symbol ()، OP_BUY، Lots، Ask، Slippage، 0،0، Test EA، 16384،0، Green)؛
ثم السطر التالي يكون:
OrderModify (تذكرة، OrderOpenPrice ()، اسأل نقطة * StopLoss، اسأل نقطة * TakeProfit، 0، أخضر)؛
ومع ذلك ، إذا كان السوق يتحرك بسرعة ، فلن يتم وضع takeprofit و stoploss نسبة إلى موضع الإدخال ، ولكن بدلاً من ذلك يتم تطبيقها على Ask في الوقت الذي يتم تعديله فيه.
جربت ما يلي:
OrderModify (تذكرة، OrderOpenPrice ()، OrderOpenPrice () - نقطة * StopLoss، OrderOpenPrice () نقطة * TakeProfit، 0، أخضر)؛
على الرغم من أن ذلك يرمي خطأ في وحدة التحكم ولا يقبل أمر التعديل.
أيه أفكار؟ شكر!
-
مرة أخرى ... FIRST Openprice () هي المشكلة (فقط الأوامر المعلقة تسمح بتغيير OpenPrice). لدي رمز ECN متوافق - هنا مقتطف عمل: OrderModify (التذكرة ، 0 ، NormalizeDouble (OrderOpenPrice () (StopLoss * Point) ، Digits) ، 0،0 ، CLR_NONE) ؛ أيضا إلا إذا استخدمت OrderSelect () فإن OrderOpenPrice () ليس له قيمة ... - يمكنك القيام askprice = Ask؛ ثم تقوم به OrderSend و OrderModify باستخدام askprice متغير. double askprice = اسأل؛ ticket = OrderSend (Symbol ()، OP_BUY، Lo ts، askprice، Slippage، 0،0، Test EA، 16384،0، Green)؛/bool xbool = OrderSelect (ticket، SELECT_BY_TICKET)؛ - اختياري في هذا المثال OrderModify (التذكرة ، 0 ، askprice-Point * StopLoss ، askprice Point * TakeProfit ، 0 ، CLR_NONE) ؛ إذا كنت قد استخدمت OrderSelect () ، فيمكنك استخدام OpenOrderPrice () - غير مطلوب في المثال أعلاه.
-
OrderModify (التذكرة ، 0 ، OrderOpenPrice () - Point * StopLoss ، OrderOpenPrice () Poi nt * TakeProfit، 0، CLR_NONE)؛ لا يمكن استخدام OpenPrice () الذي استخدمته إلا مع الأوامر المعلقة. (غير قادر على تغيير OpenPrice لأمر السوق) - كما أنني لاحظت أنك وضعت Green هناك - هل تريد حقًا معرفة متى حدث التعديل؟ ستقوم بالكتابة فوق NewOrder Arrow.
-
لست متأكدًا مما إذا كنت واضحًا تمامًا. في الأساس، ويتبع خط OrderSend على الفور من قبل OrderModify كما ECN أستخدمه لا اسمحوا لي أن وضع SL TP في نفس السطر. وبالتالي ، عندما يتحرك السوق بسرعة فإنه يحدد SL TP نسبة إلى سعر الطلب المتحرك بدلاً من السعر المفتوح. أريد تعيين SL TP نسبة إلى سعر فتح الأمر الفعلي ، ولهذا السبب كنت تستخدم OrderOpenPrice () في سطر OrderModify. ويعرف OrderModify على النحو التالي: منطقي OrderModify (الباحث تذكرة، السعر المزدوج، stoploss مزدوجة، takeprofit مزدوج، انتهاء التاريخ والوقت، اللون arrow_color = CLR_NONE) لذا يجب أن يكون لديك: OrderModify (تذكرة، OrderOpenPrice ()، ولتر، لتر، مقارنة stoploss لأجل مفتوح pricegt، GT ؛، لتر، لتر، takeprofit بالنسبة لطلب pricegt مفتوحة، GT ؛، 0، CLR_NONE) ما أريد أن أعرفه هو ما ينبغي أن تستخدم بين تلك لتر، لتر، GT، GT. في هذا الخط
-
آه ، سبب استجوابك هو أنه عند تشغيل EA على حساب حقيقي فإنه سيقبل OrderModify مع أول OrderOpenPrice () ، ولكن ليس إذا كنت استخدمه لتحديد TP SL. سأستخدم اقتراحك ، شكرا!
-
أوه .. لكن هل يمكنك فعل ذلك لـ OrderSend؟ إذا تغير سعر الطلب بين تعيين القيمة المزدوجة وتنفيذ OrderSend ، ألن يرفض الطلب؟
-
آه ، انتظر أرى .. يجب أن أفضل استخدام OrderSelect ، وحصلت عليه. هذا ما سأفعله .. تنهد
-
-
ticket = OrderSend (Symbol ()، OP_BUY، Lo ts، askprice، Slippage، 0،0، Test EA، 16384،0، Green)؛ bool xbool = OrderSelect (البطاقة ، SELECT_BY_TICKET) ؛ OrderModify (التذكرة ، 0 ، OrderOpenPrice () - Point * StopLoss ، OrderOpenPrice () Point * TakeP rofit، 0، CLR_NONE)؛ نعم ، إذا كنت تستخدم OrderSelect () ، فيمكنك القيام بذلك كما تريد (دون محاولة تعديل سعر أمر موجود) - كما لا داعي للقلق بشأن تغيير السعر. تنفيذ هذه الأوامر بالمللي ثانية. يمكنك في الواقع أن تفعل بعض الشيء بين التصريحات دون قلق.