Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 934

 

Подскажите пожалуйста, как организовать пересчет валюты депозита.

У меня робот рассчитывает лот, исходя из баланса и средств на счету. Но это, понятно, если депозит в долларах.

Если же я открою рублевый депозит, то придется лот делить на курс usdrur.

Можно ли сделать так, чтобы советник смотрел валюту депозита и при необходимости сам делил на usdrur?

 
neman:

Подскажите пожалуйста, как организовать пересчет валюты депозита.

У меня робот рассчитывает лот, исходя из баланса и средств на счету. Но это, понятно, если депозит в долларах.

Если же я открою рублевый депозит, то придется лот делить на курс usdrur.

Можно ли сделать так, чтобы советник смотрел валюту депозита и при необходимости сам делил на usdrur?

Ну так AccountCurrency() и исходя из этого формировать пару и определять Bid.
 

Это я понимаю, просто не знаю как правильно записать

К примеру:


double KursS=iClose("USDRUR",H1,0);

Если  AccountCurrency()  = USD, то       K=1;

Если  AccountCurrency()  = RUR, то       K=KursS;

Как правильно это записать?


 
neman:

Это я понимаю, просто не знаю как правильно записать

К примеру:


double KursS=iClose("USDRUR",H1,0);

Если  AccountCurrency()  = USD, то       K=1;

Если  AccountCurrency()  = RUR, то       K=KursS;

Как правильно это записать?


Это ты перескочил мимо. Сначала надо определить что нужна валюта "USDRUR". А если депозит в евриках, то надо назначить курс EURUSD

Тоесть определить string K_Symbol = "USDRUR"; при условии что депозит в рублях.

Как это сделать я думаю сумеешь сам. Хотя-бы простым условием if() else if() но если брокер открывает счета ещё в каких-то валютах, то это будет уже дополнительные проверки.

 
AlexeyVik:

Это ты перескочил мимо. Сначала надо определить что нужна валюта "USDRUR". А если депозит в евриках, то надо назначить курс EURUSD

Тоесть определить string K_Symbol = "USDRUR"; при условии что депозит в рублях.

Как это сделать я думаю сумеешь сам. Хотя-бы простым условием if() else if() но если брокер открывает счета ещё в каких-то валютах, то это будет уже дополнительные проверки.

На словах мне всё понятно. Вопрос был в том, как записать...

 
neman:

На словах мне всё понятно. Вопрос был в том, как записать...


Ну так в нашем диалоге есть ВСЁ

string K_Symbol;

if(AccountCurrency() == "USD") K = 1;
else
if(AccountCurrency() == "RUR")
 {
  K_Symbol = "USDRUR";
  K = iClose(K_Symbol, H1, 0);
 }
else
if(AccountCurrency() == "EUR")
 {
  K_Symbol = "EURUSD";
  K = iClose(K_Symbol, H1, 0);
 }


Второй вариант чуток покороче...

string K_Symbol;

if(AccountCurrency() == "USD") K = 1;
else
 {
  if(AccountCurrency() == "RUR") K_Symbol = "USDRUR";
   if(AccountCurrency() == "EUR") K_Symbol = "EURUSD";
  K = iClose(K_Symbol, H1, 0);
 }


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

 

Огромное спасибо!

 
pycha:

ну если это облегчит задачу то перепостю правильно.  писал функцию для обнаружения флета и запнулся во что-то мне совсем не понятное. не срабатывает оператор if. может я где-то что-то написал не так , хочу чтобы посмотрели свежим взглядом ибо я в упор не понимаю почему. даже видео с дебагера записал где показываю что значения равны , но оно не срабатывает. вставте мне пожалуйста мозг на место))))




ссылка на видео     https://www.youtube.com/watch?v=k9Zo0SgrMCA



зы предыдущее сообщение удалить не могу, копировал все  в html  и удалил видимо тег который нужен для редактирования сообщения

О сравнении действительных чисел что-то слышали?

Решение проблемы было давно предложено и не один раз.

Предыдущий пост удалил.

 
Доброго всем времечка! Такой вопрос: можно ли как-то сдвинуть индексацию элементов массива на 1 единицу без того, чтобы создавать еще один такой же массив и поэлементно копировать в него информацию из первого массива (а потом и обратно)? Ведь в МТ4 в массивах таймсерий это как-то делается (когда образуется новый бар, ему присваивается индекс 0, а индексы всех предыдущих элементов массива сдвигаются на 1 единицу).
[Удален]  
FxRoller:
Доброго всем времечка! Такой вопрос: можно ли как-то сдвинуть индексацию элементов массива на 1 единицу без того, чтобы создавать еще один такой же массив и поэлементно копировать в него информацию из первого массива (а потом и обратно)? Ведь в МТ4 в массивах таймсерий это как-то делается (когда образуется новый бар, ему присваивается индекс 0, а индексы всех предыдущих элементов массива сдвигаются на 1 единицу).

Присоединяюсь к вопросу: было бы удобно использовать встроенную функцию сдвига N-ного измерения массива на M элементов вправо или лево.

На сколько знаю, пока нужно сдвигать циклом, определив размер массива. Сложнее использование динамического(+данные не теряются).