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

 
evillive: Проще некуда, не так ли?

Пожалуй что так. Ну говорил же - чайник я, чайник... Вот тут профит в верхней строке показан в пунктах, только в 3-значных:


Насколько я понял, PipProfit = USDprofit/lot/Point для EURUSD. Для пар с обратной котировкой надо взять разницу цен открытия и текущей и перемножить на Digits: Pips = OrderOpenPrice()-Bid*Digits_coefficient; где
Digits_coefficient = MathPow(10,Digits);

Разницу брать не обязательно, есть функция OrderProfit().

Пройдемся еще раз, чтобы в моске застряло. Итак, покупаем GBPJPY.

1. OrderProfit() равен -15.27 USD = -1228.32 JPY (для конверсии в иену умножаем на курс USDJPY).

2. Делим профит на лот, равный 0.1.

3. Делим результат на цену пункта 1 лота, равную 0.01 JPY * 100000 = 1000 JPY. Получаем -12.28 пунктов, т.е. как и надо.

Небольшая ошибка - потому, что цифры брал не в один и тот же момент времени, а тут как раз иена резко стала укрепляться.

Формула для XXXYYY:

pips = ( USDYYY или 1/YYYUSD ) * OrderProfit() / ( OrderLots( ) * Point ).

Здесь Point - цена пункта 1 лота в валюте YYY, равная 100000 * MathPow( 10, - Digits ).

 

Добрый день.

Каковы могут быть причины почему не оптимизируется советник ?

Оптимизируемый параметр один, индикаторы штатные.

Тест идет нормально.

 
DOCTORS:

Может подскажите?

Суть скрипта такая- закрывает перекрытие ордера... Но есть загвоздка- почему то не закрывает ордера с разным размером лота...

Не подскажите где загвоздка?


Ну для начала замените направление проверки с

for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер

на

for(int i=OrdersTotal() - 1; i>=0; i--) // Цикл перебора ордер


везде

 
sting-igor:

почему некоторые советники сначала работают хорошо в тестере, а потом не открывают не одной сделки? я названия советников не помню, но у меня три таких было, может я что-то не так делаю? мт4

Криво написанный советник может выполнить деление на ноль и после этого перестать работать. В журнале пошукайте ошибку ZeroDevide...
 
ilunga:

Ну для начала замените направление проверки с

for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер

на

for(int i=OrdersTotal() - 1; i>=0; i++) // Цикл перебора ордер


везде


Снял вопрос, т.к. скрипт крайне не корректен оказался... Много доделывать.. .Я хотел чтобы он в ноль перекрывал сделки.. а тут просто перекрытие...За помощь огромное спасибо... как сделаю нулевое перекрыте- выложу на вопросы.
 

Mathemat, если нужно чисто количество пипсов прибыли/лосса то можно ещё проще считать, я просто спал вчера уже когда писал )))

Вроде универсальные формулы, подходят для всех валютных пар:

double tickvalue = MarketInfo(OrderSymbol(),MODE_POINT); //если нужно значение тика для инструмента в окне которого установлен эксперт, то просто используем Point в дальнейшем

Pips = (OrderOpenPrice()-Ask)/tickvalue; // order short

Pips = (Bid - OrderOpenPrice())/tickvalue; // order long

.

 

Господа прошу помощи.

Нужна функция которая проверяет, трогала ли цена машку за последние икс баров?

Прошу сильно не пинать, т.к. я чайник совсем.

 

Как переписать индикатор Awesome, только для 1H . Допустим я присоединяю Awesome к 4H, я хочу,чтобы индикатор отображал данные относящиеся к 1H, а не к 4H.

//---- name for DataWindow and indicator subwindow label
IndicatorShortName("AO");
SetIndexLabel(1,NULL);
SetIndexLabel(2,NULL);

ExtBuffer0[i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,i);

Я меняю NULL на PeriodH1, но это не помогает.

 
flintz:

Как переписать индикатор Awesome, только для 1H . Допустим я присоединяю Awesome к 4H, я хочу,чтобы индикатор отображал данные относящиеся к 1H, а не к 4H.

//---- name for DataWindow and indicator subwindow label
IndicatorShortName("AO");
SetIndexLabel(1,NULL);
SetIndexLabel(2,NULL);

ExtBuffer0[i]=iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,i)-iMA(NULL,0,34,0,MODE_SMA,PRICE_MEDIAN,i);

Я меняю NULL на PeriodH1, но это не помогает.

Меняй не NULL а "0" (следующий после NULL параметр.)
 
Спасибо !!!
Причина обращения: