Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Попробуйте так, наверняка прокатит:
extern int StopLoss = 1000; // Размер стопа в пунктах
extern int TakeProfit = 8; // Размер тейка в пунктах
extern double Lots = 0.1; // Размер лота
extern int pips = 10; // шаг
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (OrdersTotal()<=0)
{ OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-StopLoss*Point,Ask+TakeProfit*Point,"TST",0,0,Green);
}
int i=OrdersTotal();
OrderSelect(i-1,SELECT_BY_POS);
double price=OrderOpenPrice();
//----
if(Bid>=price+pips*Point)
{ OrderSend(Symbol(),OP_SELL,Lots,Bid,0,Ask+StopLoss*Point,Bid-TakeProfit*Point,"TST",0,0,Red);
}
if(Ask<=price-pips*Point)
{ OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-StopLoss*Point,Ask+TakeProfit*Point,"TST",0,0,Green);
}
}
-а я вот так когда-то сделал
Попробуйте так, наверняка прокатит:
Спасибо!!! Стал вроде ставить, иногда несколько раз на одну цену, это поправлю,OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,NormalizeDouble(Ask+TakeProfit*Point,Digits),"MA sample",Magic,0,Blue);
обясните что делает "NormalizeDouble(Ask+TakeProfit*Point,Digits)" так и не понял???
extern int StopLoss = 1000; // Размер стопа в пунктах
extern int TakeProfit = 8; // Размер тейка в пунктах
extern double Lots = 0.1; // Размер лота
extern int pips = 10; // шаг
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (OrdersTotal()<=0)
{ OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-StopLoss*Point,Ask+TakeProfit*Point,"TST",0,0,Green);
}
int i=OrdersTotal();
OrderSelect(i-1,SELECT_BY_POS);
double price=OrderOpenPrice();
//----
if(Bid>=price+pips*Point)
{ OrderSend(Symbol(),OP_SELL,Lots,Bid,0,Ask+StopLoss*Point,Bid-TakeProfit*Point,"TST",0,0,Red);
}
if(Ask<=price-pips*Point)
{ OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Bid-StopLoss*Point,Ask+TakeProfit*Point,"TST",0,0,Green);
}
}
-а я вот так когда-то сделал
Спасибо за оригинальное решение, в нашем случае он периодически сдвигается на пункт и в итоги цена меняется, в нашем случае нужно достичь строго по 10пп.Еще раз спасибо интересное решение!!!!
обясните что делает "NormalizeDouble(Ask+TakeProfit*Point,Digits)" так и не понял???Вместо TP=1.23450001 делает TP=1.2345.
Цену 1.23450001 сервер не принимает, а цену 1.2345 - принимает. А при печати эти две цены одинаково выглядят.
Вместо TP=1.23450001 делает TP=1.2345.
Цену 1.23450001 сервер не принимает, а цену 1.2345 - принимает. А при печати эти две цены одинаково выглядят.
Спасибо!!! Теперь я понял, я не знал что цена приходит такая 1.23450001, теперь понятно!!!Попробуйте так, наверняка прокатит:
Респект!Реально простое решение!
А Вы говорите в голову только кушаете :))