Ответ
 
Опции темы
Старый 19.10.2013, 08:17   #1841 (permalink)
Прохожий
 
Аватар для Ivan010
 
Регистрация: 13.05.2013
Сообщений: 1
Репутация: 1
Ivan010
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 4

По умолчанию Помогите пожалуйста со скриптом.


Здравствуйте Дамы и Господа, в программировании я новичок и поэтому прошу помощи в одном из скриптов. Суть скрипта в том чтобы он находил открытые ордера отдельно SELL отдельно BUY и модифицировал их под общий тейк-профит и при срабатывании этого тейк-профита закрывались все ордера одного направления. В этом скрипте почему то не закрываются ордера и модифицируется тейк-профит только последнего ордера. Что в нем может быть не так?:

double Bprice=0;
double Blots=0;
double Bsum=0;
for (int n=0; n<buyk; n++)
{
if (OrderSelect(n,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_BUY)

{
Blots=Blots+OrderLots();
Bsum=Bsum+OrderLots()*OrderOpenPrice();
}



if (Blots!=0) Bprice=Bsum/Blots;
if (Bprice>0 )
Bprice = NormalizeDouble(Bprice+level*Point,Digits);
if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES) == true && OrderType() == OP_BUY && buyk>1)
OrderModify(buy,OrderOpenPrice(),0,Bprice,0,Red);
}

double Sprice=0;
double Slots=0;
double Ssum=0;
for ( int e=0; e<sellk; e++)
{
if (OrderSelect(e,SELECT_BY_POS,MODE_TRADES) && OrderType()==OP_SELL)
{
Slots=Slots+OrderLots();
Ssum=Ssum+OrderLots()*OrderOpenPrice();
}



if (Slots!=0) Sprice=Ssum/Slots;
if (Sprice>0 )


Sprice = NormalizeDouble(Sprice-level*Point,Digits);
if(OrderSelect(e,SELECT_BY_POS,MODE_TRADES) == true && OrderType() == OP_SELL && sellk>1)
OrderModify(sell,OrderOpenPrice(),0,Sprice,0,Red);

}
double sss,bbb;
for (int b=ksb; b>0; b--)

{sss= NormalizeDouble(Bid,Digits);
bbb= NormalizeDouble(Ask,Digits);
if (OrderSelect(b,SELECT_BY_POS,MODE_TRADES )== true && OrderType() == OP_BUY && OrderCloseTime()>0)
OrderClose(OrderTicket(),OrderLots(),bbb,3,Red);}
for (int v=ksb; v>0; v--)
{if (OrderSelect(v,SELECT_BY_POS,MODE_TRADES )== true && OrderType() == OP_SELL && OrderCloseTime()>0)
OrderClose(OrderTicket(),OrderLots(),sss,3,Red);}

Последний раз редактировалось chocolate; 19.10.2013 в 20:11.
Ivan010 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 09:31   #1842 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Есть базовая функция библиотеная функция Init:

Скрытый текст

PHP код:
void fInitBase (string fs_SymbolList,
                
string fs_MagicList,
                
string fs_Delimiter ",")
{
   
bs_ExpertName StringConcatenate (WindowExpertName(), ":  "fGet_NameTF (Period()), "_"Symbol());
   
bs_SymbolList fs_SymbolList;
   
bs_MagicList fs_MagicList;
   
bs_Delimiter fs_Delimiter;
   
bb_RealTrade = (!IsTesting() && !IsOptimization());
   
bb_VirtualTrade = (IsOptimization() || (IsTesting() && !IsVisualMode()));
   if (
bd_SymPoint == 0.0)
       {
bd_SymPoint fGet_Point(Symbol());}
   
fGet_MarketInfo (Symbol(), -1);
   
bd_MAXLOT MarketInfo(Symbol(), MODE_MAXLOT);
   
bd_LOTSTEP MarketInfo(Symbol(), MODE_LOTSTEP);
   
bi_LotPrecision fLotPrecision ();
   
bd_MINLOT MarketInfo(Symbol(), MODE_MINLOT);
   
InitializeArray_STR (bsa_Comment"");
    
//---- Определяем индекс "ошибок" в массиве комментариев (gsa_Comment)
   
bi_IndERR ArraySize (bsa_Comment) - 1;
   
bi_Err GetLastError();
   
//---- Контролируем возможные ошибки
   
fPrint (StringConcatenate ("fInitBase() => "fErrorToString (bi_Err)));

   return;

При запуске эксперта выводится сообщение:
PHP код:
2013.10.20 11:02:57    2013.08.15 00:00  hoz_LoggingToAnywhere@library EURUSD.GI,M5ВниманиеfInitBase() => Ошибка № 0 :: 
[свернуть]

Что это означает? Я только учусь работать с библиотеками, так что опыта в этом не много. Дальше по ходу, если не ставить условие вывода ошибок, если их нет, печатаются соответствующие ИНИТЫ (у меня их несколько) с ошибкой № 0 -1 т.е. - ошибок НЕТ. Но когда Ошибка № 0 что-то я не совсем понимаю, как это воспринимать.

Последний раз редактировалось NSerega; 20.10.2013 в 18:14.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 10:24   #1843 (permalink)
Новичок форума
 
Аватар для Leonup
 
Регистрация: 23.12.2011
Сообщений: 56
Репутация: 5
Leonup
Сказал(а) спасибо: 11
Поблагодарили 4 раз(а) в 4 сообщениях
Поинты: 58

По умолчанию Как правильно применить функцию NewBar() ?


Добрый день!

Есть два условия.
Для покупки:
if ((((Avr - Ask)/Point) >= Dist) && (((Ask - Min)/Point) >= Dist) && (CountBuy() == 0) && (CountSell() == 0))

Для продажи:
if ((((Bid - Avr)/Point) >= Dist) && (((Max - Bid)/Point) >= Dist) && (CountSell() == 0) && (CountBuy() == 0))

Max – уровень сопротивления, Min – уровень поддержки, Avr – середина между уровнями, Dist – минимальное расстояние в пунктах.

При таких условиях открываются сделки в обе стороны, но не всегда при открытии нового бара. Поэтому применяю функцию:

bool NewBar()
{
static datetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}
}

Для покупки:
if ((NewBar() == true) && (((Avr - Ask)/Point) >= Dist) && (((Ask - Min)/Point) >= Dist) && (CountBuy() == 0) && (CountSell() == 0))

Для продажи:
if ((NewBar() == true) && (((Bid - Avr)/Point) >= Dist) && (((Max - Bid)/Point) >= Dist) && (CountSell() == 0) && (CountBuy() == 0))

Но в этом случае сделки открываются ТОЛЬКО на покупку. В логах ошибок никаких нет.

Как правильно применить функцию NewBar() ?
Спасибо.
Leonup вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 10:39   #1844 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Leonup Посмотреть сообщение
Добрый день!

Есть два условия.
...
Как правильно применить функцию NewBar() ?
Спасибо.
Код:
if (NewBar()) {
   if ((((Avr - Ask)/Point) >= Dist) && (((Ask - Min)/Point) >= Dist) && (CountBuy() == 0) && (CountSell() == 0))
   if ((((Bid - Avr)/Point) >= Dist) && (((Max - Bid)/Point) >= Dist) && (CountSell() == 0) && (CountBuy() == 0))
}
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
3 пользователя(ей) сказали cпасибо:
eevviill (20.10.2013), Leonup (20.10.2013), болгарин (20.10.2013)
Старый 20.10.2013, 11:38   #1845 (permalink)
Новичок форума
 
Аватар для Leonup
 
Регистрация: 23.12.2011
Сообщений: 56
Репутация: 5
Leonup
Сказал(а) спасибо: 11
Поблагодарили 4 раз(а) в 4 сообщениях
Поинты: 58
Сообщение от qqmber Посмотреть сообщение
Код:
if (NewBar()) {
   if ((((Avr - Ask)/Point) >= Dist) && (((Ask - Min)/Point) >= Dist) && (CountBuy() == 0) && (CountSell() == 0))
   if ((((Bid - Avr)/Point) >= Dist) && (((Max - Bid)/Point) >= Dist) && (CountSell() == 0) && (CountBuy() == 0))
}
Все заработало. Спасибо!
Leonup вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 12:23   #1846 (permalink)
Прохожий
 
Аватар для болгарин
 
