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

 

"T-G 10.10.2011 10:33


подскажите пожалуйста как правильно сделать. у меня сложная функция расчета ММ и в одной части при расчете лота функция возвращает например что максимальный лот возможный сейчас это 0.18 а на счете возможно открыть либо 0.1, 0.2, 0.3 то есть шаг 0.1

если я нормализую лот он округляется до 0.2 и ордер уже не допускается хотя макс. допустимый это 0.18 - вопрос, как правильно округлять в меньшую сторону или правильно нормализовать лот?"

Попробуйте переделать для себя эту ф-ию в подобной конструкции...

П.С. Кнопка форума "Ответить" не работает...

 
Профи, прошу о помощи! Установил советник на 4 валютах в одном терминале, но открывает сделки только по 1 из валют. В чем может быть причина? Как добиться работы по 4 валютам одновременно?
 

2T-G

Т.е. у Вас будет примерно так: Lots_New = MathFloor(0.18/0.1)*0.1;
Результатом вычисления MathFloor(0.18/0.1) будет число 1.0, а вычисленным значением переменной Lots_New - число 0.1 лота. Это значение соответствует правилам, установленным дилинговым центром, поэтому его можно использовать как заявляемое количество лотов для новых ордеров - это уже как Вам и надо...

 

skyjet 10.10.2011 11:22

"...:-))) ...прошу о помощи! Установил советник на 4 валютах в одном терминале, но открывает сделки только по 1 из валют. В чем может быть причина? Как добиться работы по 4 валютам одновременно?"

Для начала определитесь с понятием "одновременности"... :-))) Т.к. в любом случае при открытии ордеров они встают в очередь, т.е. при одинаковых запросах советника на открытие ордера - один будет открыт раньше другого.

Возможно у Вас необходимо явно прописать торгуемый инструмент в первой переменной - "Symbol()" ф-ии OrderSend()...

 
Помогите посчитать просадки :)
Допустим у меня есть 3 МТС, просадки примерно такие:
1 - 10%
2 - 15%
3 - 30%
Одновмеременно они работают на одном счету, но
стоит ограничение на количество открытых позиций, т.е.
одновременно только один открытый ордер, риск в одной сделке - 3%, вопрос :
Какова сумарная просадка? Как это посчитать )
 

Roman! Я установил один советник на 4 валютах одного терминала. Но при наличии сигнала открытия на всех валютах, советник открывается только на одной из них.

Я предположил, что проблема в magic-number и поставил 4 одинаковых советника с разными magicami на 4 валюты. Но результата это не принесло :( Открывает 1 ордер на 1 из валют, а сигнал на открытие есть на 3 из них. Заранее спасибо за помощь!

 

На тестере пробовали?

OrdersTotal() ==0 в условии юзали?

 
skyjet:

Roman! Я установил один советник на 4 валютах одного терминала. Но при наличии сигнала открытия на всех валютах, советник открывается только на одной из них.

Я предположил, что проблема в magic-number и поставил 4 одинаковых советника с разными magicami на 4 валюты. Но результата это не принесло :( Открывает 1 ордер на 1 из валют, а сигнал на открытие есть на 3 из них. Заранее спасибо за помощь!

Явно!!! пишите торгуемый инструмент в первой переменной - "Symbol()" ф-ии OrderSend()... и замените свою ф-ию открытия ордеров на эту.
 
Roman.:
Явно!!! пишите торгуемый инструмент в первой переменной - "Symbol()" ф-ии OrderSend()... и замените свою ф-ию открытия ордеров на эту.
Роман, простите меня за некомпетентность в этом вопросе, но как написать торгуемый инструмент в переменной Symbol() ?
 

Подскажите, почему не работает функция для закрытия последнего открытого BUY ордера.. вот её код:

int CloselastB ()                   
{for (int i=OrdersTotal()-1; i>=0; i--)
  {if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
    {if(OrderSymbol()==Symbol())
      {int order_type=OrderType();
         {if(order_type==OP_BUY)
            {OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
            return ;
            }}}}}}
Причина обращения: