Ответ
 
Опции темы
Старый 18.02.2013, 13:30   #961 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Алекc1234 Посмотреть сообщение
Есть такой код
Код:
for (i=0; i<=OrdersTotal()-1; i++)  
 {     
 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
 { 
 if ( (OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic) ) 
 {
 double fir_op_pr = OrderOpenPrice(); 
  if(ot==OP_BUY) 
  {        
   prof = NormalizeDouble((Bid-fir_op_pr),Digits)/Point; }
  if (ot == OP_SELL)   
   {
   prof = NormalizeDouble((fir_op_pr-Ask),Digits)/Point; } 
  break;
  }
  }
  }
Подскажите, пожалуйста, почему на бай работает всё как надо, а на селл - нет? Дальше код не привожу, потому что будет непонятно всё равно принцип работы - долго объяснять. Но на бай работает правильно!А на селл - нет...
Если я правильно понял ot = OrderType();
Но нигде этого нет. Получается так, что ot = 0 и OP_BUY тоже = 0 в этом случае работает. А OP_SELL = 1 при ot = 0 условие не выполняется, вот и не работает.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (18.02.2013), Алекc1234 (18.02.2013)
Старый 18.02.2013, 13:30   #962 (permalink)
 
Аватар для strannik-ps
 
Регистрация: 05.01.2012
Сообщений: 1,151
Репутация: 7843
strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps
Сказал(а) спасибо: 3,958
Поблагодарили 7,799 раз(а) в 1,882 сообщениях
Поинты: 82
А условия что за секрет? проще на практики пояснить чем на пальцах.
strannik-ps вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 13:34   #963 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от AlexeyVik Посмотреть сообщение
Если я правильно понял ot = OrderType();
Но нигде этого нет. Получается так, что ot = 0 и OP_BUY тоже = 0 в этом случае работает. А OP_SELL = 1 при ot = 0 условие не выполняется, вот и не работает.
Да, я забыл, до цикла я пишу, что ot = OrderType();

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 13:35   #964 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от eevviill Посмотреть сообщение
1)Вместо ot напиши OrderType()
2)Если после if() надо выполнить одно действие, то квадратных скобок не надо.
Спасибо, я так и сделал, но не помогло...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 13:45   #965 (permalink)
Почётный гражданин
 
Аватар для DiZin
 
Регистрация: 06.10.2009
Адрес: то тут, то там
Сообщений: 734
Репутация: 465
DiZin - DiZin - DiZin - DiZin - DiZin -
Сказал(а) спасибо: 132
Поблагодарили 460 раз(а) в 240 сообщениях
Поинты: 279
Сообщение от Алекc1234 Посмотреть сообщение
Да, я забыл, до цикла я пишу, что ot = OrderType();
а почему не внутри цикла?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Добрею прямо на глазах
DiZin вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (18.02.2013)
Старый 18.02.2013, 13:50   #966 (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™
Сообщение от Алекc1234 Посмотреть сообщение
Спасибо, я так и сделал, но не помогло...
Внутри цыкла написал OrderType() и не помогло?
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
strannik-ps (18.02.2013), Алекc1234 (18.02.2013)
Старый 18.02.2013, 13:57   #967 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от eevviill Посмотреть сообщение
Внутри цыкла написал OrderType() и не помогло?
Нет, eevviill, не помогло...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 13:58   #968 (permalink)
 
Аватар для strannik-ps
 
Регистрация: 05.01.2012
Сообщений: 1,151
Репутация: 7843
strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps
Сказал(а) спасибо: 3,958
Поблагодарили 7,799 раз(а) в 1,882 сообщениях
Поинты: 82
В программе логика правильно одо может быть не то правильность открытия 2 пипса уже проблема на бай задумайтесь
strannik-ps вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (18.02.2013)
Старый 18.02.2013, 14:15   #969 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от strannik-ps Посмотреть сообщение
В программе логика правильно одо может быть не то правильность открытия 2 пипса уже проблема на бай задумайтесь
Ставится отложенный стоп ордер - при его открытии и происходит расчёт в этом куске кода...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 15:12   #970 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Алекc1234 Посмотреть сообщение
Спасибо, я так и сделал, но не помогло...
Не просто внутри цикла надо, а обязательно после if(OrderSelect(i,
Внутри этого условия.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (18.02.2013), Алекc1234 (18.02.2013)
Старый 18.02.2013, 15:13   #971 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от AlexeyVik Посмотреть сообщение
Не просто внутри цикла надо, а обязательно после if(OrderSelect(i,
Да, так и делаю, но опять же на бай всё хорошо, а на селл - работает по другому...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 15:15   #972 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Алекc1234 Посмотреть сообщение
Да, так и делаю, но опять же на бай всё хорошо, а на селл - работает по другому...
Ну покажи как это у тебя сейчас написано.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 15:21   #973 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от AlexeyVik Посмотреть сообщение
Ну покажи как это у тебя сейчас написано.
Вот так сейчас написал
PHP код:
for (i=0i<=OrdersTotal()-1i++)  
 {     
 if(
OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
 { 
 if ( (
OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic) ) 
 {
 
int ot OrderType();
 
double fir_op_pr OrderOpenPrice(); 
  if(
ot==OP_BUY)      prof NormalizeDouble((Bid-fir_op_pr),Digits)/Point
  if (
ot == OP_SELL)   prof NormalizeDouble((fir_op_pr-Ask),Digits)/Point;    
 
breek;
 }
 }
 } 
Вместо ot = OrderType(); писал и if(OrderType()==OP_BUY)
if(OrderType()==OP_SELL)
все равно не то

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе

Последний раз редактировалось Алекc1234; 18.02.2013 в 15:24.
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 15:35   #974 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Извини не сразу заменил. Там совершенно не нужен break;
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекc1234 (18.02.2013)
Старый 18.02.2013, 15:41   #975 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от AlexeyVik Посмотреть сообщение
Извини не сразу заменил. Там совершенно не нужен break;
Убрал break - то же самое

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 15:55   #976 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Алекc1234 Посмотреть сообщение
Убрал break - то же самое
Ну наверное ты хочешь увидеть не то что там написал...
Прокомментируй каждую строку. Может тогда разберёшься что должно там получиться.
И ещё одно замечание: Не надо объявлять переменные в теле цикла.
int ot = OrderType();
double fir_op_pr = OrderOpenPrice();

ДО цикла int ot; double fir_op_pr;
А в теле цикла только присваивание им значений.
ot = OrderType();
fir_op_pr = OrderOpenPrice();
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (18.02.2013), Алекc1234 (18.02.2013)
Старый 18.02.2013, 19:01   #977 (permalink)
 
Аватар для strannik-ps
 
Регистрация: 05.01.2012
Сообщений: 1,151
Репутация: 7843
strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps strannik-ps
Сказал(а) спасибо: 3,958
Поблагодарили 7,799 раз(а) в 1,882 сообщениях
Поинты: 82
Сообщение от Алекc1234 Посмотреть сообщение
Вот так сейчас написал
PHP код:
for (i=0i<=OrdersTotal()-1i++)  
 {     
 if(
OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
 { 
 if ( (
OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic) ) 
 {
 
int ot OrderType();
 
double fir_op_pr OrderOpenPrice(); 
  if(
ot==OP_BUY)      prof NormalizeDouble((Bid-fir_op_pr),Digits)/Point
  if (
ot == OP_SELL)   prof NormalizeDouble((fir_op_pr-Ask),Digits)/Point;    
 
breek;
 }
 }
 } 
Вместо ot = OrderType(); писал и if(OrderType()==OP_BUY)
if(OrderType()==OP_SELL)
все равно не то
Давайте подумаем заново а не проще ли сделать так?\
1 Стоп ордер
//+------------------------------------------------------------------+
void BuyStop1()
{
double ldStop=0, ldTake=0;
double pAsk=Ask+Delta*point;
//----
if (!ExistOrder(1)) {
if (StopLoss!=0) ldStop=pAsk-StopLoss*point;
if (TakeProfit!=0) ldTake=pAsk+TakeProfit*point;
SetOrder(OP_BUYSTOP, pAsk, ldStop, ldTake,1);
}
}
//+------------------------------------------------------------------+
void SellStop1()
{
double ldStop=0, ldTake=0;
double pBid=Bid-Delta*point;
//----
if (!ExistOrder(2)) {
if (StopLoss!=0) ldStop=pBid+StopLoss*point;
if (TakeProfit!=0) ldTake=pBid-TakeProfit*point;
SetOrder(OP_SELLSTOP, pBid, ldStop, ldTake,2);
}
}
//+------------------------------------------------------------------+
bool ExistOrder(int mn) {
bool Exist=False;
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic+mn) {
Exist=True; break;
}
}
}
return(Exist);
}
//+------------------------------------------------------------------+
void SetOrder(int op, double pp, double ldStop, double ldTake, int mn) {
color clOpen;
if (op==OP_BUYSTOP) clOpen=Blue;
else clOpen=Red;
OrderSend(Symbol(),op,Lots,pp,0,ldStop,ldTake,Comm entOrder,Magic+mn,0,clOpen);
Sleep(10000);
RefreshRates();
}
//+------------------------------------------------------------------+
самый простой лучшего прогера Кима! и Не будет запарки
strannik-ps вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Алекc1234 (18.02.2013)
Старый 18.02.2013, 19:21   #978 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
strannik-ps, это конечно, хорошо, только у меня идёт подсчёт профита в пунктах и исходя из этого происходит закрытие ордера...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 20:13   #979 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3646
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,650 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Алекc1234 Посмотреть сообщение
strannik-ps, это конечно, хорошо, только у меня идёт подсчёт профита в пунктах и исходя из этого происходит закрытие ордера...
А скажи мне. Одновременно могут быть открыты и бай и сел?
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 18.02.2013, 20:15   #980 (permalink)
Местный житель
 
Аватар для Алекc1234
 
Регистрация: 24.03.2011
Сообщений: 697
Репутация: 276
Алекc1234 Алекc1234 Алекc1234
Сказал(а) спасибо: 391
Поблагодарили 276 раз(а) в 176 сообщениях
Поинты: 0
Сообщение от AlexeyVik Посмотреть сообщение
А скажи мне. Одновременно могут быть открыты и бай и сел?
Такое у меня бывает, но редко, а я это не учитываю - вижу только тогда ошибку когда открыто одно направление - или только бай или только селл...Вернее, на бай ошибки то и нету, только на селл...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Мой тейкпрофит-магнит, а стоплосс-паразит
Тебе повезло,ты не такой как все
Ты работаешь на форексе

Последний раз редактировалось Алекc1234; 18.02.2013 в 20:18.
Алекc1234 на форуме   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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