Регистрация: 20.10.2013
Адрес: москва
Сообщений: 1
Репутация: 1
болгарин
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 0
Привет! третий месяц хожу вокруг да окала Nevalyashka_BreakdownLevel. немогу под себя подогнать.Помогите коллеги!
болгарин вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 14:45   #1847 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Ivan010 Посмотреть сообщение
Здравствуйте Дамы и Господа, в программировании я новичок и поэтому прошу помощи в одном из скриптов.
Для получения помощи имеет смысл выкладывать код в тегах [CODE][/CODE] или аттачить файл, если код большой. Код должен сходу компилироваться, если только суть вопроса не в синтаксисе. Иначе шансов нет, тут мало желающих анализировать фрагменты кода, в котором нет даже объявления переменных.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 14:58   #1848 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от hoz Посмотреть сообщение
...
PHP код:
   bi_Err GetLastError();
   
//---- Контролируем возможные ошибки
   
fPrint (StringConcatenate ("fInitBase() => "fErrorToString (bi_Err))); 
...
Но когда Ошибка № 0 что-то я не совсем понимаю, как это воспринимать.
GetLastError() возвращает 0, если ошибок нет. fPrint() твой честно его выдает. А ты что и как хотел?
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (20.10.2013)
Старый 20.10.2013, 15:20   #1849 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от болгарин Посмотреть сообщение
Привет! третий месяц хожу вокруг да окала Nevalyashka_BreakdownLevel. немогу под себя подогнать.Помогите коллеги!
В соседней ветке дорабатывают боты. Тут про язык mql язык чешут.

