Вопросы от начинающих MQL4 MT4 MetaTrader 4 - страница 49

 
Alexander Antoshkin:

За пирожок и чашку кофе  нужно  подправить  предупреждение  (  от новых  билдов мт4)

 

 )

Ну, пирожок-то можно по почте отправить... А кофе где получить?

Файлы:
 
Alexey Viktorov:

Ну, пирожок-то можно по почте отправить... А кофе где получить?

 

 Спасиб)))

правленый код верну в ветку  статей.................................................

 
Пытаюсь установить MetaTrader4 из оригинального установочного файла mt4setup.exe , а мне внаглую устанавливается MT5. Система Windows7 x64. Это разработчик так пытается заставить полюбить новую платформу? Как мне поставить то что хочу Я (MT4), а не то что мне навязывают?
 
Andrej Akimov:
Пытаюсь установить MetaTrader4 из оригинального установочного файла mt4setup.exe , а мне внаглую устанавливается MT5. Система Windows7 x64. Это разработчик так пытается заставить полюбить новую платформу? Как мне поставить то что хочу Я (MT4), а не то что мне навязывают?
На форуме уже куча тем с решением этой проблемы. Почему бы поиском не воспользоваться?
 
Покажите на примере как записать строку в файл и прочитать его.Файл должен храниться в Корне диска С.Этот должен быть експерт.
 

Стоплосс и тейк профит пытаюсь реализовать таким путем:

spread = Ask-Bid;

double StopLoss_B = NormalizeDouble(Low[1]- spread,Digits);//NormalizeDouble(Low[1]- spread,Digits)

double TakeProfit_B = NormalizeDouble(Ask+((Ask-StopLoss_B)* RiskRewart),Digits) ;

double StopLoss_S = NormalizeDouble(High[1]+ spread,Digits);//NormalizeDouble(High[1]+ spread,Digits)

double TakeProfit_S = NormalizeDouble(Bid-((StopLoss_S-Bid)* RiskRewart),Digits) ;

....

OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss_B,TakeProfit_B,"PBar",Magik,0,Blue);

....

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss_S,TakeProfit_S,"PBar",Magik,0,Red); 

 

Тестер выдает ошибку 130 - что-то не так с ТП и СЛ. Не могу понять что именно, тем более что иногда исполняет нормально, а иногда ошибка

В общем, прошу помощи. 

 
RichLux:

Стоплосс и тейк профит пытаюсь реализовать таким путем:

spread = Ask-Bid;

double StopLoss_B = NormalizeDouble(Low[1]- spread,Digits);//NormalizeDouble(Low[1]- spread,Digits)

double TakeProfit_B = NormalizeDouble(Ask+((Ask-StopLoss_B)* RiskRewart),Digits) ;

double StopLoss_S = NormalizeDouble(High[1]+ spread,Digits);//NormalizeDouble(High[1]+ spread,Digits)

double TakeProfit_S = NormalizeDouble(Bid-((StopLoss_S-Bid)* RiskRewart),Digits) ;

....

OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss_B,TakeProfit_B,"PBar",Magik,0,Blue);

....

OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss_S,TakeProfit_S,"PBar",Magik,0,Red); 

 

Тестер выдает ошибку 130 - что-то не так с ТП и СЛ. Не могу понять что именно, тем более что иногда исполняет нормально, а иногда ошибка

В общем, прошу помощи. 

Возможно иногда ставите слишком близко к текущей цене, посмотрите что вам вернет функция 

 

double stop_level=(double)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);

 

 ...

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих MQL4 MT4 MetaTrader 4

Sergey Gritsay, 2017.01.07 18:48

Возможно иногда ставите слишком близко к текущей цене, посмотрите что вам вернет функция 

 

double stop_level=(double)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_STOPS_LEVEL);

 

 ...


Спасибо за участие. Как пользоваться предложенной функцией не сообразил. Но вы подтолкнули меня к более подробному изучению тех ошибок на графике и понял, что причина в том, что когда сработал СтопЛосс, но свеча еще не закрылась советник пытается выставить новый ордер, вот тут и возникает ошибка. Надо думать как объяснить советнику, что на одной свече нужен только один ордер 

 
RichLux:

Спасибо за участие. Как пользоваться предложенной функцией не сообразил. Но вы подтолкнули меня к более подробному изучению тех ошибок на графике и понял, что причина в том, что когда сработал СтопЛосс, но свеча еще не закрылась советник пытается выставить новый ордер, вот тут и возникает ошибка. Надо думать как объяснить советнику, что на одной свече нужен только один ордер 

Смотреть среди закрытых ордеров, если у советника на данном символе есть уже ордер,  смотреть разницу (время закрытия ордера)-(время открытия свечи), если разница меньше PeriodSeconds() - новый ордер не открывать.
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Вопросы от начинающих MQL4 MT4 MetaTrader 4

Vitalie Postolache, 2017.01.07 21:23

Смотреть среди закрытых ордеров, если у советника на данном символе есть уже ордер,  смотреть разницу (время закрытия ордера)-(время открытия свечи), если разница меньше PeriodSeconds() - новый ордер не открывать.

Поступил немного иначе.

функция нового бара:

bool NewBar()

 {

   static datetime lastbar = 0;

   datetime curbar = Time[0];

   if(lastbar != curbar)

     {

     lastbar = curbar;

     return (true);

     }

   else return(false);

и условия открытия прописал только если новый бар 

Причина обращения: