Ответ
 
Опции темы
Старый 01.10.2013, 18:41   #1721 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от gzh Посмотреть сообщение
Проблема в этой части кода. Я ее закоментировал, советник заработал. но без этой части, ордер не будет закрываться, пока не окупит весь убыток.
Ты же программист, ты можешь увидеть , что не так, подскажи. Очень нужна эта вещь!
for (int t=0; t<OrdersTotal(); s++) {
if (OrderSelect (t, SELECT_BY_POS, MODE_TRADES)) profit = OrderProfit();

if (profit >= ubytok + Nado_profit) {
if (OrderType()==0) OrderClose(OrderTicket(),OrderLots(), Bid,0);
if (OrderType()==1) OrderClose(OrderTicket(),OrderLots(), Ask,0); }}
int t=0; t<OrdersTotal(); s++
не s++
а
t
и ордерс тотал -1
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.10.2013, 18:47   #1722 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 830
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 844 раз(а) в 555 сообщениях
Поинты: 1310
Сообщение от eevviill Посмотреть сообщение
int t=0; t<OrdersTotal(); s++
не s++
а
t
и ордерс тотал -1
Не-не, с ордерстотал все ОК, там же строго меньше стоит, а иначе при одном-единственном ордере ваще ничё работать не будет
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (01.10.2013)
Старый 01.10.2013, 19:02   #1723 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
Исправил всякие мелкие опечатки, теперь советник работает, не зависает. НО! другая проблема: ордера плодятся, один за другим открываются, теперь походу вообще ничего из этого алгоритма не работает так, как надо. Вообще странно!!!

вот код правильный, исправлены всякие опечатки.

for (int s=OrdersHistoryTotal()-1; s>=0; s--) {
if (OrderSelect (s,SELECT_BY_POS, MODE_HISTORY))

if (OrderProfit() < 0) ubytok += OrderProfit(); }

for (int t=0; t<OrdersTotal(); t++) {
if (OrderSelect (t, SELECT_BY_POS, MODE_TRADES)) profit = OrderProfit();

if (profit >= ubytok + Nado_profit) {
if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(), Bid,0);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(), Ask,0); }}

for (int p=OrdersTotal()-1; p>=0; p--) {
OrderSelect(p,SELECT_BY_POS,MODE_TRADES);

if (OrderType()==OP_BUY && Bid < iOpen(Symbol(),PERIOD_MN1,0)-otstup*Point) {
OrderClose(OrderTicket(),OrderLots(),Bid,0); }


if (OrderType()==OP_SELL && Bid > iOpen(Symbol(),PERIOD_MN1,0)+otstup*Point) {
OrderClose(OrderTicket(),OrderLots(),Ask,0); } }


if (OrdersTotal()==0) {
if (Bid > iOpen(Symbol(),PERIOD_MN1,0)+otstup*Point) OrderSend (Symbol(), OP_BUY, lot, Ask, 0, 0, 0);
if (Bid < iOpen(Symbol(),PERIOD_MN1,0)-otstup*Point) OrderSend (Symbol(), OP_SELL, lot, Bid, 0, 0, 0); }
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.10.2013, 19:18   #1724 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от gzh Посмотреть сообщение
Исправил всякие мелкие опечатки, теперь советник работает, не зависает. НО! другая проблема: ордера плодятся, один за другим открываются, теперь походу вообще ничего из этого алгоритма не работает так, как надо. Вообще странно!!!

вот код правильный, исправлены всякие опечатки.

for (int s=OrdersHistoryTotal()-1; s>=0; s--) {
if (OrderSelect (s,SELECT_BY_POS, MODE_HISTORY))

if (OrderProfit() < 0) ubytok += OrderProfit(); }

for (int t=0; t<OrdersTotal(); t++) {
if (OrderSelect (t, SELECT_BY_POS, MODE_TRADES)) profit = OrderProfit();

if (profit >= ubytok + Nado_profit) {
if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(), Bid,0);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(), Ask,0); }}

for (int p=OrdersTotal()-1; p>=0; p--) {
OrderSelect(p,SELECT_BY_POS,MODE_TRADES);

if (OrderType()==OP_BUY && Bid < iOpen(Symbol(),PERIOD_MN1,0)-otstup*Point) {
OrderClose(OrderTicket(),OrderLots(),Bid,0); }


if (OrderType()==OP_SELL && Bid > iOpen(Symbol(),PERIOD_MN1,0)+otstup*Point) {
OrderClose(OrderTicket(),OrderLots(),Ask,0); } }


