[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 121

 
Vinin >>:

Сперва лучше рассчитать значения стохастика и сигнальной линии. А потом уже сравнивать. Мне просто такой стиль не нравится. Слепой какой-то получается. Да и ошибиться легче.

if() в варианте метаквотов делает полный расчет логического выражения. Желательно его делать максимально простым. Просто if() - одна из медленных операций.

Еще есть такое понятие как "дребезг" на нулевом баре. Возможны случаи, когда сигнал будет повторяться на одном баре не один раз. И даже может не закрепиться. Был ложный. Поэтому стараются брать значения со сформированных баров. Но тогда просится работа по ценам открытия. Хотя варианты могут быть и другие.

Про "дребезг" на нулевом баре понятно, но это другой вопрос...

Спасибо за "медленность" операции if - просвятили.

То есть лучше создать например переменные

х=iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,shiftF);

у=iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,shiftF);

а потом if(x>y) и т.д. правильно?

" Мне просто такой стиль не нравится. Слепой какой-то получается. Да и ошибиться легче."

А как бы вы написали? Научите.

 
Народ, всем привет. Просьба есть. Где-то в сети встречал подобное, но повторно не нашел. Нужен скрипт открывающий сделки с лотностью, расчитываемой от величины стоплосса. Т.е. я через внешние переменные задаю % депо или сумму которую готов подвергнуть риску и величину стоплосса в пунктах. Срипт в зависимости от стоимости пункта и стоплосса рассчитывает лот и выставляет ордер. Если есть у кого такой скриптик, выложите пожалуйста. Или наводку дайте, где скачать. Заранее спасибо.
 
mukata писал(а) >>

Про "дребезг" на нулевом баре понятно, но это другой вопрос...

Спасибо за "медленность" операции if - просвятили.

То есть лучше создать например переменные

х=iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,0,shiftF);

у=iStochastic(Symbol(),0,KperiodF,DperiodF,SlowlingF,methodF,PriceFieldF,1,shiftF);

а потом if(x>y) и т.д. правильно?

" Мне просто такой стиль не нравится. Слепой какой-то получается. Да и ошибиться легче."

А как бы вы написали? Научите.

Я обычно контроль пересечения делаю так. Есть пересечение, дальнейшая обработка.

string _Symbol=Symbol(); // чтобы лишний раз не вызывать функцию

double Stoch0  = iStochastic(_Symbol, 0, KperiodF, DperiodF, SlowlingF, methodF, PriceFieldF, 0,     0);
double Stoch1  = iStochastic(_Symbol, 0, KperiodF, DperiodF, SlowlingF, methodF, PriceFieldF, 0,shiftF);
double Signal0 = iStochastic(_Symbol, 0, KperiodF, DperiodF, SlowlingF, methodF, PriceFieldF, 1,     0);
double Signal1 = iStochastic(_Symbol, 0, KperiodF,D periodF, SlowlingF, methodF, PriceFieldF, 1,shiftF);


//пересекла ли главная линия стохастика сигнальную линию 
if ((Stoch0  - Signal0 )*(Stoch1  - Signal1) <0) {
   // Есть пересечение, дальше проверяем положение (как пересекла мы не знаем пока еще)

}
 
Vinin >>:

Я обычно контроль пересечения делаю так. Есть пересечение, дальнейшая обработка.

  // Есть пересечение, дальше проверяем положение (как пересекла мы не знаем пока еще)
М-дя, как все эффективно!!!
Особенно в тестере у меня...:-)
большинство тиков то - без пересечения, а я получается каждый тик считал: если стох такой меньше чем другой, или другой меньше чем такой.....................
Спасибо огромное, пошел работать.
 
mukata писал(а) >>

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

 
StatBars >>:

Благодарю

 
rsi >>:

Ну так Вы ж так и говорите: днём посылать ордер по условиям 1 & 2, а ночью - по условиям 1 & 2 & 3. Т.е. у Вас есть четвёртое уловие "день-ночь", а Вы его с третьим смешали. Например, можно так

Благодарю

 

Хотелось бы спросить у знаюших людей, какое максимальное кол-во ордеров работаюших (и отложенных) возможно?

Или такого ограничения нет.

 
xrym писал(а) >>

Хотелось бы спросить у знаюших людей, какое максимальное кол-во ордеров работаюших (и отложенных) возможно?

Или такого ограничения нет.

По идее, это надо узавать у вашего ДЦ. Можете попробовать поставить бесконечный цикл для того чтобы увидеть максимум:

for(int k=1;k>2;k--)
{
   OrderSend(Symbol(),OP_BUY,0.1,Ask,1,0,0,"testing order");
   Alert("Текущее количество ордеров: ",OrdersTotal());
}
Последний алерт будет максимальным количеством ордеров в вашем ДЦ.
 

Кстати, OrdersTotal() возвращает число типа int. А int может принимать значения:

Внутреннее представление - длинное целое число размером 4 байта. Целые константы могут принимать значения от -2147483648 до 2147483647. Если константа превышает указанный диапазон, то результат не определен.

Т.е. теоретически максимальное количество одреров: 2147483647
Причина обращения: