از دست دادن

ساخت وبلاگ

دو روش وجود دارد که می توان قیمت ضرر توقف را برای یک سفارش تعیین کرد:

 

  • با تعیین قیمت ضرر توقف پس از ایجاد سفارش:

     

Engine. Submitorder ("سفارش" ، ابزار. eurusd ، OrderCommand. Buy ، 0. 001 ، 0 ، 20 ، 1. 2222 ، 0) ؛
Order. SetStopLossPrice (1. 2222) ؛

ضرر را به یک سفارش موجود تنظیم کنید

برای تعیین قیمت ضرر توقف ، شرایط زیر باید برآورده شود:

  1. سفارش باید در حالت پر یا باز شود.
  2. قیمت ضرر توقف باید با 0. 1 پیپ قابل تقسیم باشد ، در غیر این صورت سفارش رد می شود.
  3. نمی توان بیش از یک بار در یک ثانیه قیمت ضرر را متوقف کرد.

رابط IORDER 3 روش برای ایجاد یا اصلاح قیمت ضرر توقف یک سفارش موجود ارائه می دهد. روش void setStopLossPrice (قیمت دو برابر):

IORDER ORDER = ENGINE. GETORDER ("سفارش") ؛Order. SetStopLossPrice (1. 2222) ؛

روش void setStopLossPrice (قیمت دوتایی ، طرفین سمت) به شما امکان می دهد طرف مورد استفاده در شرایط اتلاف توقف را مشخص کنید:

Order. SetStopLossPrice (1. 2222 ، side. ask) ؛

و آخرین اما نه کمترین اعتبار Void SetStopLossPrice (قیمت دوتایی ، طرفین سمت ، Double TrailingStep) به شما امکان می دهد مرحله دنباله دار را تنظیم کنید:

Order. SetStopLossPrice (1. 2222 ، Side. bid ، 20) ؛

توجه داشته باشید که مقدار پارامتر مرحله دنباله دار باید بالاتر یا برابر با 10 باشد تا با موفقیت اعمال شود.

لغو از دست دادن توقف

اگر قیمت ضرر مشخص شده برابر با صفر باشد ، وضعیت ضرر توقف اعمال نمی شود. در مثال زیر ، ما وضعیت اتلاف توقف را از یک دستور موجود حذف می کنیم:

IORDER ORDER = ENGINE. GETORDER ("سفارش") ؛Order. SetStopLossPrice (0) ؛

با از دست دادن توقف نزدیک تشخیص دهید

به منظور تشخیص اینکه این دستور با رعایت شرایط از دست دادن توقف بسته شده است ، اگر Imessage. getReasons () شامل iMessage. Reason. Order_Closed_By_sl باشد ، باید در istrategy. onmessage بررسی شود. برای اطلاعات بیشتر در مورد پیام ها ، به مقاله State State مراجعه کنید. استراتژی زیر را در نظر بگیرید که باعث می شود یک دستور در دیدار با قیمت ضرر توقف و دستور دیگری برای بسته شدن بدون قید و شرط بسته شود:

Override void onstart (Icontext Context) JFException را پرتاب می کندOverride void void onMessage (پیام imessage) JFException را پرتاب می کندconsole. getout (). println (پیام) ؛if (message. gettype () == imessage. type. order_close_ok)دیگر>>

مثال ها

مدیریت از دست دادن را مدیریت کنید

یک استراتژی را در نظر بگیرید که نشان می دهد چگونه می توان با انجام اقدامات زیر ، از دست دادن یک ترتیب خاص را مدیریت کرد:

  1. ضرر توقف را در ایجاد سفارش اضافه کنید ،
  2. ضرر توقف را به یک سفارش موجود اضافه کنید ،
  3. از دست دادن توقف حذف کنید ،
  4. از دست دادن توقف تغییر دهید.
بسته jforex. strategies ؛واردات com. dukascopy. api.*؛واردات com. dukascopy. api. iengine. ordercommand ؛/** * این استراتژی نشان می دهد که چگونه می توان از دست دادن توقف سفارش استفاده کرد: * 1) ضرر توقف را در ایجاد سفارش اضافه کنید * 2) ضرر توقف را به یک دستور موجود اضافه کنید * 3) حذف از دست دادن توقف * 4) اصلاح را از دست دادن متوقف کنید * * استراتژیتمام تغییرات سفارش را چاپ می کند و سفارش را در توقف استراتژی بسته می کند * */ کلاس عمومی Managesl ISTrategy را پیاده سازی می کند<@Configurable("Instrument") public Instrument instrument = Instrument.EURUSD; @Configurable("Instrument") public Period period = Period.TEN_SECS; @Configurable("Order Command") public OrderCommand cmd = OrderCommand.BUY; @Configurable("Stop Loss In Pips") public int StopLossInPips = 5; private IConsole console; private IHistory history; private IEngine engine; private IOrder order; @Override public void onStart(IContext context) throws JFException خصوصی Double getLprice (قیمت دو برابر)چاپ خلاء خصوصی (Object O)Override Public void ontick (ابزار ابزار ، Itick Tick) JFException را پرتاب می کند<>Override Void Onbar (ابزار ابزار ، دوره دوره ، Ibar Askbar ، Ibar Bidbar) JFException را پرتاب می کند// ما می توانیم SL را فقط برای سفارشات پر شده و باز شده تغییر دهیم اگر (Order. getState () == IORDER. STATE. FILD || ORDER. GETSTATE () == IORDER. STATE. OPENED)//3) if the stop loss increased more than twice - remove it if (Math.abs(order.getOpenPrice() - order.getStopLossPrice())>StoplossinPips * Instrument. GetPipValue () * 2)// 4) از دست دادن توقف توسط 1 پیپ اگر (سفارش . سیلونگ ()) افزایش دهیددیگر>>// ما به چنین عملکردی احتیاج داریم زیرا مقادیر نقطه شناور دقیقاً دو برابر بولی خصوصی نیستند (Double D1 ، Double D2)Override void void onMessage (پیام imessage) JFException را پرتاب می کندOverride void onAccount (حساب IACCOUNT) JFException را پرتاب می کند<>// بستن کلیه سفارشات فعال در استراتژی ، Override Public void onstop () پرتاب JFException>>

