void orderOpen( int orderType, double lot, int numOrderDogon = 0, int orderNum = 0 ){
orderNumber = 0;
switch( orderType ){
case 0:
while( orderNumber == 0 ){
orderNumber = OrderSend(Symbol(), OP_SELL, lot, NormalizeDouble(Bid, Digits), 2, 0, 0, "Sell by Grafik", 8888, 0, Green);
Print ( " OPEN ORDER SELL numOrderSell ", numOrderSell, " Signal_Open() ", Signal_Open() );
}
if( numOrderDogon == 0 ){
openOrderSell[numOrderSell][0] = orderNumber;
if( OrderSelect( orderNumber, SELECT_BY_TICKET, MODE_TRADES ) ) openOrderSell[numOrderSell][1] = 100000*NormalizeDouble(OrderOpenPrice(), 5);
openOrderSell[numOrderSell][2] = lot;
openOrderSell[numOrderSell][3] = 0;
openOrderSell[numOrderSell][4] = 0;
numOrderSell = numOrderSell + 1;
lastOrderSell = 0;
}else{
}
break;
case 1:
while( orderNumber == 0 ){
orderNumber = OrderSend(Symbol(), OP_BUY, Lots, NormalizeDouble(Ask, Digits), 2, 0, 0, "Buy by Grafik", 8888, 0, Green);
Print ( " OPEN ORDER BAY numOrderBay ", numOrderBay, " Signal_Open() ", Signal_Open() );
}
if( numOrderDogon == 0 ){
openOrderBay[numOrderBay][0] = orderNumber;
if( OrderSelect( orderNumber, SELECT_BY_TICKET, MODE_TRADES ) ) openOrderBay[numOrderBay][1] = 100000*NormalizeDouble(OrderOpenPrice(), 5);
openOrderBay[numOrderBay][2] = lot;
openOrderBay[numOrderBay][3] = 0;
openOrderBay[numOrderBay][4] = 0;
numOrderBay = numOrderBay + 1;
}else{
int i = orderListNumber( 0, orderNum );
switch( numOrderDogon ){
case 1:
orderSellDogon[i][1] = orderNumber;
if( OrderSelect( orderNumber, SELECT_BY_TICKET, MODE_TRADES ) ) orderSellDogon[i][2] = 100000*NormalizeDouble(OrderOpenPrice(), 5);
// openOrderSell[i][5] = orderSellDogon[i][2];
openOrderSell[i][4] = 1;
break;
case 2:
orderSellDogon[i][3] = orderNumber;
if( OrderSelect( orderNumber, SELECT_BY_TICKET, MODE_TRADES ) ) orderSellDogon[i][4] = 100000*NormalizeDouble(OrderOpenPrice(), 5);
// openOrderSell[i][5] = (orderSellDogon[i][2] + orderSellDogon[i][4])/2;
openOrderSell[i][4] = 2;
break;
}
lastOrderSell = 1;
}
break;
}
}
Вопрос разрешился, правда все равно не понятна взаимосвязь...
Ордера Bay открывались с параметром Лота который определялся вне функции, ордера Sell с параметром Лота, который в функцию передавался. Уже просто от бессилия поменял в открытии Bay параметр Лот на передающийся в функцию и проблема исчезла. Вот вообще непонятна, какая здесь взаимосвязь... ведь на тех "левых" ордерах, советник даже в функцию открытия не заходил, если судить по тому, что принты не выводил....
SRC!
void orderOpen( int orderType, double lot, int numOrderDogon = 0, int orderNum = 0 ){ orderNumber = 0; switch( orderType ){ case 0: while( orderNumber == 0 ){ orderNumber = OrderSend(Symbol(), OP_SELL, lot, NormalizeDouble(Bid, Digits), 2, 0, 0, "Sell by Grafik", 8888, 0, Green); Print ( " OPEN ORDER SELL numOrderSell ", numOrderSell, " Signal_Open() ", Signal_Open() ); } if( numOrderDogon == 0 ){ openOrderSell[numOrderSell][0] = orderNumber; if( OrderSelect( orderNumber, SELECT_BY_TICKET, MODE_TRADES ) ) openOrderSell[numOrderSell][1] = 100000*NormalizeDouble(OrderOpenPrice(), 5); openOrderSell[numOrderSell][2] = lot; openOrderSell[numOrderSell][3] = 0; openOrderSell[numOrderSell][4] = 0; numOrderSell = numOrderSell + 1; lastOrderSell = 0; }else{ } break; case 1: while( orderNumber == 0 ){ orderNumber = OrderSend(Symbol(), OP_BUY, Lots, NormalizeDouble(Ask, Digits), 2, 0, 0, "Buy by Grafik", 8888, 0, Green); Print ( " OPEN ORDER BAY numOrderBay ", numOrderBay, " Signal_Open() ", Signal_Open() ); } if( numOrderDogon == 0 ){ openOrderBay[numOrderBay][0] = orderNumber; if( OrderSelect( orderNumber, SELECT_BY_TICKET, MODE_TRADES ) ) openOrderBay[numOrderBay][1] = 100000*NormalizeDouble(OrderOpenPrice(), 5); openOrderBay[numOrderBay][2] = lot; openOrderBay[numOrderBay][3] = 0; openOrderBay[numOrderBay][4] = 0; numOrderBay = numOrderBay + 1; }else{ int i = orderListNumber( 0, orderNum ); switch( numOrderDogon ){ case 1: orderSellDogon[i][1] = orderNumber; if( OrderSelect( orderNumber, SELECT_BY_TICKET, MODE_TRADES ) ) orderSellDogon[i][2] = 100000*NormalizeDouble(OrderOpenPrice(), 5); // openOrderSell[i][5] = orderSellDogon[i][2]; openOrderSell[i][4] = 1; break; case 2: orderSellDogon[i][3] = orderNumber; if( OrderSelect( orderNumber, SELECT_BY_TICKET, MODE_TRADES ) ) orderSellDogon[i][4] = 100000*NormalizeDouble(OrderOpenPrice(), 5); // openOrderSell[i][5] = (orderSellDogon[i][2] + orderSellDogon[i][4])/2; openOrderSell[i][4] = 2; break; } lastOrderSell = 1; } break; } }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день всем!
Прошу по возможности помочь, кто сталкивался или знаком с такой ситуацией - при тестировании советника (в МТ4) ордер открывается вообще сам по себе. Кто-нибудь с таким сталкивался? Из-за чего это может происходить?
Т.е. даже в журнале не показывает открытие этих ордеров, хотя закрытие показывает. Функции открытия закрытия стандартные, до этого все работало нормально. В самой функции открытия прописаны принты при любом открытии, на эти ордера ничего не выводит, создается впечатление что их не советник вообще открывает (хотя в нем они закрываются).
Фрагмент журнала:
2 04:54:18 2014.11.10 02:23 Новый 080115 ДНИ EURUSD,M5: open #1 sell 0.10 EURUSD at 1.24611 ok
0 04:54:18 2014.11.10 02:23 Новый 080115 ДНИ EURUSD,M5: OPEN ORDER SELL numOrderSell 1 Signal_Open() 0
2 04:54:18 2014.11.10 03:56 Новый 080115 ДНИ EURUSD,M5: open #2 buy 0.10 EURUSD at 1.24698 ok
0 04:54:18 2014.11.10 03:56 Новый 080115 ДНИ EURUSD,M5: OPEN ORDER BAY numOrderBay 0 Signal_Open() 1
2 04:54:18 2014.11.10 06:55 Новый 080115 ДНИ EURUSD,M5: open #3 sell 0.10 EURUSD at 1.24797 ok
0 04:54:18 2014.11.10 06:55 Новый 080115 ДНИ EURUSD,M5: OPEN ORDER SELL numOrderSell 2 Signal_Open() 0
2 04:54:18 2014.11.10 09:04 Новый 080115 ДНИ EURUSD,M5: close #2 buy 0.05 EURUSD at 1.24698 at price 1.24672
2 04:54:18 2014.11.10 09:04 Новый 080115 ДНИ EURUSD,M5: close #1 sell 0.10 EURUSD at 1.24611 at price 1.24692
2 04:54:18 2014.11.10 09:04 Новый 080115 ДНИ EURUSD,M5: close #3 sell 0.10 EURUSD at 1.24797 at price 1.24692
0 04:54:18 2014.11.10 09:04 Новый 080115 ДНИ EURUSD,M5: CLOSE ALL ORDER numOrderSell 0 numOrderBay 0
2 04:54:18 2014.11.10 09:04 Новый 080115 ДНИ EURUSD,M5: open #5 sell 0.10 EURUSD at 1.24670 ok
0 04:54:18 2014.11.10 09:04 Новый 080115 ДНИ EURUSD,M5: OPEN ORDER SELL numOrderSell 1 Signal_Open() 0
2 04:54:18 2014.11.10 11:27 Новый 080115 ДНИ EURUSD,M5: open #6 buy 0.10 EURUSD at 1.24831 ok
0 04:54:18 2014.11.10 11:27 Новый 080115 ДНИ EURUSD,M5: OPEN ORDER BAY numOrderBay 0 Signal_Open() 1
2 04:54:18 2014.11.10 13:53 Новый 080115 ДНИ EURUSD,M5: open #7 sell 0.12 EURUSD at 1.24861 ok
0 04:54:18 2014.11.10 13:53 Новый 080115 ДНИ EURUSD,M5: OPEN ORDER SELL numOrderSell 2 Signal_Open() 0
2 04:54:18 2014.11.10 16:08 Новый 080115 ДНИ EURUSD,M5: close #6 buy 0.05 EURUSD at 1.24831 at price 1.24725
2 04:54:18 2014.11.10 16:08 Новый 080115 ДНИ EURUSD,M5: close #5 sell 0.10 EURUSD at 1.24670 at price 1.24745
2 04:54:18 2014.11.10 16:08 Новый 080115 ДНИ EURUSD,M5: close #7 sell 0.12 EURUSD at 1.24861 at price 1.24745
0 04:54:18 2014.11.10 16:08 Новый 080115 ДНИ EURUSD,M5: CLOSE ALL ORDER numOrderSell 0 numOrderBay 0
2 04:54:18 2014.11.10 16:08 Новый 080115 ДНИ EURUSD,M5: open #9 sell 0.12 EURUSD at 1.24726 ok
0 04:54:18 2014.11.10 16:08 Новый 080115 ДНИ EURUSD,M5: OPEN ORDER SELL numOrderSell 1 Signal_Open() 0
2 04:54:18 2014.11.10 23:59 Tester: order #9 is closed
2 04:54:18 2014.11.10 23:59 Tester: order #8 is closed
2 04:54:18 2014.11.10 23:59 Tester: order #4 is closed
Непонятно откуда взявшиеся ордера № 4 и 8 - оба эти ордера на бай и открываются в тот же момент что ордера на селл № 5 и 9
Спасибо всем кто хоть как-нибудь поможет.