Программирование в Easy Language

В данной теме обсуждаются всевозможные вопросы, связанные с программированием на языке Easy Language.

Easy Language в TradeStation 8 отличается от 2000-ой.
А толкового описания не могу найти.
В принципе при импорте перевод происходит автоматически и все нормально работает.
Поэтому пока быстрее написать на старой версии и потом импортировать в 8-ку.
Но это не совсем правильно, у TradeStation 8 возможностей побольше и она заметно быстрее.
Если есть информация по Easy Language в TradeStation 8 буду очень благодарен.

Я сижу на 2000i, так что сорри, ничем не могу помочь.

Здравствуйте. Порекомендуйте, пожалуйста хороший учебник по EL

Добрый день!

Самый лучший мануал по изи - это уроки konkopa.

Посмотрите здесь

http://konkop.narod.ru/likbez.htm

С уважением,
 Юрий.

Здравствуйте. Я еще новичок в EL, нужна помощь. Нужно создать счетчик, который бы счетал количество сделок в 1 баре любого таймфрейма, после того как бар закрылся счетчик сбрасывается и с 0 начинает считать на новом баре. Я думал это сделать используя WHILE, но не хватает знаний. HELP PLEASE)

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

Юрий.

Имеем следующую ситуацию - сработал сигнал на продажу по условуию, а затем позиция закрыласть по стопу (ExitLong) или по безубытку (SetBreakEven). Как прописать в коде, что бы я опять смог открыть короткую позицию по цене предыдущего входа, в случае движения цены в низ?

Попробуйте что-нибудь вроде

SELL at EntryPrice(1) STOP;

Здравствуйте! Подскажите пожалуйста, как сделать чтобы несработавшие ордера не отменялись по закрытию бара, а оставались активными до отмены?

Здравствуйте Григорий, омега на каждой новой свечке снимает все предыдущие заявки, так что никак

Здравствуйте.
"...отменяется, если ордер не выполнен к моменту закрытия бара. Есть одно исключение к этому правилу: в том случае, когда торговая стратегия размещает точно такой же ордер на двух или более последовательных барах. В этом случае TradeStation не будет отменять ордер, чтобы заменить его точным дубликатом. Вместо этого она оставляет ордер активным до тех пор, пока он не исполнится или не изменится."
"Когда Вы работаете с внутридневными диаграммами, то Вы можете написать приказы только для этого дня (ордера, которые отменяются в конце дня), которые размещают один и тот же самый ордер неоднократно в течение дня, как только это находят точку входа."
Как это использовать?

Если Вы хотите, чтобы ордера оставались активными до отмены, Вам необходимо дублировать ордер на каждом баре. Как и написано в инструкции, если ордер не исполнился на текущем баре, цена не дошла например, то если на следующий бар вы выставите точно такой же ордер (совершенно идентичный не исполнившемуся ранее), то ордер не будет заменен в системе, а будет условно считаться перенесенным на следующий бар. При реализации стратегии, введите условие на снятие ордера, можете прописать его как отдельную функцию, возвращающую значения true\falce и вызывайте ее на каждом последующем баре,после бара с неисполненным ордером. Если ваша условие на отмену не исполнилось,выставляйте снова тот же ордер, если исполнилось - не выставляйте.

Спасибо Oxana, вот если бы еще пример, как это написать...
Awesome Oscillator
_____________________
INPUTS: Price((H+L)/2);
 
Vars: AO(0);
 
Value1=Average(Price,5);
Value2=Average(Price,34);
 
AO=Value1-Value2;
 
If AO[0]>AO[1] then Buy at Hight + 1 point Stop{до отмены или исполнения};
If AO[0]<AO[1] then Sell at Low - 1 point Stop{до отмены или исполнения};
If AO[0]=AO[1] then {снять все активные заявки};
 
end;

Григорий, поясните текстом что именно вы хотите получить при исполнении данной стратегии. Решение на покупку или продажу вы принимаете по изменению дивергенции сс. Стопы на покупку или продажу у вас фиксированные или скользящие?

Добрый день Oxana! Это не стратегия, просто чтоб много места на форуме не занимать, вставил индикатор АО, добавил ордеры.
По стратегии у меня вход, выход только стоп-лимит ордерами. Если выполняется условие выставляется стоп-лимит(фиксированный,до отмены или исполнения).
Проблема в том, что на следующей свечке, при неисполнении, стоп-лимит снимается, а мне нужно, чтобы он оставался активным до исполнения или снятия(как в quik поставил
стоп-лимит и он стоит до исполнения или снятия).
1.При выставлении любого другого ордера нужно, чтобы выставленный ранее ордер снимался.
2.Команду на снятие/отмену всех ордеров(не сработавших)

Inputs: ...;

Vars: ..., ONBLimit(False), ONBStop(False), ONBLimit2(False), ONBStop2(False), ONBLimitValue(0), ONBStopValue(0), ONSLimit(False), ONSStop(false), ONSLimit2(False), ONSStop2(False), ONSLimitValue(0), ONSStopValue(0);

ONBLimitValue=High + 2 points;
ONBStopValue=High + 1 point;
ONSLimitValue=Low - 2 points;
ONSStopValue=Low - 1 point;

ONBLimit = Open of next bar >= ONBLimitValue;
ONBStop = Open of next bar <= ONBStopValue;
ONBLimit2 = Open next bar <= ONBLimitValue;
ONBStop2 = Open next bar >= ONBStopValue;

ONSLimit = Open of next bar <= ONSLimitValue;
ONSStop = Open of next bar >= ONSStopValue;
ONSLimit2 = Open of next bar >= ONSLimitValue;
ONSStop2 = Open next bar <= ONSStopValue;

If ... then Begin
If ONBLimit then buy next bar at ONBLimitValue limit
Else if ONBStop then buy next bar at ONBStopValue stop
Else if ONBStop2 and ONBLimit2 then buy next bar at market;
end;

If ... then Begin
If ONSLimit then sellshort next bar at ONSLimitValue limit
Else if ONSStop then sellshort next bar at ONSStopValue stop
Else if ONSStop2 and ONSLimit2 then sellshort next bar at market;
end;

If ... then {снять активные стоп-заявки по закрытии бара};

Для выставления ордеров в таймфрейме "1 minute" нужно посмотреть значения баров таймфрейма "1 day". Как это сделать в easy language? И как вообще вызывать функции по отношению других таймфреймов?

Omega pro suite 2000i + global server

Здравствуйте! Для работы с разными таймферймами, необходимо на чарт наложить отдельные плоты для разных тайфреймов(например ri 1min и ri 60min). В коде программы вызываете значения баров, ссылаясь на источник данных например C of Data1 и C of Data2. Обратите внимание, что ссылки на данные по предыдущей свече большего таймфрейма работают некорректно, поэтому советую вам хранить нужные значения в своих переменных или массиве