Ответ
 
Опции темы
Старый 02.01.2012, 11:18   #41 (permalink)
Новичок форума
 
Аватар для ivan1234
 
Регистрация: 23.07.2010
Сообщений: 32
Репутация: 11
ivan1234
Сказал(а) спасибо: 21
Поблагодарили 10 раз(а) в 6 сообщениях
Поинты: 6
Сообщение от Lender Посмотреть сообщение
ничего не понятно, с виду 10+0.01 = 10.01, а у тебя аж 20...

может тебе нужно clossprofit = clossprofit*lot ?
тогда clossprofit будет увеличиваться пропорционально лоту
mne nado shtob gogda lot=0.01 clossprofit=10, lot=0.02 clossprofit=20...
lot=0.1 clossprofit=100. kakto tak
ivan1234 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.01.2012, 11:18   #42 (permalink)
Активный участник
 
Аватар для Lender
 
Регистрация: 19.07.2011
Сообщений: 56
Репутация: 75
Lender
Сказал(а) спасибо: 9
Поблагодарили 74 раз(а) в 35 сообщениях
Поинты: 6
Отправить сообщение для Lender с помощью Skype™
Сообщение от lexun Посмотреть сообщение
Здравствуйте. Хотел бы узнать.
double massiv1[];
...
int start()
{
massiv1[1]=2;
Alert(massiv1[1]);
...

Выводит 0.
Вообщем проблема в том что не могу вывести значения массивов.
Даже если будет:
int massiv1[];
string a;
...
int start()
{
massiv1[1]=2;
a=massiv[1];
Alert(a);
...
один хрен вылезет 0. Почему и как лечить ся?
double massiv1[]; // <-- создаем ссылку на область памяти, если размер не задан, то и памяти под массив не выделяется
// нужно сделать так:
int size = 10;
ArrayResize(massiv1, size); // выделяем нужное кол-во памяти, и устанавливаем на ее ссылку(задаем размер нашего массива)

massiv1[1]=2;
Alert(massiv1[1]); // вуаля, печатает то что нужно

//----------------------------------------------------------------
// в следуюжем примере

int massiv1[];
string a;

...
a=massiv[1]; // не корректно записывать в string int
// нужно так
a = DoubleToStr( massiv[1, 0 )

Последний раз редактировалось Lender; 02.01.2012 в 11:24.
Lender вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.01.2012, 11:28   #43 (permalink)
Активный участник
 
Аватар для Lender
 
Регистрация: 19.07.2011
Сообщений: 56
Репутация: 75
Lender
Сказал(а) спасибо: 9
Поблагодарили 74 раз(а) в 35 сообщениях
Поинты: 6
Отправить сообщение для Lender с помощью Skype™
Сообщение от ivan1234 Посмотреть сообщение
mne nado shtob gogda lot=0.01 clossprofit=10, lot=0.02 clossprofit=20...
lot=0.1 clossprofit=100. kakto tak
PHP код:
double koef 1000// в сколько раз увеличивать лот
double lot 0.01
double clossprofit 
lot koef // 0.01 * 1000 = 10 ... 
Lender вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
ivan1234 (02.01.2012)
Старый 02.01.2012, 11:55   #44 (permalink)
Новичок форума
 
Аватар для ivan1234
 
Регистрация: 23.07.2010
Сообщений: 32
Репутация: 11
ivan1234
Сказал(а) спасибо: 21
Поблагодарили 10 раз(а) в 6 сообщениях
Поинты: 6

По умолчанию help


Сообщение от Lender Посмотреть сообщение
PHP код:
double koef 1000// в сколько раз увеличивать лот
double lot 0.01
double clossprofit 
lot koef // 0.01 * 1000 = 10 ... 
ne moglibi vi vstaviti v sov, ato u menea nicevo ne poluciaetsa
Вложения:
Тип файла: mq4 cm_EA_TrailingLimitOrders+1,4(1).mq4 (13.2 Кб, 40 просмотров)
ivan1234 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 02.01.2012, 16:30   #45 (permalink)
Активный участник
 
Аватар для lexun
 
Регистрация: 12.12.2010
Сообщений: 106
Репутация: 70
lexun
Сказал(а) спасибо: 80
Поблагодарили 69 раз(а) в 29 сообщениях
Поинты: 0
Lender, спасибо за ответ. Сейчас пока не могу опробовать, потом сделаю, только вот опять вопросы.
Если у меня нельзя сначалв узнать размерность массива т.е. он динамический, как тогда.
Вроде как не пробовал в mql помоему у меня пишет что нет таких команд как IntToStr, ну и как думаю что и DoubleToStr.
И еще: как нормально вывести дату в Alert. Если просто выводит то как я понимаю вылезет количество секунд ...,
команда MessageBox вроде как обрабатывается нормально, но почему то ничего не выводит, должна ли, или ее уже вывели из работы. Огромное спасибо
lexun вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 03.01.2012, 13:33   #46 (permalink)
Активный участник
 
Аватар для Lender
 
Регистрация: 19.07.2011
Сообщений: 56
Репутация: 75
Lender
Сказал(а) спасибо: 9
Поблагодарили 74 раз(а) в 35 сообщениях
Поинты: 6
Отправить сообщение для Lender с помощью Skype™
Сообщение от lexun Посмотреть сообщение
Lender, спасибо за ответ. Сейчас пока не могу опробовать, потом сделаю, только вот опять вопросы.
Если у меня нельзя сначалв узнать размерность массива т.е. он динамический, как тогда.
Вроде как не пробовал в mql помоему у меня пишет что нет таких команд как IntToStr, ну и как думаю что и DoubleToStr.
И еще: как нормально вывести дату в Alert. Если просто выводит то как я понимаю вылезет количество секунд ...,
команда MessageBox вроде как обрабатывается нормально, но почему то ничего не выводит, должна ли, или ее уже вывели из работы. Огромное спасибо
выделяем память для массива с запасом не без фанатизма

IntToStr у меня тоже нет а DoubleToStr есть

в MessageBox(TimeCurrent()) - не работает, так как требуется параметер string а не datetime
юзаем TimeToStr() для отображения времени в виде строки

читаем хелп:
Цитата:
void Alert( ...)
Отображает диалоговое окно, содержащие пользовательские данные. Параметры могут быть любого типа. Количество параметров не может превышать 64.

Массивы нельзя передавать в функцию Alert(). Массивы должны выводиться поэлементно.

Данные типа double выводятся с 4 десятичными цифрами после точки. Для вывода чисел с большей точностью используйте функцию DoubleToStr().
Данные типы bool, datetime и color будут выведены как числа.
Чтобы вывести данные типа datetime в виде строки, необходимо использовать функцию TimeToStr().

Для разделения выводимой информации на несколько строк можно использовать символ перевода строки "\n" либо "\r\n".
См. также функции Comment() и Print().
Параметры:
... - Любые значения, разделенные запятыми.

Пример:
if(Close[0]>SignalLevel)
Alert("Price ", Close[0]," is coming!!!");

Последний раз редактировалось Lender; 03.01.2012 в 13:39.
Lender вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
lexun (03.01.2012), SlavaR (02.10.2012)
Старый 11.01.2012, 19:45   #47 (permalink)
Прохожий
 
Аватар для Aleh#
 
Регистрация: 08.01.2012
Сообщений: 2
Репутация: 1
Aleh#
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 0
Прошу прощение ,что не совсем по теме,может есть здесь специ которые могут переделать мои советник из mq4 в джава.(под дуаскопи ,Jforex).
Aleh# вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 16.01.2012, 13:19   #48 (permalink)
Интересующийся
 
Аватар для denss22
 
Регистрация: 16.01.2012
Сообщений: 5
Репутация: 1
denss22
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 0

По умолчанию Вопрос к програмистам. Добавить выбор направления открытия ордеров.


Здравствуйте!!!
Ребята Помогите пожалуйста в решении одного простого (для Вас) вопроса.
В советнике необходимо поставить выбор направления торговли (sell или buy).Т. к. он ставит ордера от балды, потом локом их выводит. После именения его эффективность резко возрастет.
Заранее огромное СПАСИБО!!!
Вложения:
Тип файла: mq4 ShockBar v.1.1.mq4 (26.3 Кб, 50 просмотров)
denss22 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.01.2012, 08:33   #49 (permalink)
Активный участник
 
Аватар для Lender
 
Регистрация: 19.07.2011
Сообщений: 56
Репутация: 75
Lender
Сказал(а) спасибо: 9
Поблагодарили 74 раз(а) в 35 сообщениях
Поинты: 6
Отправить сообщение для Lender с помощью Skype™
при кидании советников на график можно задавать в какую сторону разрешено торговать советникам
Миниатюры:
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 43
Размер:	153.6 Кб
ID:	62090  
Lender вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
denss22 (19.01.2012)
Старый 19.01.2012, 08:44   #50 (permalink)
Интересующийся
 
Аватар для denss22
 
Регистрация: 16.01.2012
Сообщений: 5
Репутация: 1
denss22
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 0
Сообщение от Lender Посмотреть сообщение
при кидании советников на график можно задавать в какую сторону разрешено торговать советникам
Спасибо большое! Разобрался!
Отличный получился советник, когда работает в два направления не дает большой просадки и больше зарабатывает!!!
denss22 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 23.01.2012, 03:39   #51 (permalink)
Интересующийся
 
Аватар для Gek34
 
Регистрация: 12.02.2010
Сообщений: 2
Репутация: 2
Gek34
Сказал(а) спасибо: 11
Поблагодарили 1 раз в 1 сообщении
Поинты: 0

По умолчанию Подскажите неучу


подскажите пожалуйска как задать условие, чтобы при смене цвета индикатора поступала команда на ( открытие ,закрытие) ордера.
индикатор прилагается

octopus_2.ex4
Gek34 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 26.01.2012, 10:29   #52 (permalink)
Интересующийся
 
Аватар для Corey Hate
 
Регистрация: 11.11.2010
Адрес: Белорецк
Сообщений: 8
Репутация: 4
Corey Hate
Сказал(а) спасибо: 7
Поблагодарили 3 раз(а) в 3 сообщениях
Поинты: 0
Здравствуйте! Помогите, пожалуйста, разобраться с кодом.

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

double FrUp,FrDn;
for (int i=3; i<300; i++)
{
FrUp = NormalizeDouble(iFractals(NULL,0,MODE_UPPER,i), Digits);
if (FrUp!=0) {FrUp = FrUp+Delta*Point; if (Ask+STOPLEVEL*Point < FrUp) break;}
FrUp=0;
[свернуть]

Меня интересует "i". Не могу понять, в вышеприведенном коде, описан поиск последнего верхнего фрактала или самого верхнего на всем расстоянии в 300 баров от текущего?
Corey Hate вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 26.01.2012, 19:35   #53 (permalink)
Активный участник
 
Аватар для Lender
 
Регистрация: 19.07.2011
Сообщений: 56
Репутация: 75
Lender
Сказал(а) спасибо: 9
Поблагодарили 74 раз(а) в 35 сообщениях
Поинты: 6
Отправить сообщение для Lender с помощью Skype™
i - целое число которое в цикле перебирается от 3 до 300, (3, 4, 5, ..., 298, 299)

в указанном отрывке мы ищем первый фрактал который выше Ask+STOPLEVEL
Lender вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Corey Hate (31.01.2012)
Старый 28.01.2012, 13:54   #54 (permalink)
Новичок форума
 
Аватар для anonimmmmm
 
Регистрация: 11.06.2011
Сообщений: 119
Репутация: 9
anonimmmmm
Сказал(а) спасибо: 4
Поблагодарили 8 раз(а) в 5 сообщениях
Поинты: 4

По умолчанию Помогите с безубытком


Привет. Делаю иланоподобный сов, но не могу написать функцию для расчета безубытка. Например есть серия ордеров buy, открытых через 20 пунктов одинаковыми или разными лотами. Где нашел это считается как (сумма цен открыия * лот) деленная на сумму лотов. Но это же неправильно.
anonimmmmm вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.01.2012, 09:25   #55 (permalink)
Активный участник
 
Аватар для Energetik777
 
Регистрация: 17.07.2011
Сообщений: 70
Репутация: 40
Energetik777
Сказал(а) спасибо: 23
Поблагодарили 39 раз(а) в 26 сообщениях
Поинты: 6
Здравствуйте. Подскажите пожалуйста как правильно составить функцию поиска наибольшей цены открытия ордера среди открытых ордеров?
У меня получился такой код, но он не дает нужного результата. Заранее спасибо.

void Max_cena_buy(string sy="", int op=-1, int mn=-1) {
double max_buy=0;
int i, k=OrdersTotal(), np=-1;

if (sy=="0") sy=Symbol();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (OrderType()==OP_BUY)) {
if (OrderMagicNumber()==mn) {
if (max_buy<OrderOpenPrice()) {
max_buy=OrderOpenPrice();
np=i;
}
}
}
}
}
}
Energetik777 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.01.2012, 22:47   #56 (permalink)
Интересующийся
 
Аватар для seb29
 
Регистрация: 21.01.2010
Сообщений: 1
Репутация: 1
seb29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 0

По умолчанию Кто знает ..поможите с добавлением функции в код.


Добрый день.

Как и какую функцию (переменную) надо добавить в код советника, что бы исполнения кода было с задержкой в секундах.? (то есть советник не сразу открывает ордер при появлении своего сигнала, а с задержкой) .

seb29 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 31.01.2012, 21:12   #57 (permalink)
Интересующийся
 
Аватар для PAZITIV
 
Регистрация: 29.01.2012
Сообщений: 5
Репутация: 2
PAZITIV
Сказал(а) спасибо: 2
Поблагодарили 1 раз в 1 сообщении
Поинты: 4

Фундаментальный анализ советник на основе QQEA


в общем, получается идея советника такая: когда красная линия пересекает жёлтую снизу вверх, должен открыться один ордер на Buy (и закрыться на SELL -- если есть), когда красная пересекает жёлтую вверху вниз -- один ордер на Sell (и закрыться Buy -- если есть). Но у меня не получается открыть только один ордер. Ордера открываются , пока выполняется условие -- т.е. на каждом баре. Как открыть только одну сделку

ЗЫ в iCustom костыльно сделано через стринг потому что напрямую через дабл ересь какую то выдавало

код советника

//+------------------------------------------------------------------+
//| QQEA-Advisor.mq4 |
//| Copyright © 2012, PAZITIV |
//| pazitiv.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, PAZITIV"
#property link "pazitiv.net"

//--- input parameters
extern double MaxRisk=1.0;
extern double FixLot = 0.01;
extern double Exponent=2.0;
extern int Magic = 888;

// костыли

extern int TakeProfit=100;
extern int StopLoss=100;




//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int Count=0;
double b0,b1;
int ticket;





// параметры индикатора
int SF = 5; // original 5
int RSI_Period = 14; // original 14
double DARFACTOR = 4.236; //original 4.236

//------------ Параметры из индикатора QQEA -----------------------
// Buffer0 -- красная жирная
string Buffer0 = iCustom(NULL, 0, "QQEA" , SF, RSI_Period, DARFACTOR,0 , 0);
// Buffer1 -- жёлтый пунктир
string Buffer1 = iCustom(NULL, 0, "QQEA" , SF, RSI_Period, DARFACTOR,1 , 0);



b0=StrToDouble(Buffer0);
b1=StrToDouble(Buffer1);


double Lot=GetLot(MaxRisk);


// если лот <0 выводим сообщение об ошибке
if(Lot==0)
{
Alert("Недостаточно средств!");
return(0);
}


if (Lot!=0 && b0>b1) // если лот <> 0 и красная выше жёлтой
{
ticket=NewOrder(OP_BUY,Lot);
if (ExistOrders(Symbol(), 1, 888, 0) == true ) // проверяем наличие ордера sell
{
CloseOrder();
}
}


if (Lot!=0 && b0<b1) // если лот <> 0 и красная выше жёлтой
{
ticket=NewOrder(OP_SELL,Lot);
if (ExistOrders(Symbol(), 0, 888, 0) == true ) // проверяем наличие ордера buy
{
CloseOrder();
}
}





Comment("Red line: ",b0,"Yellow line: ",b1);



return(0);
}







//-------------------------------------------------------------
//расчёт лота

double GetLot(int Risk)
{double Free =AccountFreeMargin();
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
double Step =MarketInfo(Symbol(),MODE_LOTSTEP);
double Lot =MathFloor(Free*Risk/100/One_Lot/Step)*Step;
if(Lot<Min_Lot) Lot=Min_Lot;
if(Lot>Max_Lot) Lot=Max_Lot;
if(Lot*One_Lot>Free) return(0.0);
return(Lot);}


bool ExistOrders(string sy="", int op=-1, int Magic=-1, datetime ot=0)
{
int i, k=OrdersTotal(), ty;

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ty=OrderType();
if (ty>1 && ty<6) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || ty==op)) {
if (Magic<0 || OrderMagicNumber()==Magic) {
if (ot<=OrderOpenTime()) return(True);
}
}
}
}
}
return(False);
}


//открытие нового ордера
int NewOrder(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUY)
{PR=Ask;
if(TakeProfit>0) TP=Ask+TakeProfit*Point;
if(StopLoss>0) SL=Ask-StopLoss*Point;}
if(Cmd==OP_SELL)
{PR=Bid;
if(TakeProfit>0) TP=Bid-TakeProfit*Point;
if(StopLoss>0) SL=Bid+StopLoss*Point;}
int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP," ",0,0,Green);
if(tic<0) Print("Ошибка открытия ордера: " ,GetLastError());
return(tic);}


// закрытие ордера
void CloseOrder()
{double PR=0;
while(!IsTradeAllowed()) Sleep(100);
if(OrderType()==OP_BUY) PR=Bid;
if(OrderType()==OP_SELL) PR=Ask;
if(!OrderClose(OrderTicket(),OrderLots(),PR,3,Red))
Print("Ошибка закрытия ордера: " ,GetLastError());
return;}
[свернуть]

иллюстрация работы

[свернуть]

сам индикатор -- QQEA.mq4


Уважаемые, прошу помощи
PAZITIV вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Pers777 (02.04.2014)
Старый 04.02.2012, 05:44   #58 (permalink)
Интересующийся
 
Аватар для Сергей Александрович
 
Регистрация: 08.12.2011
Сообщений: 6
Репутация: 1
Сергей Александрович
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Поинты: 0
Добрый день!
Подскажите где найти расшифровку кодов (смотри ниже). Хочу уменьшить количество открываемых ордеров и LotExponent, но не могу найти шифр этих кодов:

int gi_96 = 0;
double gd_100 = 0.0;
int gi_108 = 1;
int gi_112 = 2;
int gi_116 = 14;
int gi_120 = 3;
bool gi_124 = FALSE;
bool gi_128 = FALSE;
bool gi_132 = TRUE;
bool gi_136 = TRUE;
bool gi_140 = FALSE;
double gd_unused_144 = 0.0;
Сергей Александрович вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 08.02.2012, 15:04   #59 (permalink)
Элитный участник
 
Аватар для cfifcfif
 
Регистрация: 22.07.2011
Адрес: краснодар
Сообщений: 1,403
Репутация: 1424
cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif cfifcfif
Сказал(а) спасибо: 3,621
Поблагодарили 1,422 раз(а) в 706 сообщениях
Поинты: 22
Отправить сообщение для cfifcfif с помощью Skype™
Ребят у меня такой вопрос может он глупый ещё незнаю, если в журнале выдоёт иногда ошибку повлияет это ли навывод средств заработаные совой хотя в соседней строчке эксперты не одной ошибки.
cfifcfif вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 08.02.2012, 15:07   #60 (permalink)
Местный житель
За призовое место в конкурсе 

 
Аватар для Чико
 
Регистрация: 14.03.2010
Сообщений: 602
Репутация: 284
Чико Чико Чико
Сказал(а) спасибо: 37
Поблагодарили 280 раз(а) в 189 сообщениях
Поинты: 55
Сообщение от cfifcfif Посмотреть сообщение
Ребят у меня такой вопрос может он глупый ещё незнаю, если в журнале выдоёт иногда ошибку повлияет это ли навывод средств заработаные совой хотя в соседней строчке эксперты не одной ошибки.
Не влияет,если сова пашет в пределах регламента по времени удержания ордера и количеству взятых пипсов-у некоторых ДЦ есть ограничения..
Чико на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
cfifcfif (08.02.2012)
Ответ

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


Опции темы

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

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



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


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