используйте LastTradeTime и CurTime
Для того чтобы избавиться от частых срабатываний эксперта, используйте LastTradeTime и CurTime.
Например:
Для того чтобы избавиться от частых срабатываний эксперта, используйте LastTradeTime и CurTime.
Например:
// выйти, если прошло менее 60 секунд после последней сделки
if (CurTime-LastTradeTime)<60 then exit;
Да делал я это уже... Не помогает :(
Дело не в том, что эксперт часто срабатывает, а в том что сигналы эти ложные - их, на самом деле, нет. При работе real-time - все замечательно, а тестер множит позиции, которые в реале бы не исполнились...
Дело не в том, что эксперт часто срабатывает, а в том что сигналы эти ложные - их, на самом деле, нет. При работе real-time - все замечательно, а тестер множит позиции, которые в реале бы не исполнились...
Лучше забудь про них...
Написание экспертов в метарейдере- сплошная трата нервов и здоровья :( Я долго пытался с ними бороться. И глюки были еще веселее чем описаные тобой. В общем плюнул я на это дело и поставил Метасток...пока доволен.
Написание экспертов в метарейдере- сплошная трата нервов и здоровья :( Я долго пытался с ними бороться. И глюки были еще веселее чем описаные тобой. В общем плюнул я на это дело и поставил Метасток...пока доволен.
Все зависит от радиуса кривизны рук
У меня, скажем, эксперты работают просто отлично. Второй месяц довольствуюсь стабильным 17% доходом при полном автомате в торговле.
Евгений: условия входа просмотрите. Однозначно, они у Вас некорректные. И, все же, используйте совет разработчиков.
У меня, скажем, эксперты работают просто отлично. Второй месяц довольствуюсь стабильным 17% доходом при полном автомате в торговле.
Евгений: условия входа просмотрите. Однозначно, они у Вас некорректные. И, все же, используйте совет разработчиков.
Да использую я совет разработчиков... Все равно лажа :(
У меня это условие в каждом эксперте стоит. Причина тут явно не в этом...
У меня это условие в каждом эксперте стоит. Причина тут явно не в этом...
Текст эксперта
Думаю, если Вы пришлете текст эксперта, я Вам сразу скаже причину.
Можете по эл. почте: dmitri.belyakov@alusavots.lv
А можете прямо сюда.
Думаю, если Вы пришлете текст эксперта, я Вам сразу скаже причину.
Можете по эл. почте: dmitri.belyakov@alusavots.lv
А можете прямо сюда.
Вот текст
Вот текст эксперта. Типичный MACD Sample, но суть не даже не в этом. Я ж говорю: подобная ситуация у меня возникает с любым экспертом с которым я использую StopLoss.
/*[[
Name := macd
Author := Copyright © 2002, Company
Link := http://www.company.com/
Notes :=
Update on every tick := No
Enable Alerts := No
Disable alert once hit := No
Lots := 1
Stop Loss := 20
Take Profit := 1000
Trailing Stop := 0
]]*/
defines: MACDOpenLevel(3),MACDCloseLevel(2);
var: MacdCurrent(1),MacdPrevious(2),SignalCurrent(1),SignalPrevious(2);
var: cnt(0);
If Bars<200 or TakeProfit<10 then Exit;
MacdCurrent=iMACD(12,26,9,MODE_MAIN,1);
MacdPrevious=iMACD(12,26,9,MODE_MAIN,2);
SignalCurrent=iMACD(12,26,9,MODE_SIGNAL,1);
SignalPrevious=iMACD(12,26,9,MODE_SIGNAL,2);
If TotalTrades<1 then
{
If FreeMargin<1000 then Exit;
If((CurTime-LastTradeTime)<300) then Exit;
If MacdCurrent<0 and MacdCurrent>SignalCurrent and
MacdPrevious<SignalPrevious and Abs(MacdCurrent)>(MACDOpenLevel*Point)
then
{
SetOrder(OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,RED); // èñïîëíÿåì
Exit;
};
If MacdCurrent>0 and MacdCurrent<SignalCurrent and
MacdPrevious>SignalPrevious and MacdCurrent>(MACDOpenLevel*Point)
then
{
SetOrder(OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,RED); // èñïîëíÿåì
Exit;
};
Exit;
};
for cnt=1 to TotalTrades
{
if OrderValue(cnt,VAL_TYPE)<=OP_SELL and
OrderValue(cnt,VAL_SYMBOL)=Symbol then
{
If OrderValue(cnt,VAL_TYPE)=OP_BUY then
{
If MacdCurrent>0 and MacdCurrent<SignalCurrent and
MacdPrevious>SignalPrevious and MacdCurrent>(MACDCloseLevel*Point) then
{
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Bid,3,Violet);
Exit;
};
If TrailingStop>0 then
{
If (Bid-OrderValue(cnt,VAL_OPENPRICE))>(Point*TrailingStop) then
{
If OrderValue(cnt,VAL_STOPLOSS)<(Bid-Point*TrailingStop) then
{
ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),
Bid-Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);
Exit;
};
};
};
}
else
{
If MacdCurrent<0 and MacdCurrent>SignalCurrent and
MacdPrevious<SignalPrevious and Abs(MacdCurrent)>(MACDCloseLevel*Point) then
{
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Ask,3,Violet);
Exit;
};
If TrailingStop>0 then
{
If (OrderValue(cnt,VAL_OPENPRICE)-Ask)>(Point*TrailingStop) then
{
If OrderValue(cnt,VAL_STOPLOSS)=0 or
OrderValue(cnt,VAL_STOPLOSS)>(Ask+Point*TrailingStop) then
{
ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),
Ask+Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);
Exit;
};
};
};
};
};
};
// the end.
Вот текст эксперта. Типичный MACD Sample, но суть не даже не в этом. Я ж говорю: подобная ситуация у меня возникает с любым экспертом с которым я использую StopLoss.
/*[[
Name := macd
Author := Copyright © 2002, Company
Link := http://www.company.com/
Notes :=
Update on every tick := No
Enable Alerts := No
Disable alert once hit := No
Lots := 1
Stop Loss := 20
Take Profit := 1000
Trailing Stop := 0
]]*/
defines: MACDOpenLevel(3),MACDCloseLevel(2);
var: MacdCurrent(1),MacdPrevious(2),SignalCurrent(1),SignalPrevious(2);
var: cnt(0);
If Bars<200 or TakeProfit<10 then Exit;
MacdCurrent=iMACD(12,26,9,MODE_MAIN,1);
MacdPrevious=iMACD(12,26,9,MODE_MAIN,2);
SignalCurrent=iMACD(12,26,9,MODE_SIGNAL,1);
SignalPrevious=iMACD(12,26,9,MODE_SIGNAL,2);
If TotalTrades<1 then
{
If FreeMargin<1000 then Exit;
If((CurTime-LastTradeTime)<300) then Exit;
If MacdCurrent<0 and MacdCurrent>SignalCurrent and
MacdPrevious<SignalPrevious and Abs(MacdCurrent)>(MACDOpenLevel*Point)
then
{
SetOrder(OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,RED); // èñïîëíÿåì
Exit;
};
If MacdCurrent>0 and MacdCurrent<SignalCurrent and
MacdPrevious>SignalPrevious and MacdCurrent>(MACDOpenLevel*Point)
then
{
SetOrder(OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,RED); // èñïîëíÿåì
Exit;
};
Exit;
};
for cnt=1 to TotalTrades
{
if OrderValue(cnt,VAL_TYPE)<=OP_SELL and
OrderValue(cnt,VAL_SYMBOL)=Symbol then
{
If OrderValue(cnt,VAL_TYPE)=OP_BUY then
{
If MacdCurrent>0 and MacdCurrent<SignalCurrent and
MacdPrevious>SignalPrevious and MacdCurrent>(MACDCloseLevel*Point) then
{
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Bid,3,Violet);
Exit;
};
If TrailingStop>0 then
{
If (Bid-OrderValue(cnt,VAL_OPENPRICE))>(Point*TrailingStop) then
{
If OrderValue(cnt,VAL_STOPLOSS)<(Bid-Point*TrailingStop) then
{
ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),
Bid-Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);
Exit;
};
};
};
}
else
{
If MacdCurrent<0 and MacdCurrent>SignalCurrent and
MacdPrevious<SignalPrevious and Abs(MacdCurrent)>(MACDCloseLevel*Point) then
{
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Ask,3,Violet);
Exit;
};
If TrailingStop>0 then
{
If (OrderValue(cnt,VAL_OPENPRICE)-Ask)>(Point*TrailingStop) then
{
If OrderValue(cnt,VAL_STOPLOSS)=0 or
OrderValue(cnt,VAL_STOPLOSS)>(Ask+Point*TrailingStop) then
{
ModifyOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_OPENPRICE),
Ask+Point*TrailingStop,OrderValue(cnt,VAL_TAKEPROFIT),Red);
Exit;
};
};
};
};
};
};
// the end.
Все дело в волшебных пузырьках
LastTradeTime хранит время последней опреации в реальности. Поэтому проверка LastTradeTime при тесте эксперта смысла не имеет.
Боюсь ошибиться, но, по-моему, раньше LastTradeTime работал и при проверке эксперта...
А вообще, эксперт работает новрмально. Открывается как и задумано.
Но чистый MACD не рекомендую использовать. Не даст он хороших сигналов.
LastTradeTime хранит время последней опреации в реальности. Поэтому проверка LastTradeTime при тесте эксперта смысла не имеет.
Боюсь ошибиться, но, по-моему, раньше LastTradeTime работал и при проверке эксперта...
А вообще, эксперт работает новрмально. Открывается как и задумано.
Но чистый MACD не рекомендую использовать. Не даст он хороших сигналов.
Я вроде бы уже сказал...
что условия входа очень мягкие.
А так - работает он именно так, как запрограммирован. :)
что условия входа очень мягкие.
А так - работает он именно так, как запрограммирован. :)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Hi, народ. Подскажите, pls., кто знает.
Если при тестировании экспертов в MT использовать уровень Stop Loss (например, пунктов 20), то возникает следующая ситуация: сразу же после закрытия позиции по Stop Loss в том же направлении открывается следующая позиция (которая так же закрывается по Stop Loss, и так до тех пор, пока текущий тренд не изменит свое направление).
Например: если без выставления Stop Loss позиция приносит 60 пунктов убытка, то с использованием Stop Loss, за тот же период в место одной будет открыто 60 / 20 = 3 позиции с общим убытком в тех же 60 пунктов.
Т. е. стопы, фактически, ничего не ограничивают. И происходит это с любыми экспертами, в которых эти стопы применяются, независимо от технологии построения. Так же следует отметить, что данная проблема имеет место быть только при тестировании, а при торговле на демо-счете в режиме real-time такой фигни нет (там стопы выполняются, как положено). Соответственно, результаты тестирования и “реальной” торговли различаются весьма и весьма значительно.
Подскажите кто-нить в чем тут фикус-пикус и как с этим бороться? В тестировании проблема или я что-то не так делаю?
Заранее благодарен всем ответившим.