تغییرات از دست دادن را متوقف کنید

استراتژی را در نظر بگیرید که در شروع آن نظمی ایجاد می کند و:

  1. در هر کنه ، ضرر توقف را به روز می کند و سطح سود را در نظر بگیرید تا آنها را در فاصله خاص قیمت از قیمت فعلی بازار نگه دارید.
  2. خطوط را برای سطح SL و TP اصلی ترسیم می کند.
  3. پس از شکسته شدن سطح SL و TP اصلی ، پیام را چاپ می کند.
بسته jforex. test ؛وارد کردن java. awt. color ؛وارد کردن java. text. decimalformat ؛واردات com. dukascopy. api.*؛واردات com. dukascopy. api. iengine. ordercommand ؛واردات com. dukascopy. api. drawings. ihorizontallinechartobject ؛/** * این استراتژی سفارش را در شروع خود ایجاد می کند و: * 1) در هر کنه ، ضرر توقف را به روز می کند و سطح سود را در نظر می گیرد تا آنها را در فاصله خاص قیمت از قیمت فعلی بازار حفظ کند.* 2) خطوطی را برای سطح SL و TP اصلی ترسیم می کند.* 3) پس از شکسته شدن سطح SL و TP اصلی ، پیام را چاپ می کند.*/ کلاس عمومی SltpupdateWithoriglines ISTrategy را پیاده سازی می کند<@Configurable("SL and TP price distance") public double priceDistance = 0.0003; @Configurable("Instrument") public Instrument instrument = Instrument.EURUSD; private IEngine engine; private IOrder order; private IHistory history; private IChart chart; private IContext context; private IConsole console; private IHorizontalLineChartObject slLine, tpLine; private boolean origTpBroken, origSlBroken; long lastTickTime = 0; DecimalFormat df = new DecimalFormat("0.00000"); @Override public void onStart(IContext context) throws JFException Override Public void ontick (ابزار ابزار ، Itick Tick) JFException را پرتاب می کند// قیمت پیشنهاد یا SL یا TP را خراب کرده است - سفارش بسته شده است. یا سفارش به صورت دستی بسته شده است. if (! Engine. getOrders (). شامل (سفارش))Order. SetStopLossPrice (Tick. getBid () - قیمت گذاری) ؛Order. SettakeProfitPrice (Tick. getBid () + قیمت گذاری) ؛if (! Origslbroken && tick. getbid ()

شکستن

اگر سود سفارش به 5 پیپ رسیده است ، بررسی استراتژی را در نظر بگیرید. اگر این مورد است ، قیمت ضرر را به قیمت باز منتقل کنید.

configorable ("") عمومی int breakevenpips = 5 ؛سفارش iorder خصوصی ؛خصوصی beolean breakevenreached = false ؛// .. Override Public void ontick (ابزار ابزار ، Itick Tick) JFException را پرتاب می کندif( order.getProfitLossInPips()>= breakevenpips && breakevenreached == false)>

استراحت قابل تنظیم دستی حتی

در نظر بگیرید که مثال قبلی را افزایش دهید ، به گونه ای که سطح شکست حتی در یک خط به عنوان یک خط کشیده می شود و کاربر می تواند با حرکت دستی خط روی نمودار ، سطح را تنظیم کند.

Override void onstart (Icontext Context) JFException را پرتاب می کندOverride Public void ontick (ابزار ابزار ، Itick Tick) JFException را پرتاب می کندif((order.isLong() && tick.getBid()>= breakEvenLine.getPrice(0)) || (!order.isLong() && tick.getAsk()>

حتی برای چندین سفارش بشکنید

در نظر بگیرید که همان منطق را حتی در چندین سفارش اعمال کنید:

لیست عمومی OrderBenotReached = ArrayList جدید () ؛Override void onstart (Icontext Context) JFException را پرتاب می کندvoid private submitbemarketorder (iengine. ordercommand OrderCommand) JFException را پرتاب می کندOverride Public void ontick (ابزار ابزار ، Itick Tick) JFException را پرتاب می کندdouble prevSl = slPrices.get(order) == null ? 0 : slPrices.get(order); double marketPrice = order.isLong() ? tick.getBid() : tick.getAsk(); int sign = order.isLong() ? +1 : -1; double slInPips = Math.abs(marketPrice - prevSl) / instrument.getPipValue(); if (slInPips>TrailingStop + TrailingStep)>>> //check if SL levels are reached Iterator>ورودی = slprices. entryset (). iterator () ؛در حالی که (ورودی ها. hasnext ())double marketPrice = order.isLong() ? tick.getBid() : tick.getAsk(); if((order.isLong() && slPrice>= marketPrice) || (!order.isLong() && slPrice>>>>

اطلاعات موجود در این وب سایت فقط به عنوان اطلاعات عمومی ارائه می شود ، که ممکن است ناقص یا منسوخ باشد. برای سلب مسئولیت کامل اینجا را کلیک کنید.< pan> other if (message. gettype () == imessage. type. order_close_ok)

کتاب آموزش بورس...
ما را در سایت کتاب آموزش بورس دنبال می کنید

برچسب : نویسنده : محمود استادمحمد بازدید : 44 تاريخ : دوشنبه 28 فروردين 1402 ساعت: 18:00