[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 287

 
Sorento:
2011.03.30 08:40:21 bags USDCAD,M1: 3 4 4.00000000 ask=0.9729 bid=0.9725


int Ret[3];

Ret[0]=NormalizeDouble((Ask-Bid)/Point,0); 
Print (Ret[0]," ",(Ask-Bid)/Point," ask=",Ask," bid=",Bid); 
вот так работает
 
abolk:

вот так работает
Спасибо!
 
Sorento:
Спасибо!


Вообще разработчикам MT пора в документации создать раздел и детально освятить проблему и необходимость использовать нормализацию.

По данной ситуации в документации лишь скромный пример без акцента:

int    i = 1 / 2.0;   // выражение приводится к типу double, затем приводится к целевому типу int, результат: 0

Раздел "Приведение типов" https://docs.mql4.com/ru/basis/types/casting

 
Roger:

To FoxUA

Когда Ордер 3 (Сел) закрывается, тот Ордер 1 (Бай) все еще семафорит, что он был закрыт на стоплоссе и так 2 ордера подряд и выставляется, потому как Тотал=1.


ну а поскажи решение этого вопроса, тобиш чем заменить тотал 1 чтоб избавится от такого эфекта
 
Подскажите пожалуйста, может ли скрипт открыть ордера не только в окне того графика к которому присоединен, но и по другим валютным парам, если в нем соответственно прописать по каким еще валютным парам тебе необходимо открыться??
 
CreAndr:
Подскажите пожалуйста, может ли скрипт открыть ордера не только в окне того графика к которому присоединен, но и по другим валютным парам, если в нем соответственно прописать по каким еще валютным парам тебе необходимо открыться??

может
 
abolk:

может
#property show_inputs
//--------------------------------------------------------------------
extern double TakeProfit = 1000;
extern double Lots = 0.01;
extern double StopLoss = 500.0;
extern int MagNum = 1974;
int slip = 100;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()

{
//::::Открытие и выставление ордеров


OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("GBPUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("USDJPY",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);
OrderSend("USDCHF",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);

return (0);

}


а вот такой вариант, будет работать или нет?
Файлы:
 
CreAndr:

OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);


а вот такой вариант, будет работать или нет?


Нет, то что выделил - вернется с текущего инструмента. Биды, аски, дигитсы и прочее надо запрашивать с помощь MarketInfo явно указав инструмент
 
CreAndr:
#property show_inputs
//--------------------------------------------------------------------
extern double TakeProfit = 1000;
extern double Lots = 0.01;
extern double StopLoss = 500.0;
extern int MagNum = 1974;
int slip = 100;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()

{
//::::Открытие и выставление ордеров


OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("GBPUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("USDJPY",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);
OrderSend("USDCHF",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);

return (0);

}

а вот такой вариант, будет работать или нет?


не будет. надо использовать функцию MarketInfo https://docs.mql4.com/ru/common/MarketInfo.

там на страничке есть примеры по вашей задаче

 
Спасибо за помощь.
Причина обращения: