Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пополняй свой счет с помощью WebMoney
midav
33
midav 2013.12.15 16:34 
Этот советник не всегда выставляет тейк профит и стоп лосс, один человек сказал что нужно добавить пару пунктов спреда. А куда их добавит в этот советник?
Файлы:
24_1.mq4 7 kb
Vitalie Postolache
11021
Vitalie Postolache 2013.12.15 21:10  

Чтобы быть уверенным что обе цены зашли за МА, советую писать if (Ask < ima) дл продаж и if (Bid > ima) для покупок, поможет избежать совершения сделок когда Бид и Аск по разные стороны от МА. Но это всё равно не гуд, открываться прямо на линии МА.

Строка OrderModify(OrderTicket(), OrderProfit(), SL, TP, 0); - угадайте что не так )))

Да и в конструкции ниже не вижу смысла в двойной модификации:

            TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
            OrderModify(ticket, OrderProfit(), SL, TP, 0);
            SL = NormalizeDouble(Bid - StopLoss * Point, Digits);
            OrderModify(ticket, OrderProfit(), SL, TP, 0);      

Достаточно один раз модифицировать, последней строчкой.

Да, и для продаж всё же

            TP = NormalizeDouble(Bid - TakeProfit  * Point, Digits);//хотя тут тоже АСК можно, всё равно закрываться позиция по Аск будет...
            SL = NormalizeDouble(Ask + StopLoss * Point, Digits);  

А что насчёт добавки к МА, наверное имелось в виду добавить это условие:

      if (Bid > ima+NormalizeDouble(dev*Point,Digits)) - покупка
и
       if(Ask < ima-NormalizeDouble(dev*Point,Digits)) - продажа, 

где dev - отступ от МА в пунктах.

Artyom Trishkin
68798
Artyom Trishkin 2013.12.15 21:34  
evillive:

Чтобы быть уверенным что обе цены зашли за МА, советую писать if (Ask < ima) дл продаж и if (Bid > ima) для покупок, поможет избежать совершения сделок когда Бид и Аск по разные стороны от МА. Но это всё равно не гуд, открываться прямо на линии МА.

Да и в конструкции ниже не вижу смысла в двойной модификации:

Достаточно один раз модифицировать, последней строчкой.

Да, и для продаж всё же

А что насчёт добавки к МА, наверное имелось в виду добавить это условие:

Есть ещё неучтённый StopLevel. А он ещё бывает нулю равен, и тогда высчитывается по-разному. В Альпари, например, он всегда нулевой, но ограничения есть, и они считаются как спред*2

Значит нужно сначала определиться с уровнем StopLevel:

Глобально:

int level=0, sp=0;

Затем в start() :

   sp=MarketInfo(sy,MODE_SPREAD);
//-------------- Проверка StopLevel ---------------
   level=MarketInfo(sy,MODE_STOPLEVEL );           // Значение уровня установки стопов
   if (level==0) level=sp*2;

А потом уже сравнивать размер стоп-приказа с полученным уровнем и использовать рассчитанные верные значения для стоп-приказов:

//+----------------------------------------------------------------------------+
   double pa=MarketInfo(Symbol(),MODE_ASK),  // цена Ask
          pb=MarketInfo(Symbol(),MODE_BID),  // цена Bid
          sl=0, tp=0;
   if(OrderType()==OP_BUY) {
      sl=NormalizeDouble(MathMin(pb-StopLoss*Point,pb-(level+1)*Point),Digits);
      tp=NormalizeDouble(MathMax(pb+TakeProfit*Point,pb+(level+1)*Point),Digits);
      // далее используем полученные уровни 
      // sl для цены StopLoss 
      // и tp для цены TakeProfit
      }
   if(OrderType()==OP_SELL) {
      sl=NormalizeDouble(MathMax(pa+StopLoss*Point,pa+(level+1)*Point),Digits());
      tp=NormalizeDouble(MathMin(pa-TakeProfit*Point,pa-(level+1)*Point),Digits());
      // далее используем полученные уровни 
      // sl для цены StopLoss 
      // и tp для цены TakeProfit
      }
//+----------------------------------------------------------------------------+
Vitalie Postolache
11021
Vitalie Postolache 2013.12.15 21:50  
Да там если придираться по полной (как для запуска на реал), то пальцев не хватит все косяки перечислять )))
Artyom Trishkin
68798
Artyom Trishkin 2013.12.15 22:00  
evillive:
Да там если придираться по полной (как для запуска на реал), то пальцев не хватит все косяки перечислять )))

Так я ж не придираюсь. Но такие-то расчёты просто обязаны быть, даже в советнике для тестера. Это ж азы. А то потом репу чешут: что, да от куда...

ЗЫ. А в приложенный код не глядел, чтобы плохо не стало

Alexander
2441
Alexander 2013.12.17 02:13  
evillive:

Но это всё равно не гуд, открываться прямо на линии МА.


Какие-то технические проблемы или просто религия не позволяет?
Vitalie Postolache
11021
Vitalie Postolache 2013.12.17 16:51  
Roger:

Какие-то технические проблемы или просто религия не позволяет?

Религия - зло, конечно не позоляет )))
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий