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

 
Нет такой, поддержка старых билдов прекращена.
 

Здравстуйте! Помогите пожалуйста изменить мани-менеджмент в коде советника.

В советнике прописаны 2-а условия

1- минимальный лот + работа с постоянным лотом или 2- увеличение лота в % от свободных средств

а мне нужно чтобы после 1-й неудачной сделки к лот увеличился на - 0.01 лота, если 2-я также неудачной - на 0.02 лота,

а после 3-го убытка лот снова стал минимальным.

Мне нужны функции которые я бы мог вставить в мой советник (лучше как можно проще)

Пробывал всавить в код через include (lot_lib) выдает кучу ошибок и ничего не получается.

Заранее спасибо за ваше затраченое время!.


 

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

Пишу код, смысл - поставить уровень стоплосса по самой низкой/высокой точке последних трех баров. Вот что вышло:

double FindSL(int mode)
   {
    double sl; //уровень стоплосса
    double buf; //буфер
    double lvl1, lvl2, lvl3; //выборка из 3-х последних баров
    if (mode == 1) //покупали
      {
       lvl1 = iLow(symb, 0, 0);
       lvl2 = iLow(symb, 0, 1);
       lvl2 = iLow(symb, 0, 2);
       buf = MathMin(lvl1, lvl2); //ищем низ
       sl = MathMin(buf, lvl3);
      }
    else if (mode == 2) //продавали
      {
       lvl1 = iHigh(symb, 0, 0);
       lvl2 = iHigh(symb, 0, 1);
       lvl3 = iHigh(symb, 0, 2);
       buf = MathMax(lvl1, lvl2); //ищем вершину
       sl = MathMax(buf, lvl3);
      }
    return (sl);
   }

Ордера открывает следующий код:

int OpenOrder(int sell_or_buy)                                  //Открытие ордеров
   {
    GetLot();

     if(sell_or_buy==2)                                          //покупка
       {
        StopLoss = FindSL(1);
        OrderSend(symb, OP_BUYSTOP, Lots, iHigh(symb, 0, 1), 0, StopLoss, 
        iHigh(symb, 0, 1)+TakeProfit*Point, "Ichimoku Simple Adviser Trade", 1001, TimeCurrent()+ExpirationTime, Green);    
        return (1);
       }
     else if (sell_or_buy==1)                                    //продажа
       {
        StopLoss = FindSL(2);
        OrderSend(symb, OP_SELLSTOP, Lots, iLow(symb, 0, 1), 0, StopLoss, 
        iLow(symb, 0, 1)-TakeProfit*Point, "Ichimoku Simple Adviser Trade", 1001, TimeCurrent()+ExpirationTime, Red);
        return (1);
       }
     else {return (0);}
   } 

StopLoss - глобальная переменная.

При тестировании наступает момент, когда деньги кончаются, все сразу, в одну сделку. Лоты маленькие, поэтому проблема только в том, что стоплосс почему-то не выставляется (равен 0)

Не могу понять, в чем ошибка.

Посмотрите код пожалуйста, где я мог ошибку допустить?

 
gogent:

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

Пишу код, смысл - поставить уровень стоплосса по самой низкой/высокой точке последних трех баров. Вот что вышло:

Ордера открывает следующий код:

StopLoss - глобальная переменная.

При тестировании наступает момент, когда деньги кончаются, все сразу, в одну сделку. Лоты маленькие, поэтому проблема только в том, что стоплосс почему-то не выставляется (равен 0)

Не могу понять, в чем ошибка.

Посмотрите код пожалуйста, где я мог ошибку допустить?

Стоп лосс всегда 0 после покупок.

Причина: не определена переменная lvl3 (механическая ошибка)

 

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

Разбираюсь со спредом. Спред всегда против меня. Значит я его должен прибавлять к стоп лоссу и вычитать из тейк профита? Значит если я хочу получить чистой прибыли 50 пунктов, (спред по валютной паре допустим 3 пункта) значит в ордере я должен указать тейк профит =53 пункта . Если я допускаю чистого убытка 50 пунктов, значит я в ордере должен указать стоп лосс=47 пунктов. Я все правильно понял?

Заранее спасибо!

 
01123456789:

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

Разбираюсь со спредом. Спред всегда против меня. Значит я его должен прибавлять к стоп лоссу и вычитать из тейк профита? Значит если я хочу получить чистой прибыли 50 пунктов, (спред по валютной паре допустим 3 пункта) значит в ордере я должен указать тейк профит =53 пункта . Если я допускаю чистого убытка 50 пунктов, значит я в ордере должен указать стоп лосс=47 пунктов. Я все правильно понял?

Заранее спасибо!


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

Если речь - о Ваших планах и ожиданиях, то все так.

Если же говорить формально, то мне неясно, что значит " в ордере... указать тейк профит =53 пункта "

 

Здравствуйте! Помогите разобраться с пользовательской ф-ей.

Я так понимаю: если условие верно то возвращается для isitpik- (true). Условие высчитывается по 0-му буферу, в котором лежит расчет от АО. Или в буфере лежит только последний i-бар и при наступлении условий для этих критериев тогда в isitpik() передается (true)? И зачем присваивать тип int переменной (i) если это сделано выше по условию.


bool isitpik( int i )
   {
   if(ExtBuffer0[i]>0 && ExtBuffer0[i]>ExtBuffer0[i+1] && ExtBuffer0[i]>ExtBuffer0[i-1])return(true);
   if(ExtBuffer0[i]<0 && ExtBuffer0[i]<ExtBuffer0[i+1] && ExtBuffer0[i]<ExtBuffer0[i-1])return(true);
   }
 
tara:


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

Если речь - о Ваших планах и ожиданиях, то все так.

Если же говорить формально, то мне неясно, что значит " в ордере... указать тейк профит =53 пункта "

Говоря: " в ордере указать тейк профит =53 пункта" я имел ввиду отложенный ордер(например Buy Stop), и две графы стоп лосс и тейк профит. То есть если я захотел получить прибыли 50 пунктов, то мне надо указать в отложенном ордере 53 пункта тейк профита, а не 50, потому что 3 пункта съест спред. Так?
 
01123456789:
Говоря: " в ордере указать тейк профит =53 пункта" я имел ввиду отложенный ордер(например Buy Stop), и две графы стоп лосс и тейк профит. То есть если я захотел получить прибыли 50 пунктов, то мне надо указать в отложенном ордере 53 пункта тейк профита, а не 50, потому что 3 пункта съест спред. Так?

TP и SL в ордерах указываются не в пунктах, а в ценах.
 
01123456789:
Говоря: " в ордере указать тейк профит =53 пункта" я имел ввиду отложенный ордер(например Buy Stop), и две графы стоп лосс и тейк профит. То есть если я захотел получить прибыли 50 пунктов, то мне надо указать в отложенном ордере 53 пункта тейк профита, а не 50, потому что 3 пункта съест спред. Так?
В каждом ДЦ все это оговорено в договоре. Buy- ордера закрываются по Ask-линии, а Sell- ордера по Bid-линии. Все верно вы понимаете,в зависимости какой спред его и плюсуйте к вашему профиту. Если желаете получить 50п. то +3(в зависимости от спреда для вал.пары). Не забывайте, что все графики рисуются по Bid.