Ваши вопросы по языку MQL4

eevviill

Заблокирован
Спасибо большое. А не подскажете, как можно сделать, чтобы при Close учитывалось бы несколько свечей. То есть скажем i равнялось бы от первой свечи до седьмой.

Точно не понял что вы хотите, но думаю так.
PHP:
double prof[];

for(int i=1;i<8;i++)
{
prof[i]= (Close[i]-OrderOpenPrice())/Point;

}
 
Последнее редактирование:

Алекc1234

Местный житель
Ещё один вопрос, если можно. Как написать - определённая свеча(скажем четвёртая) от открытия ордера? То есть ордер открылся и мы находим четвёртую свечу от этого открытия...
 

eevviill

Заблокирован
Ещё один вопрос, если можно. Как написать - определённая свеча(скажем четвёртая) от открытия ордера? То есть ордер открылся и мы находим четвёртую свечу от этого открытия...
Думаю надо использовать OrderOpenTime().
 

eevviill

Заблокирован
Можна так ещё узнавать время открытия.

PHP:
TimeHour(OrderOpenTime())
TimeMinute(OrderOpenTime())
 

Ugar

Гуру форума
Я полный новичок в программировании. Ещё многого не знаю. И мне кажется, что это мы определили свечу, на которой открылся ордер. А как определить четвёртую свечу после открытия?
Вычти 4
Код:
[COLOR=#000000][COLOR=#0000BB]iBarShift[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]NULL[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]OrderOpenTime[/COLOR][COLOR=#007700]())-4;[/COLOR][/COLOR]
 

Алекc1234

Местный житель
Здравствуйте. Подскажите, если открыто несколько рыночных ордеров, то как в коде написать цену первого открытого ордера? То есть OderOpenPrice() первого по времени открытого ордера.
 

eevviill

Заблокирован
Здравствуйте. Подскажите, если открыто несколько рыночных ордеров, то как в коде написать цену первого открытого ордера? То есть OderOpenPrice() первого по времени открытого ордера.
PHP:
 OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
   double fir_or_pr=OrderOpenPrice();
 

Алекc1234

Местный житель
PHP:
 OrderSelect(OrdersTotal()-1,SELECT_BY_POS);
   double fir_or_pr=OrderOpenPrice();

eevviill - Вам огромное спасибо - всегда мне помогаете, жаль, что я ещё ничего не смог заработать, иначе отблагодарил бы Вас и материально. Вообщем, большой Вам респект! Я и на других форумах участвую, но только здесь Вы всегда отвечаете и выручаете!!!
 

greatiger

Активный участник
Научите приделывать ММ к советникам как-нибудь попроще...есть может какие стандартные функции,которые можно в код подставлять?

И макс.лот бы еще
 

Алекc1234

Местный житель
Научите приделывать ММ к советникам как-нибудь попроще...есть может какие стандартные функции,которые можно в код подставлять?

И макс.лот бы еще

Я вставляю ММ в сову так:
extern bool Use_MM = true;
extern double K = 0.02;
Lot = 0.1;
if (Use_MM)
{
Lots = K*AccountBalance()/100;
double lotstep = MarketInfo(Symbol(),MODE_LOTSTEP);
Lots = MathRound(Lots/lotstep)*lotstep;
}
else Lots=Lot;
Предпоследние две строчки - это округление лота в большую сторону
 
Последнее редактирование:

eevviill

Заблокирован
Научите приделывать ММ к советникам как-нибудь попроще...есть может какие стандартные функции,которые можно в код подставлять?
...
В глобальные переменные
PHP:
extern double Lot = 0.1;
extern bool use_percent_of_deposit = false;
extern double Risk = 1;

В Старт
PHP:
 //расчёт лота от % депозита
 if(use_percent_of_deposit) Lot=GetLot();

Функция
PHP:
///////////////////////////////////////////////////////////////////////////////////////
double GetLot()
{
 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);
}
 
Последнее редактирование:

greatiger

Активный участник
Есть первый самостоятельный ММ :) хоть и не без небольшой самодеятельности и труда рыбка потащилась )
 
Верх