[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 424

 
sergeev >>:

приведите здесь вашу функцию открытия ордеров.

int NewOrder(int Cmd,double Lot)

{double TP=0, TP2=0;

double SL=0, SL2=0;

double PR=0;

datetime endtime;


while(!IsTradeAllowed()) Sleep(100);

endtime = TimeCurrent()+4*60*60;


if(Cmd == OP_BUYSTOP)

{

PR=TOP+10*Point;

PR=NormalizeDouble(PR,2);

if(TakeProfit>0)

{

TP=PR+25*Point;

}

if(StopLoss>0)

{

SL=PR-30*Point;

SL=NormalizeDouble(SL,2);

}

}

if(Cmd==OP_SELLSTOP)

{

PR=BOT-7*Point;

PR=NormalizeDouble(PR,2);

if(TakeProfit>0)

{

TP=PR-25*Point;

}

if(StopLoss>0)

{

SL=PR+30*Point;

SL=NormalizeDouble(SL,2);

}

}

if ((TOP-BOT)<115*Point)

int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"",0,endtime,CLR_NONE);

else

Print("Большая разница между ТОР і ВОТ: ",(TOP-BOT));

if(tic<0) Print("Ошибка открытия ордера: ",GetLastError());


return(tic);

 
sanyooooook >>:

а ордер как закрывается? по стоп лосту или функцией OrderClose()

по стоп лосу или тэйк профиту.

 

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

 
sergeev >>:
В принципе можно искать ордера в истории и отсортировать их, затем узнать два последних закрытия. Но это вам надо пройтись по всем ордерам истории два раза.

используйте OrderHistoryTotal(), MODE_HISTORY, OrderCloseTime()>0, OrderProfit()

Другим вариантом - чтоб не сканировать два раза историю - это запоминание тикетов открывшихся ордеров и потом определения их профита.

А как именно запоминать тикеты? И как понимать: чтоб обратиться к тикету - нужно выбрать ордер, а чтоб его выбрать - нужно знать тикет...

 
just-me >>:

А как именно запоминать тикеты? И как понимать: чтоб обратиться к тикету - нужно выбрать ордер, а чтоб его выбрать - нужно знать тикет...

что б выбрать ордер не обязательно знать тикет

 

Что-то я запутался с функцией маркетинфо и не могу рассчитать корректное значение стоимости спреда по инструменту в валюте депозита с заданным размером лота. Не подскажете корректную формулу? Причем надо и по споту, и по CFD...

 

У меня такой вопрос к спецам - есть ли возможность сделать константой, первое полученное значение цены при запуске советника?

Т.е если я запустил советник и в это время цена Ask=1.4444 Я хочу эту цену сохранить как константу, чтобы всё время работы советника можно было к ней орбащаться. Только вот вопрос, как это сделать??? Ведь Ask постоянно меняеться, а функции копирования я нигде не нашёл.

 

сделать глобальную переменную или просто переменную

и вставить это не в функцию старт, а в функцию инит

int init()
  {
//----
   GlobalVariableSet("Price_Start",Ask);
//----
   return(0);
  }
 
Kesha_k85 >>:

У меня такой вопрос к спецам - есть ли возможность сделать константой, первое полученное значение цены при запуске советника?

Т.е если я запустил советник и в это время цена Ask=1.4444 Я хочу эту цену сохранить как константу, чтобы всё время работы советника можно было к ней орбащаться. Только вот вопрос, как это сделать??? Ведь Ask постоянно меняеться, а функции копирования я нигде не нашёл.


Вариации на тему.


double Price_Start;

int init()
 {
   Price_Start=Ask;
   return(0);
 }


double Price_Start=0;

int start()
 {
   if (Price_Start<0.001) Price_Start=Ask;
   //....
 }
 
just-me писал(а) >>

А как именно запоминать тикеты? И как понимать: чтоб обратиться к тикету - нужно выбрать ордер, а чтоб его выбрать - нужно знать тикет...

https://docs.mql4.com/ru/trading/OrderSelect - посмотрите SELECT_BY_POS