if (OrdersTotal()==0) {
if (Bid > iOpen(Symbol(),PERIOD_MN1,0)+otstup*Point) OrderSend (Symbol(), OP_BUY, lot, Ask, 0, 0, 0);
if (Bid < iOpen(Symbol(),PERIOD_MN1,0)-otstup*Point) OrderSend (Symbol(), OP_SELL, lot, Bid, 0, 0, 0); }
Глянь в мой шаблон как прибіль считается и ордера. Может легче станет.
Вложения:
Тип файла: mq4 Shabl (9).mq4 (18.8 Кб, 5 просмотров)
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Viko2000 (08.05.2015)
Старый 01.10.2013, 19:35   #1725 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
К сожалению ничего не понятно. Я только учусь программированию, пока еще плохо читаю другие коды, тем более написанные опытными программистами.
Может ты подскажешь, что не так в моем коде ? ты опытный программист, а мой код очень простой, тебе в нем увидеть ошибку легко.
А ? (Я кстати твои уроки по MQL4 читал, нового много узнавал)
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.10.2013, 20:37   #1726 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от gzh Посмотреть сообщение
К сожалению ничего не понятно. Я только учусь программированию, пока еще плохо читаю другие коды, тем более написанные опытными программистами.
Может ты подскажешь, что не так в моем коде ? ты опытный программист, а мой код очень простой, тебе в нем увидеть ошибку легко.
А ? (Я кстати твои уроки по MQL4 читал, нового много узнавал)
if (OrdersTotal()==0) {
if (Bid > iOpen(Symbol(),PERIOD_MN1,0)+otstup*Point) OrderSend (Symbol(), OP_BUY, lot, Ask, 0, 0, 0);
if (Bid < iOpen(Symbol(),PERIOD_MN1,0)-otstup*Point) OrderSend (Symbol(), OP_SELL, lot, Bid, 0, 0, 0); }
Если это единсвенный блок открытия ордеров, то я не понимаю где ошибка.
if(OrdersTotal()==0)
должно действоать безотказно.
Скорее всего ордера после открытия сразу закрываются.
Искать где ошибка не буду так как это тебе опыта не прибавит.
Поэтапно напиши что ты делаешь и для чего.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.10.2013, 21:23   #1727 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
Да, по моему ордера открываются и сразу закрываются.

/*здесь я делаю переворот, т.е. если открыт Бай и сигнал приходит на Селл,тогда закрываю Бай открываю Селл */
for (int p=OrdersTotal()-1; p>=0; p--) {
OrderSelect(p,SELECT_BY_POS,MODE_TRADES);

if (OrderType()==OP_BUY && Bid < iOpen(Symbol(),PERIOD_MN1,0)-otstup*Point) {
OrderClose(OrderTicket(),OrderLots(),Bid,0); }

if (OrderType()==OP_SELL && Bid > iOpen(Symbol(),PERIOD_MN1,0)+otstup*Point) {
OrderClose(OrderTicket(),OrderLots(),Ask,0); } }

//------------------------------------------------------------------------------------

//здесь собираю информацию о всех убыточных ордерах (закрытых)
for (int s=OrdersHistoryTotal()-1; s>=0; s--) {
if (OrderSelect (s,SELECT_BY_POS, MODE_HISTORY))

if (OrderProfit() < 0) ubytok += OrderProfit(); }
//----------------------------------------------------------------------------------------

//здесь происходит закрытие, если ордер окупил все предыдущие убытки и плюс заработал некоторый профит.

for (int t=0; t<OrdersTotal(); t++) {
if (OrderSelect (t, SELECT_BY_POS, MODE_TRADES)) profit = OrderProfit();

if (profit >= ubytok + Nado_profit) {
if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(), Bid,0);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(), Ask,0); }}
//----------------------------------------------------------------------------------------

//здесь я открываю ордера
if (OrdersTotal()==0) {
if (Bid > iOpen(Symbol(),PERIOD_MN1,0)+otstup*Point) OrderSend (Symbol(), OP_BUY, lot, Ask, 0, 0, 0);
if (Bid < iOpen(Symbol(),PERIOD_MN1,0)-otstup*Point) OrderSend (Symbol(), OP_SELL, lot, Bid, 0, 0, 0); }
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.10.2013, 21:40   #1728 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от gzh Посмотреть сообщение
Да, по моему ордера открываются и сразу закрываются.

/*здесь я делаю переворот, т.е. если открыт Бай и сигнал приходит на Селл,тогда закрываю Бай открываю Селл */
for (int p=OrdersTotal()-1; p>=0; p--) {
OrderSelect(p,SELECT_BY_POS,MODE_TRADES);

if (OrderType()==OP_BUY && Bid < iOpen(Symbol(),PERIOD_MN1,0)-otstup*Point) {
OrderClose(OrderTicket(),OrderLots(),Bid,0); }

if (OrderType()==OP_SELL && Bid > iOpen(Symbol(),PERIOD_MN1,0)+otstup*Point) {
OrderClose(OrderTicket(),OrderLots(),Ask,0); } }

//------------------------------------------------------------------------------------

//здесь собираю информацию о всех убыточных ордерах (закрытых)
for (int s=OrdersHistoryTotal()-1; s>=0; s--) {
if (OrderSelect (s,SELECT_BY_POS, MODE_HISTORY))

if (OrderProfit() < 0) ubytok += OrderProfit(); }
//----------------------------------------------------------------------------------------

//здесь происходит закрытие, если ордер окупил все предыдущие убытки и плюс заработал некоторый профит.

for (int t=0; t<OrdersTotal(); t++) {
if (OrderSelect (t, SELECT_BY_POS, MODE_TRADES)) profit = OrderProfit();

if (profit >= ubytok + Nado_profit) {
if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(), Bid,0);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(), Ask,0); }}
//----------------------------------------------------------------------------------------

//здесь я открываю ордера
if (OrdersTotal()==0) {
if (Bid > iOpen(Symbol(),PERIOD_MN1,0)+otstup*Point) OrderSend (Symbol(), OP_BUY, lot, Ask, 0, 0, 0);
if (Bid < iOpen(Symbol(),PERIOD_MN1,0)-otstup*Point) OrderSend (Symbol(), OP_SELL, lot, Bid, 0, 0, 0); }
PHP код:
/*здесь я делаю переворот, т.е. если открыт Бай и сигнал приходит на Селл,тогда закрываю Бай открываю Селл */
for (int p=OrdersTotal()-1p>=0p--) {
OrderSelect(p,SELECT_BY_POS,MODE_TRADES);

if (
OrderType()==OP_BUY && Bid iOpen(Symbol(),PERIOD_MN1,0)-otstup*Point) {
OrderClose(OrderTicket(),OrderLots(),Bid,0); }

if (
OrderType()==OP_SELL && Bid iOpen(Symbol(),PERIOD_MN1,0)+otstup*Point) {
OrderClose(OrderTicket(),OrderLots(),Ask,0); } 
break;} 
брейк надо.
И если после иф выполняется одно действие то кадратных скобок не надо.
Теперь бери по очереди каждый блок и смотри правильно ли он работает.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 01.10.2013, 23:55   #1729 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от gzh Посмотреть сообщение
К сожалению ничего не понятно. Я только учусь программированию, пока еще плохо читаю другие коды, тем более написанные опытными программистами.
Может ты подскажешь, что не так в моем коде ? ты опытный программист, а мой код очень простой, тебе в нем увидеть ошибку легко.
А ? (Я кстати твои уроки по MQL4 читал, нового много узнавал)

А ещё легче научится уважать более опытных программистов и красиво оформлять свои вопросы. Я лично и смотреть не буду в коды, которые задающий вопрос поленился запихнуть в BB-код.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.10.2013, 08:07   #1730 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
Я не знаю как вставить ВВ-код. Лень тут ни причем, и Уважение тоже!
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.10.2013, 08:18   #1731 (permalink)
Прохожий
 
Аватар для rusk
 
Регистрация: 02.10.2013
Сообщений: 1
Репутация: 1
rusk
Сказал(а) спасибо: 30
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 2
Извините, что вмешиваюсь в разговор уважаемых профи.
Я новичок, и моя проблема, наверное, насмешит Вас. Может, подскажете выход из ситуации?
Пытаюсь наладить советник. Взял в интернете текст готового советника - Avalanche (т.е."Лавина"). Думаю, о нем что-то знаете.
Запустил у себя (МТ4)- не идет. Отладка привела к парадоксу:

