[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 130

 

Здравствуйте. Помогите, пожалуйста, разобраться. Код должен отображать линию на уровне глобального TakeProfit. Никак не могу найти ошибку.

Заранее благодарю.

void Drawline_Per_B (int Drawline_Per, double Balans, double Free, double Global_TakeProfit)  {
    Balans=AccountBalance();//Баланс счёта
    Free=AccountEquity();//Текущее количество денег в статье "Средства"
    double q;
    double SchBuyLs=SchBuyLs_b(); сумма лот для баев
    double SchSellLs=SchSellLs_b(); сумма лот для сейлов  
    double ad.QuotePoint   = MarketInfo ( Symbol () , MODE_POINT     );
    double ad.QuoteTick    = MarketInfo ( Symbol () , MODE_TICKSIZE  );
    double ad.NominalTick  = MarketInfo ( Symbol () , MODE_TICKVALUE );
    double ad.NominalPoint = ad.NominalTick  * ad.QuotePoint / ad.QuoteTick ; // Цена 1 пункта для стандартного лота в валюте депозита
    q =  NormalizeDouble(Bid + (Balans-Free+Balans/100*Global_TakeProfit)/ad.NominalPoint*(SchBuyLs-SchSellLs)*Point,Digits);
    Drawline_Per("%_LINE");
    ObjectSet( "%_LINE", OBJPROP_PRICE1, q);
  }
 
Не знаю, что Вы там считаете, но число пунктов - целое число. Сделайте его типа int, и не будет нужна нормализация.
q =  (Balans-Free+Balans/100*Global_TakeProfit)/PP*(SchBuyLs-SchSellLs);  //число пунктов до наступления условия  Global_TakeProfit
 

Спасибо за совет.

Нашёл ошибки, всё работает.

 

Помогите пожалуйста с фракталами

maxF = NormalizeDouble (iFractals(NULL, 0, MODE_UPPER,1),5);
minF = NormalizeDouble (iFractals(NULL, 0, MODE_LOWER,1),5);

Почему не вижу выполнение
maxF > Bid или minF > Bid?

Если <, то выполняется.

Без NormalizeDouble то же самое. Что-то не понимаю с фракталами?

 
lia:

Помогите пожалуйста с фракталами

maxF = NormalizeDouble (iFractals(NULL, 0, MODE_UPPER,1),5);
minF = NormalizeDouble (iFractals(NULL, 0, MODE_LOWER,1),5);

Почему не вижу выполнение
maxF > Bid или minF > Bid?

Если <, то выполняется.

Без NormalizeDouble то же самое. Что-то не понимаю с фракталами?


См. эту и следующую страничку - аналогично у себя условия отобразите.
 

Уважаемые подскажите функцию для советника в МТ4, возвращающую размер прибыли последнего закрытого ордера, или, закрылся последний ордер с профитом или в убыток?

PS У Кима не нашел такую функцию.

 
Sancho77:

Уважаемые подскажите функцию, возвращающую размер прибыли последнего закрытого ордера, или, закрылся последний ордер с профитом или в убыток?

PS У Кима не нашел такую функцию.

У Игоря Кима такие функции есть. Правда его ф-ции немного с излишествами для универсальности. Могу быстренько тут накидать вам такую ф-цию.
Вопрос: прибыль в чём? В пунктах или в валюте депозита?
 
artmedia70:
У Игоря Кима такие функции есть. Правда его ф-ции немного с излишествами для универсальности. Могу быстренько тут накидать вам такую ф-цию.
Вопрос: прибыль в чём? В пунктах или в валюте депозита?
Буду благодарен если напишете! Прибыль не важно в чем, в пунктах или в валюте, важен факт: в прибыль сделка закрылась или в убыток. На мой взгляд без разницы в валюте или в пунктах.
 
Sancho77:
Буду благодарен если напишете! Прибыль не важно в чем, в пунктах или в валюте, важен факт: в прибыль сделка закрылась или в убыток. На мой взгляд без разницы в валюте или в пунктах.
//+----------------------------------------------------------------------------+
bool LossLastPose(string sy, int op, int mn) {
   datetime t;
   int      i, j;
   for (i=0; i<OrdersHistoryTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
         if (OrderType()!=op)          continue;
         if (OrderSymbol()!=sy)        continue;
         if (OrderMagicNumber()!=mn)   continue;
         if (OrderCloseTime()>t) {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
   if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY)) 
      if (OrderProfit()<0) return(true);
   return(false);
}
//+----------------------------------------------------------------------------+

Вызываем её так:

Чтобы проверить последнюю закрытую позицию Buy на текущем символе. Ф-ция вернёт true, если с убытком и false, если в профите...

if (LossLastPose(Symbol(), OP_BUY, Magic)) {код, если последняя позиция закрылась с убытком}
else {Код, если последняя позиция закрылась с прибылью}

Переменная Magic - это магик советника, прописанная в глобальных переменных советника.

 
artmedia70:

Вызываем её так:

Чтобы проверить последнюю закрытую позицию Buy на текущем символе. Ф-ция вернёт true, если с убытком и false, если в профите...

Переменная Magic - это магик советника, прописанная в глобальных переменных советника.



Большое спасибо!
Причина обращения: