вопрос по мт3

 
здравствуйте!
мт3 еще в поддержке? надеюсь, что так, ибо на мт4 как-то не торопится никто переходить..

вопрос про тестирование эксперта.

написал эксперт, и обнаружил, что отложенные ордера срабатывают СРАЗУ после установки.
причем по цене, в нем проставленном, и совершенно далеком от цен данного бара..
искал в архиве - не нашел такой темы :-((

т е написано
...

SetOrder(OP_BUYLIMIT,Lots,ask+20*Point,0,ask-20*Point,Ask+TakeProfit*Point,red);
// цену открытия можно ставить любую
..

а в логе вот чего :

exampl on EURGBP,M15
Op Time Type Ticket Lots Price SL / TP Profit Balance
1 2004.09.17 17:30 buy limit 1 1.00 0.6815 0.6775 / 0.6835 // устанавливает
2 2004.09.17 17:30 process 1 1.00 0.6815 0.6775 / 0.6835 // и на этом же баре .. но там нет такой цены !!
3 2004.09.21 10:01 t/p 1 1.00 0.6835 0.6775 / 0.6835 386.86 10386.86

или я чего не так делаю?
 
нда..
так чего делать-то?
 
правильно формулировать вопрос. и правильно оформлять. Вам трудно было использовать тэг pre?
я попытался разобраться, но это трудно сделать в неформатированном тексте.
откуда Вы знаете, что на этом баре не было цены 0.6815? Вы бы привели цены OHLC.
 
вроде простейший эксперт-то.. но я в непонятках :-((((

/*[[
	Name := exampl
	Author := Copyright © 2003, Company
	Link := <a href=http://www.company.com/>http://www.company.com/</a>
	Lots := 1.00
	Stop Loss := 20
	Take Profit := 40
	Trailing Stop := 0
]]*/
Variable : shift(0),prevtime(0),signal(0),first(true),loopBegin(134),loopEnd(1);

Variable : GreenLineA(0),RedLineA(0),BlueLineA(0);
Variable : cnt(0),qOP_buy(0),qOP_sell(0),qLP_buy(0),qLP_sell(0);

SetLoopCount(0);

// проверка на загрузку новых баров
If (prevtime == Time) Then exit; prevtime=Time;

// если первая загрузка, то очищаем график
if (first) then DelObject("",0,0,0,0);
first = false;

shift = 1;

// определение линий аллигатора
GreenLineA = iAlligator(13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORLIPS,shift);
RedLineA = iAlligator(13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORTEETH,shift);
BlueLineA = iAlligator(13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORJAW,shift);

if (TotalTrades = 0) then { // если нет вообще позиций, ставим произвольный ордер
	SetOrder(OP_BUYLIMIT,Lots,ask+20*Point,0,ask-20*Point,Ask+TakeProfit*Point,red);
	// вот тут я не понял... я ставлю ОТЛОЖЕННЫЙ(!!) ордер, по цене, далеко от текущей.
	// а при тестировании ордер открывается СРАЗУ после выставления.. :-(((( по этой,ask+20*Point, цене 
	exit;
}
else {

	qOP_buy = 0;qOP_sell = 0;qLP_buy = 0;qLP_sell = 0;
	for cnt = 1 to TotalTrades { // считаем ордера и открытые позы
		Switch Ord(cnt,VAL_TYPE) {
			Case 0: /* if (ask-BlueLineA > 15*Point) then // если челюсть дальше 15 п, двигаем стоп
						ModifyOrder(Ord(cnt,VAL_TICKET),ask,BlueLineA,Ask+TakeProfit*Point,blue); */
					qOP_buy++;break; // и считаем открыт позы
			Case 2: /* if (Ord(cnt,VAL_TYPE) = OP_BUYLIMIT AND Ord(cnt,VAL_OPENPRICE)<BlueLineA) 
						then { DeleteOrder(Ord(cnt,VAL_TICKET),blue);cnt--; }
					else */ qLP_buy++;
					break; // считаем отложенные ордера на покупку
			Case 4: alert("непорядок - есть стоп-ордера на покупку");break;
			Case 3: qLP_sell++;break; // считаем отложенные ордера на продажу
			Case 5: alert("непорядок - есть стоп-ордера на продажу");break;
		};
	}
	if (qLP_buy != 0) then { // если есть отложеный ордер
		for cnt = 1 to TotalTrades { if (Ord(cnt,VAL_TYPE) = OP_BUYLIMIT) then break; } // нажодим отложенный ордер
		ModifyOrder(Ord(cnt,VAL_TICKET),ask+20*Point,BlueLineA,Ask+TakeProfit*Point,blue); // и пытаемся его изменить
		alert("а сюда как попасть?????");
	}
};


при запуске на тестирование он не ставит отложеных ордеров..
я что-то упускаю?

 
да, забыл отметить, что это смотрелось на 15м графике.. на 30м и 1ч тоже самое (профиты и стопы выставляются сооответственно)
 
SetOrder(OP_BUYLIMIT,Lots,ask+20*Point,0,ask-20*Point,Ask+TakeProfit*Point,red);



А кто Вас заставляет ставить заведомо неверный ордер?
Похоже что только желание указать на ошибку.

 
а почему он неверный? :-(
параметры верные?
операция, лот, цена ордера далекая от реал цены, проскальзывание=0, стоплосс - тоже далек от цены, профит.
почему он срабатывает сразу????
 
BUYLIMIT должен быть ниже текущей рыночной цены, а не выше (Ask+20*Point).
В Вашем случае(если хотите ставить BUY ордер на пробой уровня) ордер надо ставить BUYSTOP.
 
да.. хм.. не знал :-(
спасибо
Причина обращения: