если Вы работаете по последнему, уже законченному бару и не открываете больше одной позиции, то можно. в Вашем случае - это проблематично. почитайте книгу Игоря Морозова и Рената Фатхуллина "Forex: от простого к сложному. Новые возможности с клиентским терминалом MetaTrader". там подробно описаны особенности тестирования и подробно разобраны несколько экспертов.
а не надо использовать текущий бар в вычислениях и тогда операции с ордерами будут всегда по open и тогда тестирование будет совпадать в любой модели и, что важнее, с реальной работой.
конкретно в вашем случае должно быть так:
конкретно в вашем случае должно быть так:
If c[1] > iMAEx(50,MODE_SMA,0,PRICE_HIGH,1) then
-----------------------------------
http://forexsystems.ru/phpBB/
Большое спасибо за ответы.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
можно ли в мт3 реально тестить системы по OHLC
а то получается что при условии пересечения Close
мувинга и дальнейшей покупке, почему-то покупка тестере
происходит на уровне Hi этой же свечи а это уже прошлое
значение
получается что при тестировании по OHLC
тестер пытается воссоздать реальную картину торгов тиками через МТ3 и ничего сделать нельзя ?
или я неправильно написал скрипт??
вот скрипт:
/*[[
Name := KCC
Author := Kikitra
Notes := Корридор скользящих по Hi и Lo
Notes := -при пересечении снизу ценой и последующем выходе из коридора покупка
Notes := -при пересечении сверху ценой и последующем выходе из коридора продажа
Notes :=
Notes :=
Lots := 1.00
Stop Loss := 100
Take Profit := 10000
Trailing Stop := 0
]]*/
var:cnt(0);
If Year < 2002 Then Exit;//ограничение по году тестирования
If FreeMargin<1000 then Exit; // ограничение по деньгам а то когда кончатся эксперт несёт бред
if totaltrades<1 then // начало блока покупки по ордеру
{//1
If c > iMAEx(50,MODE_SMA,0,PRICE_HIGH,0) then // условие совершения покупки
{//2
SetOrder(op_buy,lots,ask,3,l[1]-stoploss*point,bid+takeprofit*point,green); //сама покупка
SetArrow(Time,Low-50*Point,241,Magenta); // стрела-отметка на графике ВВЕРХ
exit; // необходимый выход из операции
};//2
};//1
If TotalTrades>0 then // начало блока дальнейшего контроля сделки
{//1
for cnt=1 to TotalTrades
{//2
//позиция buy или sell и по валютной паре, с которой работает эксперт
If OrderValue(cnt,VAL_TYPE)<=OP_SELL and
OrderValue(cnt,VAL_SYMBOL)=Symbol then //и равенство валютной паре дабы не перепутать
{//3
If OrderValue(cnt,VAL_TYPE)=OP_BUY then //если buy
{//4
IF c < iMAEx(50,MODE_SMA,0,PRICE_LOW,0)then //условие закрытия позиции
{//5
CloseOrder(OrderValue(cnt,VAL_TICKET),OrderValue(cnt,VAL_LOTS),Bid,3,Violet);//сама покупка
SetArrow(Time,High+150*Point,244,Red);// стрела-отметка на графике ВВЕРХ
Exit; // необходимый выход из операции
};//5
};//4
};//3
};//2
};//1