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

 
Обьявил тикет выше старта. Типерь модифицирует только один ордер, но это уже другая ошибка! А то выходило, что переменная обьявлена внутри ифов.
 
Dimka-novitsek:

Доброе утро! А что значит-условие с зазором?  У миня, когда цена уходит на 35 пунктов вверх, стоплосс двигается на 10пп ниже ордера, т.е. его расстояние от цені 45 пп. 

Или о каком  ещё зазоре идет реч? 


Доброе утро, посвежевшая голова!

Пока передаётся, принимается и исполняется ордер модификации, цена не стоит на месте, наверх или вниз, кто знает?!

#include <stderror.mqh>
#include <stdlib.mqh> 
//-------------------

extern int prev = 30;//зазор! Для 5-знака!
extern int sl   = ??;
extern int tp   = ??;
//------------------
int start()
{
//------------------
//----------------------/  Stops & Trailing  \----------------------\\
  for(int i = 0; i < OrdersTotal(); i++)
  {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
      if(OrderSymbol() != Symbol() && OrderMagicNumber() != Magic) continue;
      if(OrderCloseTime() != 0) continue;
      if(OrderType() == OP_BUY)
      {
        if(OrderStopLoss() < OrderOpenPrice() || OrderStopLoss() == 0)
        {
//----------------------
          if(OrderStopLoss() == 0)
          if(Bid < OrderOpenPrice() && Bid > NormalizeDouble(OrderOpenPrice()-sl*Point+prev*Point,Digits))
          if(Bid > NormalizeDouble(OrderOpenPrice()-sl*Point+prev*Point,Digits))
          {
            SL = NormalizeDouble(OrderOpenPrice()-sl*Point,Digits);
            if(Bid < NormalizeDouble(OrderOpenPrice()+tp*Point-prev*Point,Digits))
            {
              TP = NormalizeDouble(OrderOpenPrice()+tp*Point,Digits);
              ModifyOrder(OrderTicket(),OrderOpenPrice(),SL,TP,0,Blue);return(0);
        } } }
//-----------------------
//------------------------/  Modify Order  \------------------------\\
void ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime e,color arrow_color)
{
  int ModifyCnt = 0, err;
  while(ModifyCnt < 3)
  {
    if(OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),
    NormalizeDouble(takeprofit,Digits),0,arrow_color))
    ModifyCnt = 3;
    else err = GetLastError();
    if(err > 0)
    { 
      Print(ModifyCnt," #",ticket," Error modifing order: (", err , ") " , ErrorDescription(err));
      Sleep(3000); RefreshRates(); ModifyCnt++;
} } }

 А для Сэлла всё соответственно наоборот! Удачи разобраться без комментариев, которые излишни, по-моему!

И, пожалуйста, заглядывайте, в русский толковый словарь, чтобы ваши посты были более читабельны.

Я заглядываю иногда, так как уже больше 10 лет думаю на другом языке, и не в курсе ваших "нововведений"... :))

 
Dimka-novitsek:

Доброго дня! Модификация ордера-ошибка 4051.   Час ужу думаю.      Ну вроде верный там параметр!!!  Короче, побуквено. Параметр цена- цена открытия ордера, OrderOpenPrice(), стандартно.

Стоп несём на 10 пунктов ниже цены открытия ордера, а цену запромнили. Запомнили в переменной   tsena , при открытии ордера.

Ордеров два, один с профитом другой без. Вот, вроде понятно расказал. Откуда ошибка?? Что же ему ещё?

Да, условие вроде понятно, хоть это уже не к делу. Тоесть, цена ушла на 30 пунктов-условие сработало.( tsena+30*Point ).

Носим один раз  perenos=true; Эти условия собственно вроде работают.

Сам уж не знаю как думать.  

Собственно  Носим один раз  perenos=true; Эти условия наблюдать-то и не пришлось, т.к. никуда и не носит. 

 

Эта строчка:

        int tacket = OrderSend (Symbol(), OP_BUY, lot, NormalizeDouble (Ask, Digits), 5, NormalizeDouble (Ask - (35 * Point), Digits), 
            NormalizeDouble (Ask + (45 * Point), Digits), NULL, 450, 0, CLR_NONE);

а затем использование (не на этом тике) этой переменной для модификации ордера с тикетом = 0 (переменная обнулится), говорит о том, что Вы не знаете азов - начните с понятий локальные и глобальные переменные.

А открытие через 2 секунды копии только что открытого ордера - ЭТО ВЫСШИЙ ПИЛОТАЖ!!! - я плакаль... :))) 

 
СПАСИБО!!
 
borilunad:

Можно без функций:  

Вы, прежде чем спешить ответить, сначала бы потрудились внимательно прочесть условия (что человеку нужно), а затем взять и посчитать результаты работы своего кода.
Для начала, разговор идёт о Депозите, а это AccountBalance(). Equ/depo - это дробное число, и о какой ступенчатости может идти речь???
 
TarasBY:
Вы, прежде чем спешить ответить, сначала бы потрудились внимательно прочесть условия (что человеку нужно), а затем взять и посчитать результаты работы своего кода.
Для начала, разговор идёт о Депозите, а это AccountBalance(). Equ/depo - это дробное число, и о какой ступенчатости может идти речь???

Полагаю, что сглаженность и тут более уместна, чем ступенчатость. А насчёт того, "что человеку нужно", Вы прекрасно понимаете, что он ещё неясно представляет, что ему нужно!
 
T-G:

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

Нужна функция расчета лота поступенчато. Что бы можно было настраивать, например при каждые 500 идем увеличение лота

То есть депо 1000 - лот 0.1

депо 1500 - лот 0.15

депо 2000 лот 0.2

выложите пожалуйста функцию.


int start(){double lot,V=AccountBalance();if(V<1000){lot=0.05;return(0);}
  V=MathFloor(AccountBalance()/500);lot=NormalizeDouble ((V*5)/100,2);
  Alert("lot = ",lot);return(0);}
 
Roll:

САМАЯ важная строчка:

double lot, V=AccountBalance();
if (V<1000) {lot=0.05;return(0);}
если баланс опустился ниже 1000 - работать НЕ БУДУ - это ПРАВИЛЬНО!!! - ММ, какникак :)))
 
borilunad:

Полагаю, что сглаженность и тут более уместна, чем ступенчатость. А насчёт того, "что человеку нужно", Вы прекрасно понимаете, что он ещё неясно представляет, что ему нужно!
А-а-а?! - ну, тогда уместна приписочка: "Слушай, Ваня, свою любимые песню "Про валенки" и не выпендривайся." :)))
 
TarasBY:
А-а-а?! - ну, тогда уместна приписочка: "Слушай, Ваня, свою любимые песню "Про валенки" и не выпендривайся." :)))


А серьёзно? Почему скрывать от новичков, что расчёт от Эквити менее опасен, чем от Баланса?

Я вообще, рассчитываю от AccountFreeMargin() и чувствую себя спокойно! И без валенок! :))

Причина обращения: