Полезные функции от KimIV - страница 38

 
obabuev писал (а) >>
Как теперь int b к string Time2 минутам добавлять или как плюс минус сделать рандом
void start() {
  int a=MathFloor(MathRand()/32767.0*300);
  int b=-MathFloor(MathRand()/32767.0*300);
  Comment("a=",a," b=",b,"\n",
          "плюс ",TimeToStr(TimeLocal()+a, TIME_SECONDS),"\n",
          "минус ",TimeToStr(TimeLocal()+b, TIME_SECONDS));
}
 

Подскажите пожалуйста существующие методы ограничения кол-ва ордеров:

1)как их колличество привязать к свободному остатку средств, чтобы была динамика, например, если доступных средств меньше половины баланса, то срабатывает ограничение

2) как ограничить кол-во одновременных ордеров до фиксированного значения, например до 10 штук

 
KimIV писал (а) >>
Спасибо Игорь,
очень легко и просто вы кодируете - как у все хпрофессионалов
Только вот никогда бы и не подумал что даже словами у меня не получится объяснить, не то что код написать
Мне нужно чтобы случайный сдвиг происходил из одного генератора но в обе стороны случайно.
Например как колебание стрелки около нуля ( то в минус зашкалит, то в плюс)
А этим моим нулем, или средним значением будет мое установленное время.
Както все надо всю случайность на две части разделить посередине чтоли?
будет ли вот так работать
void start() {
int a=MathFloor(MathRand()/32767.0*300);
if (a > 150) a=-a;
Comment("a=",a,"\n",
"плюс-минус ",TimeToStr(TimeLocal()+a, TIME_SECONDS) );
}
И еще, я это дело в индикаторе пытаюсь сделать.
Будет ли TimeToStr(TimeLocal()+a,TIME_SECONDS) правильно или надо TimeToStr(Time[i] +a,TIME_SECONDS) или TimeToStr(iTime(NULL,0,i)+a) или ????
Спасибо вам за помощь
 
obabuev писал (а) >>
Мне нужно чтобы случайный сдвиг происходил из одного генератора но в обе стороны случайно.
Например как колебание стрелки около нуля ( то в минус зашкалит, то в плюс)
А этим моим нулем, или средним значением будет мое установленное время.
Както все надо всю случайность на две части разделить посередине чтоли?

Тогда так:

void start() {
  int a=MathFloor(MathRand()/32767.0*300)-150;
  Comment("a=",a,"\n",
          "плюс-минус ",TimeToStr(TimeLocal()+a, TIME_SECONDS));
}
obabuev писал (а) >>
Будет ли TimeToStr(TimeLocal()+a,TIME_SECONDS) правильно или надо TimeToStr(Time[i] +a,TIME_SECONDS) или TimeToStr(iTime(NULL,0,i)+a) или ????

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

TimeToStr(TimeLocal()+a,TIME_SECONDS)

К локальному времени компьютера в секундах прибавляется а секунд и полученный результат преобразуется в строку.

TimeToStr(Time[i] +a,TIME_SECONDS)

Ко времени открытия i-го бара в секундах прибавляется а секунд и полученный результат преобразуется в строку.

TimeToStr(iTime(NULL,0,i)+a)
Ко времени открытия i-го бара на текущем графике в секундах прибавляется а секунд и полученный результат преобразуется в строку.
 
AlexDub писал (а) >>

Подскажите пожалуйста существующие методы ограничения кол-ва ордеров:

1)как их колличество привязать к свободному остатку средств, чтобы была динамика, например, если доступных средств меньше половины баланса, то срабатывает ограничение

2) как ограничить кол-во одновременных ордеров до фиксированного значения, например до 10 штук

if (AccountFreeMargin()<AccountBalance()/2.0) {
  // срабатывает ограничение
}
AlexDub писал (а) >>
Подскажите пожалуйста существующие методы ограничения кол-ва ордеров:
2) как ограничить кол-во одновременных ордеров до фиксированного значения, например до 10 штук
if (OrdersTotal()>=10) {
  // срабатывает ограничение
}
 
KimIV писал (а) >>

Тогда так:

Спасибо,
памятник вам надо

 
obabuev писал (а) >>

памятник вам надо

Рано ещё :))

 
Тогда бронзовый бюст на родине... ;)
 

Какие все добрые! Хоть щас застрелись

 

Ну по крайней мере бюст эт хорошо...

Его дважды героям СССР при жизни положено было ставить.

За счёт естественно государства... :)))