//+------------------------------------------------------------------+ //| ccc.mq4 | //| Copyright © 2011, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "VAGEYEV" #include <stdlib.mqh> //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int UseSlippage; extern int Slippage = 3; int init() { //---- UseSlippage = GetSlippage(Symbol(),Slippage); //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- double LotSize = 0.1; int SellTicket; // Calculate open price, stop loss and take profit double OpenPrice = NormalizeDouble(Bid,Digits); double TakeProfit = NormalizeDouble(Bid-300*Point,Digits); double StopLoss = NormalizeDouble(Bid+30*Point,Digits); Print(OpenPrice," ",TakeProfit," ",StopLoss, " ",Digits); // Open Sell Order if (SellTicket==0) { SellTicket = OrderSend(Symbol(),OP_SELL,3*LotSize,OpenPrice,UseSlippage,StopLoss,TakeProfit,"Sell Order",0,0,Green); if (SellTicket==-1) { int ErrorCode = GetLastError(); string ErrDesc = ErrorDescription(ErrorCode); Print(ErrorCode," ",ErrDesc); string ErrAlert = StringConcatenate(ErrorCode,": ",ErrDesc); Alert(ErrAlert); } } //---- return(0); } // Get Slippage Function int GetSlippage(string Currency, int SlippagePips) { int CalcDigits = MarketInfo(Currency,MODE_DIGITS); if(CalcDigits == 2 || CalcDigits == 4) double CalcSlippage = SlippagePips; else if(CalcDigits == 3 || CalcDigits == 5) CalcSlippage = SlippagePips * 10; return(CalcSlippage); } //+------------------------------------------------------------------+Пользуйтесь кнопкой SRC для вставки кода.
Потому, что снова та же самая ошибка - отсутствие проверки на соответствие стоп-приказа минимально-допустимому расстоянию. Там, где на четырёхзнаке 30 пунктов норма, там на пятизнаке может оказаться весьма мало.
я пробовал устанавливать фикс стоп-лосс на большом расстоянии - всё равно выдаёт на пятизнаке ошибку 130.
А это привет разработчикам передавайте... раз в год я их долбил, теперь ваш черед...
Залипание Digits при переходе с 4 на 5 и обратно, может приводить, как это принято говорить, "к непредсказуемым результатам" ;)
Самое обидное что действительно (как в Кавказской пленнице) "сюшай, ничего не сделал, только зашел", а оно вонакак :)))
А это привет разработчикам передавайте... раз в год я их долбил, теперь ваш черед...
Залипание Digits при переходе с 4 на 5 и обратно, может приводить, как это принято говорить, "к непредсказуемым результатам" ;)
Самое обидное что действительно (как в Кавказской пленнице) "сюшай, ничего не сделал, только зашел", а оно вонакак :)))
А Вы не выставляйте при открытии ордера SL и TP, а после - путём модификации ордера. И будет Вам счастье.
А это привет разработчикам передавайте... раз в год я их долбил, теперь ваш черед...
Залипание Digits при переходе с 4 на 5 и обратно, может приводить, как это принято говорить, "к непредсказуемым результатам" ;)
Самое обидное что действительно (как в Кавказской пленнице) "сюшай, ничего не сделал, только зашел", а оно вонакак :)))
Слюшай, ничего не залипает, если правылна заходыть.
//+------- //+------------------------------------------------------------------+ //| check_min_dist() проверка дистанции стопов //| требует: //| - проверяемый параметр - StopLoss или TakeProfit или DistTral //| - текстовая строка, сообщающая, какой параметр проверен //+------------------------------------------------------------------+ int check_min_dist(int _Param, string _Txt) { string _Function = "check_min_dist(): "; int _Min_Dist = MathAbs(MarketInfo(Symbol(),MODE_STOPLEVEL)); if(_Param != 0) { if(_Param < _Min_Dist) { _Param = _Min_Dist; Alert(_Txt+" исправлен на "+_Min_Dist); } else Alert(_Txt+" - OK"); } return(_Param); } //+------------------------------------------------------------------+ //+-------
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пожалуйста, подскажите почему на пятизнаке в нижеприведенном коде срабатывает ошибка 130, а на четырёхзнаке такой ошибки не возникает и всё работает.
Заранее благодарен за помощь.
//+------------------------------------------------------------------+
//| ccc.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "VAGEYEV"
#include <stdlib.mqh>
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int UseSlippage;
extern int Slippage = 3;
int init()
{
//----
UseSlippage = GetSlippage(Symbol(),Slippage);
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double LotSize = 0.1;
int SellTicket;
// Calculate open price, stop loss and take profit
double OpenPrice = NormalizeDouble(Bid,Digits);
double TakeProfit = NormalizeDouble(Bid-300*Point,Digits);
double StopLoss = NormalizeDouble(Bid+30*Point,Digits);
Print(OpenPrice," ",TakeProfit," ",StopLoss, " ",Digits);
// Open Sell Order
if (SellTicket==0)
{
SellTicket = OrderSend(Symbol(),OP_SELL,3*LotSize,OpenPrice,UseSlippage,StopLoss,TakeProfit,"Sell Order",0,0,Green);
if (SellTicket==-1)
{
int ErrorCode = GetLastError();
string ErrDesc = ErrorDescription(ErrorCode);
Print(ErrorCode," ",ErrDesc);
string ErrAlert = StringConcatenate(ErrorCode,": ",ErrDesc);
Alert(ErrAlert);
}
}
//----
return(0);
}
// Get Slippage Function
int GetSlippage(string Currency, int SlippagePips)
{
int CalcDigits = MarketInfo(Currency,MODE_DIGITS);
if(CalcDigits == 2 || CalcDigits == 4) double CalcSlippage = SlippagePips;
else if(CalcDigits == 3 || CalcDigits == 5) CalcSlippage = SlippagePips * 10;
return(CalcSlippage);
}
//+------------------------------------------------------------------+