еще добавлю что я понимаю что дело в задержках
но не знаю что я неверно делаю
когда из эксперта убираю задержки
If CurTime > LastTradeTime + 10 Then {...
то тестер стратегии ставит ордера там где должны быть
... т.е. там где и индикаторы показывают
может быть есть какое-то условие, которые может сигнализировать тестеру стратегий что задержки не использовать?
но не знаю что я неверно делаю
когда из эксперта убираю задержки
If CurTime > LastTradeTime + 10 Then {...
то тестер стратегии ставит ордера там где должны быть
... т.е. там где и индикаторы показывают
может быть есть какое-то условие, которые может сигнализировать тестеру стратегий что задержки не использовать?
точнее сказать что я ничего уже не понимаю
сделал простейший тест
копия индиктора - в эксперт, (ну конечно подправленная для эксперта) - ладно, не будем открывать и акрывать ордера - просто нарисуем символы SetArrow - вы будете смеяться но индикатор и эксперт рисуют символы в "разных местах"! что не так? кто может разобраться? что делать?
/*[[
Name := XO
Author :=
Link := 1@1.ru
Notes := POINT FIGURES
Lots := 1
Stop Loss := 30
Take Profit := 155
Trailing Stop :=40
]]*/
Defines: BoxSize(15);
var: startflag(0), cnt(0); // ôëàãè, âñïîì ïåðåìåííûå
var: Step(0); // ðàçìåð øàãà â çíà÷åíèÿõ (BoxSize - â ïóíêòàõ)
var: Up(0), Dn(0); // ôëàãè äâèæåíèÿ ââåðõ èëè âíèç
var: Hi(0), Lo(0); // ïåðåîïðåäåëåííûå Hi Lo äëÿ òåêóùåãî áàðà
var: mode(0), dummy(0);
var: SellCondition (0), BuyCondition(0);
If Bars<200 then Exit;
If FreeMargin<1000 then Exit;
Step = BoxSize*point;
if startflag<1 then { // çíà÷åíèÿ äëÿ ïåðâîãî áàðà
Hi=c;
Lo=c;
startflag=1;
};
if c > (Hi+Step) then {
if Dn = 1 then {
SetArrow(CurTime,Ask,SYMBOL_ARROWUP,Blue);
};
Up=1;
Dn=0;
Hi=c;
Lo=c-Step;
};
if c < (Lo-step) then {
if Up = 1 then {
SetArrow(CurTime,Bid,SYMBOL_ARROWDOWN,Red);
};
Up=0;
Dn=1;
Hi=c+Step;
Lo=c;
};
сделал простейший тест
копия индиктора - в эксперт, (ну конечно подправленная для эксперта) - ладно, не будем открывать и акрывать ордера - просто нарисуем символы SetArrow - вы будете смеяться но индикатор и эксперт рисуют символы в "разных местах"! что не так? кто может разобраться? что делать?
/*[[
Name := XO
Author :=
Link := 1@1.ru
Notes := POINT FIGURES
Lots := 1
Stop Loss := 30
Take Profit := 155
Trailing Stop :=40
]]*/
Defines: BoxSize(15);
var: startflag(0), cnt(0); // ôëàãè, âñïîì ïåðåìåííûå
var: Step(0); // ðàçìåð øàãà â çíà÷åíèÿõ (BoxSize - â ïóíêòàõ)
var: Up(0), Dn(0); // ôëàãè äâèæåíèÿ ââåðõ èëè âíèç
var: Hi(0), Lo(0); // ïåðåîïðåäåëåííûå Hi Lo äëÿ òåêóùåãî áàðà
var: mode(0), dummy(0);
var: SellCondition (0), BuyCondition(0);
If Bars<200 then Exit;
If FreeMargin<1000 then Exit;
Step = BoxSize*point;
if startflag<1 then { // çíà÷åíèÿ äëÿ ïåðâîãî áàðà
Hi=c;
Lo=c;
startflag=1;
};
if c > (Hi+Step) then {
if Dn = 1 then {
SetArrow(CurTime,Ask,SYMBOL_ARROWUP,Blue);
};
Up=1;
Dn=0;
Hi=c;
Lo=c-Step;
};
if c < (Lo-step) then {
if Up = 1 then {
SetArrow(CurTime,Bid,SYMBOL_ARROWDOWN,Red);
};
Up=0;
Dn=1;
Hi=c+Step;
Lo=c;
};
индикатор I-XO
/*[[
Name := XO-I-A-H
Author :=
Link := 1@1.ru
Notes := POINT FIGURES INDICATOR
Separate Window := No
First Color := Blue
First Draw Type := Symbol
First Symbol := 217
Use Second Data := Yes
Second Color := Red
Second Draw Type := Symbol
Second Symbol := 218
]]*/
Input: BoxSize(15);
var: CurrentBar(0);
var: startflag(0), cnt(0), cur(0);
var: Step(0);
var: Up(0), Dn(0);
var: Hi(0), Lo(0);
SetLoopCount(0);
For cnt = 0 To bars {
CurrentBar=bars-cnt;
if startflag<1 then { // çíà÷åíèÿ äëÿ ïåðâîãî áàðà
Hi=c[CurrentBar];
Lo=c[CurrentBar];
startflag=1;
};
cur = c[CurrentBar];
Step = BoxSize*point;
if cur > (Hi+Step) then {
if Dn = 1 then {
setIndexValue(CurrentBar, cur);
};
Up=1;
Dn=0;
Hi=cur;
Lo=cur-Step;
};
if cur < (Lo-Step) then {
if Up = 1 then {
setIndexValue2(CurrentBar, cur);
};
Up=0;
Dn=1;
Hi=cur+Step;
Lo=cur;
};
};
/*[[
Name := XO-I-A-H
Author :=
Link := 1@1.ru
Notes := POINT FIGURES INDICATOR
Separate Window := No
First Color := Blue
First Draw Type := Symbol
First Symbol := 217
Use Second Data := Yes
Second Color := Red
Second Draw Type := Symbol
Second Symbol := 218
]]*/
Input: BoxSize(15);
var: CurrentBar(0);
var: startflag(0), cnt(0), cur(0);
var: Step(0);
var: Up(0), Dn(0);
var: Hi(0), Lo(0);
SetLoopCount(0);
For cnt = 0 To bars {
CurrentBar=bars-cnt;
if startflag<1 then { // çíà÷åíèÿ äëÿ ïåðâîãî áàðà
Hi=c[CurrentBar];
Lo=c[CurrentBar];
startflag=1;
};
cur = c[CurrentBar];
Step = BoxSize*point;
if cur > (Hi+Step) then {
if Dn = 1 then {
setIndexValue(CurrentBar, cur);
};
Up=1;
Dn=0;
Hi=cur;
Lo=cur-Step;
};
if cur < (Lo-Step) then {
if Up = 1 then {
setIndexValue2(CurrentBar, cur);
};
Up=0;
Dn=1;
Hi=cur+Step;
Lo=cur;
};
};
эксперт E-XO
/*[[
Name := XO
Author :=
Link := 1@1.ru
Notes := POINT FIGURES
Lots := 1
Stop Loss := 30
Take Profit := 155
Trailing Stop :=40
]]*/
Defines: BoxSize(15);
var: startflag(0);
var: Step(0);
var: Up(0), Dn(0);
var: Hi(0), Lo(0);
If Bars<200 then Exit;
If FreeMargin<1000 then Exit;
Step = BoxSize*point;
if startflag<1 then {
Hi=c;
Lo=c;
startflag=1;
};
if c > (Hi+Step) then {
if Dn = 1 then {
SetArrow(CurTime,Ask,SYMBOL_ARROWUP,Blue);
};
Up=1;
Dn=0;
Hi=c;
Lo=c-Step;
};
if c < (Lo-step) then {
if Up = 1 then {
SetArrow(CurTime,Bid,SYMBOL_ARROWDOWN,Red);
};
Up=0;
Dn=1;
Hi=c+Step;
Lo=c;
};
/*[[
Name := XO
Author :=
Link := 1@1.ru
Notes := POINT FIGURES
Lots := 1
Stop Loss := 30
Take Profit := 155
Trailing Stop :=40
]]*/
Defines: BoxSize(15);
var: startflag(0);
var: Step(0);
var: Up(0), Dn(0);
var: Hi(0), Lo(0);
If Bars<200 then Exit;
If FreeMargin<1000 then Exit;
Step = BoxSize*point;
if startflag<1 then {
Hi=c;
Lo=c;
startflag=1;
};
if c > (Hi+Step) then {
if Dn = 1 then {
SetArrow(CurTime,Ask,SYMBOL_ARROWUP,Blue);
};
Up=1;
Dn=0;
Hi=c;
Lo=c-Step;
};
if c < (Lo-step) then {
if Up = 1 then {
SetArrow(CurTime,Bid,SYMBOL_ARROWDOWN,Red);
};
Up=0;
Dn=1;
Hi=c+Step;
Lo=c;
};
ну и видимо последнее про непонимание - arrows on the chart
strategy tester
arrows on the chart - включаю
SetArrow(CurTime,Bid,SYMBOL_ARROW...) из эксперта рисует символы на графике
arrows on the chart - выключаю
SetArrow(CurTime,Bid,SYMBOL_ARROW...) из эксперта НЕ рисует символы на графике
это нормально? "arrows on the chart" относится к разрешению "рисовать" любые символы из эксперта на графике?
т.е. разрешение "нарисовать символы" для
SetOrder, Modify, CloseOrder, SetArrow, SetText - 4 функции - ничего не пропустил?
(setorder или других команд манипуляций с ордерами как вы заметили в эксперте нет)
strategy tester
arrows on the chart - включаю
SetArrow(CurTime,Bid,SYMBOL_ARROW...) из эксперта рисует символы на графике
arrows on the chart - выключаю
SetArrow(CurTime,Bid,SYMBOL_ARROW...) из эксперта НЕ рисует символы на графике
это нормально? "arrows on the chart" относится к разрешению "рисовать" любые символы из эксперта на графике?
т.е. разрешение "нарисовать символы" для
SetOrder, Modify, CloseOrder, SetArrow, SetText - 4 функции - ничего не пропустил?
(setorder или других команд манипуляций с ордерами как вы заметили в эксперте нет)
именно так
спасибо! честно... я стараюсь понять хотя и не нашел где написано -догадываюсь по аналогии
но скажите, а что вс таки с экспертом и индикатором, почему на разных барах "рисуют" "сигналы"??
но скажите, а что вс таки с экспертом и индикатором, почему на разных барах "рисуют" "сигналы"??
DelArrow
еще вы пишите что DelArrow(0,0) удаляет все символы с графика
НЕ удаляет почему... кроме того, "arrow on the chart" относится к SetText или нет? и как удалить последствия SetText - из меню Charts -> Delete All Symbols тоже не удаляет - может надо что-то в другом месте почистить? помогите пожалуйста...
еще вы пишите что DelArrow(0,0) удаляет все символы с графика
НЕ удаляет почему... кроме того, "arrow on the chart" относится к SetText или нет? и как удалить последствия SetText - из меню Charts -> Delete All Symbols тоже не удаляет - может надо что-то в другом месте почистить? помогите пожалуйста...
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
напишу просто, постараюсь без "выпендрежа", но совсем просто не получится, уж простите
освоил пару custom индикаторов, написал юзер функцию изменения стопов, все хорошо. Индикаторы что в гистограмме что в символах показывают то что ожидаю увидеть.
Теперь подобрался к эксперту. Эксперт по сути - тот же индикатор, т.е. я ожидаю увидеть открытие ордеров там где в индикаторе вижу стрелочки или переворот гистограммы. Все ОЧЕНЬ ПРОСТО - модифицированный XO индикатор используется что называется в лоб - чтобы проверить эффективность.
/*[[
Name := XO
Author :=
Link := 1@1.ru
Notes := POINT FIGURES
Lots := 1
Stop Loss := 30
Take Profit := 155
Trailing Stop := 40
]]*/
Defines: BoxSize(15);
var: startflag(0), cnt(0);
var: Step(0);
var: Up(0), Dn(0);
var: Hi(0), Lo(0);
var: mode(0), dummy(0);
var: SellCondition (0), BuyCondition(0);
If Bars<200 then Exit;
If FreeMargin<1000 then Exit;
Step = BoxSize*point;
if startflag<1 then {
Hi=c;
Lo=c;
startflag=1;
};
if c > (Hi+Step) then {
if Dn = 1 then {
BuyCondition = 1; SellCondition = 0;
};
Up=1;
Dn=0;
Hi=c;
Lo=c-Step;
};
if c < (Lo-step) then {
if Up = 1 then {
SellCondition = 1; BuyCondition = 0;
};
Up=0;
Dn=1;
Hi=c+Step;
Lo=c;
};
теперь ВОПРОС - ну совершенно не могу закрыть открытые ордера и открыть новые по условию - т.е. код как бы пишу и ожидаю что будет работать, но при запуске StrategyTester ордера открываются совершенно не там где казалось бы должны.
Ниже кусок кода который закрывает и открывает ордера
помогите понять - что неверно?
if BuyCondition > 0 then {
if OrderValue(cnt,VAL_TYPE) == OP_SELL then {
If CurTime > LastTradeTime + 10 Then {
CloseOrder(OrderValue(cnt,VAL_TICKET),Lots,Ask,3,Violet);
Exit;
};
};
If CurTime > LastTradeTime + 10 Then {
SetOrder(OP_BUY,Lots,Ask,2,Ask-StopLoss*Point,Ask+TakeProfit*Point,Blue);
BuyCondition = 0;
Exit;
};
};
if SellCondition > 0 then {
if OrderValue(cnt,VAL_TYPE) == OP_BUY then {
If CurTime > LastTradeTime + 10 Then {
CloseOrder(OrderValue(cnt,VAL_TICKET),Lots,Bid,3,Violet);
Exit;
};
};
If CurTime > LastTradeTime + 10 Then {
SetOrder(OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,Red);
SellCondition = 0;
Exit;
};
};