Обсуждение статьи "Реализация Take Profit в виде лимитных ордеров без изменения оригинального кода советника" - страница 5

 
Это все, что я когда-либо хотела, спасибо вам огромное. Люблю тебя.
 

Здравствуйте, уважаемый

Я пытаюсь найти способ определить специальный тейк-профит для моего эксперта, который я начал писать. Ваш текст был полезен для меня, но я не смог исправить свой, поэтому, если это возможно для вас, пожалуйста, направьте меня. мой TP плоскости является: когда установить например Buy на графике и он идет в правильном направлении и прибыль, TP значение двигаться в максимальную точку прибыли, так что когда тренд поворота изменить прямой на вниз путь, TP значение помещается в 70 процентов от максимальной прибыли. ниже код, который я написал. пожалуйста, дайте мне знать мои ошибки и помочь мне исправить их.

double BuyPipsProfit,SellPipsProfit,BuyProfitLevel,SellProfitLevel;
double TP_Buy=0;
double TP_Sell=0;

for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
BuyPipsProfit= Ask-(double)OrderOpenPrice() ;
SellPipsProfit= (double)OrderOpenPrice()-Bid;
BuyProfitLevel= BuyPipsProfit*.7;
SellProfitLevel= SellPipsProfit*.7;
TP_Buy = (50*Point)+ ((OrderOpenPrice()+ BuyProfitLevel)*Point);
TP_Sell = (50*Point)+ ((OrderOpenPrice()+ SellProfitLevel)*Point);
}
}

 

Здравствуйте,

Не работает.

Ошибка LimitTakeProfit.mqh:

unresolved static variable 'CLimitTakeProfit::i_Magic' LimitTakeProfit.mqh 29 43
unresolved static variable 'CLimitTakeProfit::b_OnlyOneSymbol' LimitTakeProfit.mqh 32 52
unresolved static variable 'CLimitTakeProfit::i_TakeProfit' LimitTakeProfit.mqh 507 14
unresolved static variable 'CLimitTakeProfit::d_TakeProfit' LimitTakeProfit.mqh 512 17
unresolved static variable 'CLimitTakeProfit::c_Symbol' LimitTakeProfit.mqh 160 9

Спасибо.

Файлы:
 

@MetaQuotes, спасибо за этот код!

Я нашел ошибку в этой функции и даю свое скромное решение:

bool CLimitTakeProfit::SetTakeProfits(ulong position_ticket, double new_tp=0)


Если у нас есть 2 ТП и первый был закрыт, то второй будет НЕПРАВИЛЬНО закрыт здесь:

if(CheckLimitOrder(tp_request))
  {
   if(tp_request.volume>=0)
     {
      closed+=tp_request.volume;
      closed_perc=closed/position_volume*100;
     }
   else
     {
      fix_closed_per-=tp_request.volume/(position_volume-tp_request.volume)*100;
     }
   continue;
  }


Почему? Потому что при поиске первого TP в этой функции:

CheckOrderInHistory(PositionGetInteger(POSITION_IDENTIFIER),request.comment, request.type, request.volume);

Мы меняем выбранную позицию, поэтому в цикле:

   for(int i=0;i<total;i++)
     {

      tp_request.comment="TP"+IntegerToString(i)+"_"+IntegerToString(position_ticket);
      
      if(i_TakeProfit.At(i)<tp_int && d_TakeProfit.At(i)>0)

Мы используем неправильную позицию для оценки второго TP здесь:

switch((ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE))


В результате чего второй TP будет закрыт! Я исправил это:

for(int i=0;i<total;i++)
   {
      /****** НОВАЯ ЛИНИЯ **************/
      PositionSelectByTicket(position_ticket);
      /****** НОВАЯ ЛИНИЯ **************/

      tp_request.comment="TP"+IntegerToString(i)+"_"+IntegerToString(position_ticket);
      
      if(i_TakeProfit.At(i)<tp_int && d_TakeProfit.At(i)>0)


Еще раз спасибо!

 
Roco Deodato Giaculi #: Здравствуйте, не работает. Ошибка LimitTakeProfit.mqh: Спасибо.

Вы использовали оригинальный код или добавили его в свой советник?

 

У меня это никогда не получалось.

 

Добрый день @Dmitriy Gizlyk, Не могли бы вы помочь с этой проблемой? Я уже много чего перепробовал, но никак не могу избавиться от этой ошибки. Если вы можете помочь, спасибо.


 
Не могли бы вы мне помочь? Я не знаю, как программировать и т.д. Я просто хочу, чтобы моя прибыль отображалась в виде ограниченного ордера (если вы можете описать, как использовать ваш файл, я буду очень благодарен).
 
FalconGhost2 : Не могли бы вы мне помочь? Я не знаю, как программировать и т.д. Я просто хочу, чтобы моя прибыль отображалась как лимитный ордер (если вы можете описать, как использовать ваш файл, я был бы очень благодарен).

Здравствуйте, Вы не можете использовать этот файл, если вы используете ручную торговлю. Он предназначен для использования в советнике.

С уважением, Дмитрий.

 
Dmitriy Gizlyk #: Здравствуйте, Вы не можете использовать этот файл, если вы используете ручную торговлю. Он предназначен для использования советником. С уважением, Дмитрий.

Спасибо за ответ, Дмитрий! Вы не знаете, есть ли другой способ ручной торговли?