В программе есть обращение к OrderSend(). Компилятор ошибок не выдают. При вычислении - сообщение ошибка 130. Т.е. проблемы в неправильном выставлении S/L и T/P. Поставил в фактические параметры при вызове OrderSen() вместо S/L и T/P нули. Т.е. от стоплосов и тейкпрофитов отказался. Однако ошибка 130 остается!!!
Других обращений к функциям с возможной ошибкой 130 (например, OrderModify()) нет. Трассировка показывает, что управление доходит до обращения к OrderSen(), получает ticket=-1 и выдает сообщение 130.
Что все это может означать? Буду благодарен за оценку ситуации
rusk вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.10.2013, 08:41   #1732 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 830
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 844 раз(а) в 555 сообщениях
Поинты: 1310
Цитата:
Я не знаю как вставить ВВ-код. Лень тут ни причем, и Уважение тоже!
Есть инструкция по пользованию форумом, раз не прочитал - значит лень!
Нажми на кнопочку "php" или напиши PHP в квадратных скобках, вставь код, затем напиши /PHP тоже в квадратных скобках типа так:

[РНР]КОД здесь[/РНР]
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (02.10.2013)
Старый 02.10.2013, 08:58   #1733 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
PHP код:
 for (int p=OrdersTotal()-1p>=0p--) {
     
OrderSelect(p,SELECT_BY_POS,MODE_TRADES);

if (
OrderType()==OP_BUY && Bid iOpen(Symbol(),PERIOD_MN1,0)-otstup*PointOrderClose(OrderTicket(),OrderLots(),Bid,0); 
    
if (
OrderType()==OP_SELL && Bid iOpen(Symbol(),PERIOD_MN1,0)+otstup*PointOrderClose(OrderTicket(),OrderLots(),Ask,0); }  
    
    for (
int s=OrdersHistoryTotal()-1s>=0s--) {
     if (
OrderSelect (s,SELECT_BY_POSMODE_HISTORY))

     if (
OrderProfit() < 0ubytok += OrderProfit(); } 

     
          
     for (
int t=0t<OrdersTotal(); t++) {
      if (
OrderSelect (tSELECT_BY_POSMODE_TRADES)) profit OrderProfit(); 

   if (
profit >= ubytok Nado_profit) {
   if (
OrderType()==OP_BUYOrderClose(OrderTicket(),OrderLots(), Bid,0);
   if (
OrderType()==OP_SELLOrderClose(OrderTicket(),OrderLots(), Ask,0); }} 
    
    
    if (
OrdersTotal()==0) {
    if (
Bid iOpen(Symbol(),PERIOD_MN1,0)+otstup*PointOrderSend (Symbol(), OP_BUYlotAsk000);
    if (
Bid iOpen(Symbol(),PERIOD_MN1,0)-otstup*PointOrderSend (Symbol(), OP_SELLlotBid000); } 
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.10.2013, 09:05   #1734 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
Во)) получилось) красиво выглядит по сравнению с тем, что писал раньше. Спасибо, что подсказал как пользоваться. Ты вчера говорил, что сегодня глянешь, что не так в коде.
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.10.2013, 09:28   #1735 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 830
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 844 раз(а) в 555 сообщениях
Поинты: 1310
А чё не работает-то, собственно? Подробнее, плз, а то неясно, чего искать. Или что в логах пишет, к примеру?
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 02.10.2013, 09:54   #1736 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
Проблемы две.
1. Советник открывает ордер и почти сразу закрывает его.
вот пример:
Акция intel

ордер лот цена прибыль баланс
38 2013.09.04 16:32 close 19 1.00 22.41 0.00 0.00 -5.12 10077.15
39 2013.09.04 16:32 buy 20 1.00 22.44 0.00 0.00 10077.15
40 2013.09.04 16:32 close 20 1.00 22.44 0.00 0.00 -1.12 10076.03
41 2013.09.04 16:32 buy 21 1.00 22.47 0.00 0.00 10076.03
42 2013.09.04 16:33 close 21 1.00 22.43 0.00 0.00 -5.12 10070.91
43 2013.09.04 16:33 buy 22 1.00 22.46 0.00 0.00 10070.91
44 2013.09.04 16:33 close 22 1.00 22.44 0.00 0.00 -3.12 10067.79
45 2013.09.04 16:33 buy 23 1.00 22.47 0.00 0.00 10067.79
46 2013.09.04 16:33 close 23 1.00 22.43 0.00 0.00 -5.12 10062.67
47 2013.09.04 16:33 buy 24 1.00 22.46 0.00 0.00 10062.67
48 2013.09.04 16:33 close 24 1.00 22.42 0.00 0.00 -5.12 10057.55
49 2013.09.04 16:33 buy 25 1.00 22.45 0.00 0.00 10057.55
50 2013.09.04 16:34 close 25 1.00 22.41 0.00 0.00 -5.12 10052.43
51 2013.09.04 16:34 buy 26 1.00 22.44 0.00 0.00 10052.43
52 2013.09.04 16:34 close 26 1.00 22.40 0.00 0.00 -5.12 10047.31
53 2013.09.04 16:34 buy 27 1.00 22.43 0.00 0.00 10047.31
54 2013.09.04 16:34 close 27 1.00 22.39 0.00 0.00 -5.12 10042.19
55 2013.09.04 16:40 buy 28 1.00 22.43 0.00 0.00 10042.19
56 2013.09.04 16:40 close 28 1.00 22.39 0.00 0.00 -5.12 10037.07

2проблема: ведь ордер должен закрыть только тогда, когда он окупит все убытки и заработает профит.
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.10.2013, 09:57   #1737 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
Я извиняюсь, что так криво получилось сообщение, я все ровнял, а оно вон как все равно.
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.10.2013, 10:03   #1738 (permalink)
gzh
Интересующийся
 
Аватар для gzh
 
Регистрация: 11.12.2012
Сообщений: 47
Репутация: 2
gzh
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Поинты: 64
Если по порядку, с этой частью все норм!
PHP код:
  for (int p=OrdersTotal()-1p>=0p--) {
     
OrderSelect(p,SELECT_BY_POS,MODE_TRADES);

if (
OrderType()==OP_BUY && Bid iOpen(Symbol(),PERIOD_MN1,0)-otstup*PointOrderClose(OrderTicket(),OrderLots(),Bid,0); 
    
if (
OrderType()==OP_SELL && Bid iOpen(Symbol(),PERIOD_MN1,0)+otstup*PointOrderClose(OrderTicket(),OrderLots(),Ask,0); } 

if (
OrdersTotal()==0) {
    if (
Bid iOpen(Symbol(),PERIOD_MN1,0)+otstup*PointOrderSend (Symbol(), OP_BUYlotAsk000);
    if (
Bid iOpen(Symbol(),PERIOD_MN1,0)-otstup*PointOrderSend (Symbol(), OP_SELLlotBid000); } 
gzh вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.10.2013, 10:17   #1739 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,010
Репутация: 830
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 844 раз(а) в 555 сообщениях
Поинты: 1310
Тут кажись пена:
PHP код:
if (profit >= ubytok Nado_profit) { 
убыток-то у нас отрицательное число, профит - положительное
Т.е. так, видимо надо:
PHP код:
if (profit >= Nado_profit-ubytok) { 
Типа, профит покрывает убыток на величину Nado_profit
Раз закрывает, значит, условие сразу же выполняется. Что ж ты на калькуляторе условие не мог проверить?
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (02.10.2013)
Старый 02.10.2013, 10:30   #1740 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от rusk Посмотреть сообщение
Извините, что вмешиваюсь в разговор уважаемых профи.
Я новичок, и моя проблема, наверное, насмешит Вас. Может, подскажете выход из ситуации?
Пытаюсь наладить советник. Взял в интернете текст готового советника - Avalanche (т.е."Лавина"). Думаю, о нем что-то знаете.
Запустил у себя (МТ4)- не идет. Отладка привела к парадоксу:

В программе есть обращение к OrderSend(). Компилятор ошибок не выдают. При вычислении - сообщение ошибка 130. Т.е. проблемы в неправильном выставлении S/L и T/P. Поставил в фактические параметры при вызове OrderSen() вместо S/L и T/P нули. Т.е. от стоплосов и тейкпрофитов отказался. Однако ошибка 130 остается!!!
Других обращений к функциям с возможной ошибкой 130 (например, OrderModify()) нет. Трассировка показывает, что управление доходит до обращения к OrderSen(), получает ticket=-1 и выдает сообщение 130.
Что все это может означать? Буду благодарен за оценку ситуации
130 ошибка это ещё не верная цена для отложек.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 06:54. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO