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

 
Dimka-novitsek:

Добрій dtxth вечер! Я открываю ордер бай, просто бай, в цене у него написано аск, просто аск, и вот, ругается так 2012.02.19 22:31:57 2010.08.02 01:12 Ордер EURUSD,M15: invalid price 1.30616000 for OrderSend function

Это нормально? А можно ему нормализацию прописать прямо внутри ордерсенда?


Нормализацию можно прописать прямо внутри ордерсенда.
 

Добрый день.

Подскажите код, как можно построить MA для MACD.

double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

applied_price должна равняться значению MACD.

 
Stells:

Добрый день.

Подскажите код, как можно построить MA для MACD.

double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

applied_price должна равняться значению MACD.

Не выйдет...

Потому, что:

applied_price - Используемая цена. Может быть любой из ценовых констант.


А ценовые константы могут принимать значения:

Используемая цена для расчёта индикаторов может принимать любое из следующих значений:

Константа Значение Описание
PRICE_CLOSE 0 Цена закрытия
PRICE_OPEN 1 Цена открытия
PRICE_HIGH 2 Максимальная цена
PRICE_LOW 3 Минимальная цена
PRICE_MEDIAN 4 Средняя цена, (high+low)/2
PRICE_TYPICAL 5 Типичная цена, (high+low+close)/3
PRICE_WEIGHTED 6 Взвешенная цена закрытия, (high+low+close+close)/4


Так что используйте

double iMAOnArray( double array[], int total, int period, int ma_shift, int ma_method, int shift)

Расчет скользящего среднего на данных, хранящихся в массиве. В отличие от iMA(...) функция iMAOnArray не выбирает данные на основе названия инструмента, таймфрейма и используемой цены - ценовые данные должны быть подготовлены заранее. Расчет производится слева направо. Для организации доступа к элементам массива, как к таймсерии (то есть справа налево), необходимо использовать функцию ArraySetAsSeries.
Параметры:
array[] - Массив с данными.
total - Количество элементов для вычисления. 0 означает все элементы массива.
period - Период усреднения для вычисления скользящего среднего.
ma_shift - Сдвиг индикатора относительно ценового графика.
ma_method - Метод усреднения. Может быть любым из значений методов скользящего среднего (Moving Average).
shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад).
 
Roman.:

Нормализацию можно прописать прямо внутри ордерсенда.


Спасибо!! Я так и сделал. Теперь, извиняюсь, лот ему вроде не нравится, пишет так. 2012.02.20 08:16:41 2010.08.02 01:12 Tester: PrevBalance: 500.00, PrevPL: 0.00, PrevEquity 500.00, PrevMargin: 0.00, NewMargin: 653, FreeMargin: -153.05

Это демо счет. Неужели лот единица- это много, прошу прощения???? И что за новая маржа, фри маржа?

Да, все, лотом при балансе 1000 ходит.

 
Dimka-novitsek:


Спасибо!! Я так и сделал. Теперь, извиняюсь, лот ему вроде не нравится, пишет так. 2012.02.20 08:16:41 2010.08.02 01:12 Tester: PrevBalance: 500.00, PrevPL: 0.00, PrevEquity 500.00, PrevMargin: 0.00, NewMargin: 653, FreeMargin: -153.05

Это демо счет. Неужели лот единица- это много, прошу прощения???? И что за новая маржа, фри маржа?


Фри маржа - это свободная маржа для открытия ордера под соответствующий (этой марже) объем.

Т.к. " FreeMargin: -153.05 ", то ордера вообще никакие не откроются, т.к. это значение отрицательно.

См. калькулятор. По вводи различные значения и глянь сколько будет необходимо маржи под заданный объем позиции, например,

Для открытия 1-го лота на евробаксе требуется 265 $ своб. маржи при плече 1:500. Стоимость пункта равна 10 $.

 
Спасибо!!!!!! Спасибо большое!!
 

Парни помогите.. чет запутался.

проблема в чем- как удержать скрипт на графике:(

Вот пример скрипта...Закрывает все сделки при условии если суммарное значение :

nt start()
{

int i;
bool k=1;
//----

while (k==1) {

if ((AccountProfit()>=500) || (AccountProfit()<=-300))
{

for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_SELL)
OrderClose( OrderTicket(),OrderLots(), Ask, 20, 0 );
}
}



for(i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{
if (OrderType() == OP_BUY)
OrderClose( OrderTicket(),OrderLots(), Bid, 20, 0 );
}
}
}
k=0;
}
return(0);
}

Хочу чтобы висел до тех пор, пока Аккаунт профит не будет пробьет в одном из направлений (в данном случае 500 и -300)

 
Форумчане, скажите как в советнике прописать условие, чтоб при наступлении условий отвкрытия ордера он открывал только один ордер. и пока этот ордер не закроется по стопу или тейк профиту, другой не открыватся
 
link1:
Форумчане, скажите как в советнике прописать условие, чтоб при наступлении условий отвкрытия ордера он открывал только один ордер. и пока этот ордер не закроется по стопу или тейк профиту, другой не открыватся

int ticket, total; //<---забыл указать...сорри

total = OrdersTotal();
if(total < 1){

ticket=OrderSend(...);

}


 
DOCTORS:

int total;

total = OrdersTotal();
if(total < 1){

ticket=OrderSend(...);

}




Спасибо большое! )