Последний раз редактировалось qqmber; 20.10.2013 в 15:23.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 15:37   #1850 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от qqmber Посмотреть сообщение
GetLastError() возвращает 0, если ошибок нет. fPrint() твой честно его выдает. А ты что и как хотел?
Наверное, можно еще и ЕrrorDescription(0 напечатать, но в случае с нулем будет "No Error"
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 16:48   #1851 (permalink)
Активный участник
 
Аватар для Conn
 
Регистрация: 30.09.2013
Сообщений: 55
Репутация: 58
Conn
Сказал(а) спасибо: 22
Поблагодарили 57 раз(а) в 17 сообщениях
Поинты: 42
Уважаемые программисты, попробовал сделать индикатор вверху в виде гистограммы (см.рис.1). получилось так что гистограмма на sell отображается иначе чем гистограмма на buy. Скажите пожалуйста в чем проблема и как ее исправить?
Миниатюры:
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 62
Размер:	98.2 Кб
ID:	136837  
Вложения:
Тип файла: mq4 Dynamic zones Polychromatic momentum 3 with bars histo.mq4 (21.9 Кб, 36 просмотров)

Последний раз редактировалось Conn; 20.10.2013 в 16:55.
Conn вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 16:53   #1852 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Conn Посмотреть сообщение
Уважаемые программисты, взгляните пожалуйста на рисунок и скажите в чем проблема и как ее испавить?
Ну ты спросил!
Может, в программе не учитывается Bid и Ask? Например, все работает по Bid, как это делают все индикаторы
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 16:58   #1853 (permalink)
Активный участник
 
Аватар для Conn
 
Регистрация: 30.09.2013
Сообщений: 55
Репутация: 58
Conn
Сказал(а) спасибо: 22
Поблагодарили 57 раз(а) в 17 сообщениях
Поинты: 42
Сообщение от ansol Посмотреть сообщение
Ну ты спросил!
Может, в программе не учитывается Bid и Ask? Например, все работает по Bid, как это делают все индикаторы
Честно говоря не понял, я в языке программирования слабоват, можно по подробнее?
Conn вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 17:03   #1854 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от Conn Посмотреть сообщение
Честно говоря не понял, я в языке программирования слабоват, можно по подробнее?
Ну это я так, с разгону
Bid - цена покупки, именно ей оперируют все индюки и даже часто кривые советники. Между тем есть еще цена Ask - для продажи.
Если у вас на покупку Buy все верно, а на Sell неправильно, то возникает предположение, что не та цена используется. Вот и все.
Пардон, что влез, счас более вумные люди подскажут, но код надо поковырять и спрашивать по MQL4, а не "почему у меня не работает"
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 17:20   #1855 (permalink)
Активный участник
 
Аватар для Conn
 
Регистрация: 30.09.2013
Сообщений: 55
Репутация: 58
Conn
Сказал(а) спасибо: 22
Поблагодарили 57 раз(а) в 17 сообщениях
Поинты: 42
Сообщение от ansol Посмотреть сообщение
Ну это я так, с разгону
Bid - цена покупки, именно ей оперируют все индюки и даже часто кривые советники. Между тем есть еще цена Ask - для продажи.
Если у вас на покупку Buy все верно, а на Sell неправильно, то возникает предположение, что не та цена используется. Вот и все.
Пардон, что влез, счас более вумные люди подскажут, но код надо поковырять и спрашивать по MQL4, а не "почему у меня не работает"
Это трудно обьяснить, просто взгляните на скрин выложенный мною, и сравните два индикатора, сигнал на buy и сигнал на sell, вы увидите разницу. Выкладываю эти индикаторы оригинал версию и в виде гистограммы для сравнение.
Миниатюры:
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 35
Размер:	98.2 Кб
ID:	136847  
Вложения:
Тип файла: mq4 Dynamic zones Polychromatic momentum 3 with bars.mq4 (22.0 Кб, 41 просмотров)
Тип файла: mq4 Dynamic zones Polychromatic momentum 3 with bars histo.mq4 (21.9 Кб, 37 просмотров)
Conn вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
petro_gr81 (07.01.2015)
Старый 20.10.2013, 18:36   #1856 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от qqmber Посмотреть сообщение
GetLastError() возвращает 0, если ошибок нет. fPrint() твой честно его выдает. А ты что и как хотел?
Если ошибки нет, возврает же -1 по ходу, а 0 это типа ошибка - нет ошибки.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 18:39   #1857 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
Сообщение от hoz Посмотреть сообщение
Если ошибки нет, возврает же -1 по ходу, а 0 это типа ошибка - нет ошибки.
Мне лениво спорить и я пропустил ряд ляпов по моим постам ранее, но:
Хелп-то будем читать или будем сочинять ахинею?
Цитата:
int GetLastError( )
Функция возвращает код последней ошибки, после чего значение специальной переменной last_error, в которой хранится код последней ошибки обнуляется. Так что последующий вызов GetLastError() вернет значение 0.
Пример:
int err;
int handle=FileOpen("somefile.dat", FILE_READ|FILE_BIN);
if(handle<1)
{
err=GetLastError();
Print("error(",err,"): ",ErrorDescription(err));
return(0);
}

Какой минус адыныдыныдын?!
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 18:43   #1858 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
В общем, там был косяк, который я уже решил. Задача щяс другая. Есть множество объявленных глобальных переменных в заголовчном файле, часть из которых используется различными библиотеками. Если эту ПАЧКУ объявленных переменных в виде канкретного заголовочного файла помещать в каждую из библиотек это же будет не рационально и больше расход памяти так? Как-то так выходит, что иначе не придумывается...
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.10.2013, 18:46   #1859 (permalink)
Местный знаток
За призовое место в конкурсе 

 
Аватар для ansol
 
Регистрация: 22.04.2010
Сообщений: 2,009
Репутация: 829
ansol - ansol - ansol - ansol - ansol - ansol - ansol -
Сказал(а) спасибо: 236
Поблагодарили 843 раз(а) в 554 сообщениях
Поинты: 1308
У тебю какой-то мрачно-глобальный проект
Обязательно такую кучу библиотек использовать?
MQL4 - довольно убогая реинкарнация языка, она не предусматривает создание суперпуперпроектов.
Может, ну его на хрен?
ansol на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (21.10.2013)
Старый 20.10.2013, 19:45   #1860 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от ansol Посмотреть сообщение
У тебю какой-то мрачно-глобальный проект
Обязательно такую кучу библиотек использовать?
MQL4 - довольно убогая реинкарнация языка, она не предусматривает создание суперпуперпроектов.
Может, ну его на хрен?
Хочу чтоб писалось всё как можно удобнее и гибче, но что-то не хрена не получается. Вот и думаю, нахрен или всё-таки возможно... Хотя пока что возможностей особо не наблюдается, хрень полнейшая выходит.
Все кого я знаю пишут "всё в одном", а мне такой подход не нравится. Совы становятся километровые, вот там точно ну его нахрен. Я уже сыт по горло километровыми совками, где ни конца ни края не видно.
А щяс написал так всё типа компактно, тока не пашет теперь..
Распринтовав я всё увидел где косяки, но как всё структурировать ума не приложу.

На самом деле, я б очень рад был с кем-нить лично обсудить некоторые вещи, т.к. иногда одно голова хорошо, а две бывает лучше.

Последний раз редактировалось hoz; 20.10.2013 в 19:52.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ

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


Опции темы

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

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



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


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